ansible 批量安裝nginx
流程思路:先在一臺主機(jī)上編譯安裝好nginx后->打包->ansible下發(fā)->啟動
- ansible環(huán)境不再敘述,準(zhǔn)備好正常環(huán)境即可掌逛。
- 創(chuàng)建對應(yīng)目錄
[root@k8s3 ~]$ cd /etc/ansible/
[root@k8s3 ansible]$ mkdir nginx_install
[root@k8s3 ansible]$ cd nginx_install/
[root@k8s3 nginx_install]$ mkdir -p roles/{common,install}/{handlers,files,meta,tasks,templates,vars}
[root@k8s3 nginx_install]$ tree ./
./
└── roles # 定義角色目錄篙贸,common為一些準(zhǔn)備操作禽篱,install為安裝nginx的操作
├── common
│ ├── files # 存放安裝包的目錄
│ ├── handlers # 存放當(dāng)發(fā)生變更是要執(zhí)行的操作八千,如修改配置文件、重啟服務(wù)等
│ ├── meta # 存放說明信息袖裕,如說明角色依賴等信息
│ ├── tasks # 存放核心的任務(wù)配置文件
│ ├── templates # 存放配置文件曹抬、啟動文件等模板文件
│ └── vars # 用來定義變量的目錄
└── install
├── files
├── handlers
├── meta
├── tasks
├── templates
└── vars
- 編譯安裝nginx:
[root@k8s3 ~]$ cd /usr/local/src/
[root@k8s3 ~]$ yum install -y pcre-devel zlib-devel gcc gcc-c++
[root@k8s3 src]$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
[root@k8s3 src]$ tar xf nginx-1.8.0.tar.gz
[root@k8s3 src]$ cd nginx-1.8.0.tar.gz/
[root@k8s3 nginx-1.8.0]$ ./configure --prefix=/usr/local/nginx
[root@k8s3 nginx-1.8.0]$ make && make install
[root@k8s3 nginx-1.8.0]$ vim /etc/init.d/nginx # https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx
[root@k8s3 nginx-1.8.0]$ chmod 755 /etc/init.d/nginx
[root@k8s3 nginx-1.8.0]$ chkconfig --add nginx
[root@k8s3 nginx-1.8.0]$ chkconfig nginx on
[root@k8s3 nginx-1.8.0]$ cd /usr/local/nginx/conf/
[root@k8s3 conf]$ mv nginx.conf nginx.conf.bak
[root@k8s3 conf]$ vim nginx.conf # https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf
[root@k8s3 conf]$ /usr/local/nginx/sbin/nginx -t
[root@k8s3 conf]$ /etc/init.d/nginx start
[root@k8s3 conf]$ netstat -tunlp | grep 80
- 打包
[root@k8s3 ~]$ cd /etc/ansible/nginx_install/roles/install/files/
[root@k8s3 files]$ tar czfP nginx.tar.gz --exclude "nginx.conf" --exclude "vhost" /usr/local/nginx
# 這里一定要注意 打包出現(xiàn)的絕對路徑和相對路徑問題 參數(shù)P(大寫)解壓時(shí)也必定此參數(shù) 在壓縮或解壓文件時(shí),當(dāng)后面的備份目錄使用絕對路徑時(shí)陆赋,會提示“ tar: 從成員名中刪除開頭的“/” ”的錯誤
# exclude不包括的文件或目錄
- 拷貝配置文件和啟動文件到模板目錄:
[root@k8s3 ~]$ cp /usr/local/nginx/conf/nginx.conf /etc/ansible/nginx_install/roles/install/templates/
[root@k8s3 ~]$ cp /etc/init.d/nginx /etc/ansible/nginx_install/roles/install/templates/
- 安裝一些依賴包:
[root@k8s3 ~]$ cd /etc/ansible/nginx_install/roles/
[root@k8s3 roles]$ cat common/tasks/main.yml
- name: Install initializtion require software
yum: name={{ item }} state=installed
with_items:
- zlib-devel
- pcre-devel
- 定義對應(yīng)的變量
[root@k8s3 roles]$ cat install/vars/main.yml
nginx_user: www
nginx_port: 80
nginx_basedir: /usr/local/nginx
- 把a(bǔ)nsible文件拷貝至目標(biāo)主機(jī):
[root@k8s3 roles]$ cat install/tasks/copy.yml
- name: Copy Nginx Software
copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root
- name: Uncompression Nginx Software
shell: tar zxfP /tmp/nginx.tar.gz -C /usr/local/
- name: Copy Nginx Start Script
template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755
- name: Copy Nginx Config
template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644
- 創(chuàng)建用戶 沐祷,啟動服務(wù) ,刪除壓縮包:
[root@k8s3 roles]$ cat install/tasks/install.yml
- name: Create Nginx User
user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
- name: Start Nginx Service
shell: /etc/init.d/nginx start
- name: Add Boot Start Nginx Service
shell: chkconfig --level 345 nginx on
- name: Delete Nginx compression files
shell: rm -rf /tmp/nginx.tar.gz
- 創(chuàng)建 main.yml 攒岛,去調(diào)用 copy.yml 和 install.yml:
[root@k8s3 roles]$ cat install/tasks/main.yml
- include: copy.yml
- include: install.yml
- 最后赖临,創(chuàng)建總?cè)肟谖募?/li>
[root@k8s3 ~]$ cat /etc/ansible/nginx_install/install.yml
---
- hosts: 192.168.3.42
remote_user: root
gather_facts: True
roles:
- common
- install
- 執(zhí)行ansible playbook安裝nginx
[root@k8s3 ~]$ ansible-playbook /etc/ansible/nginx_install/install.yml