ansible playbook批量部署nginx軟件
規劃
軟件安裝包:nginx-1.16.1.tar.gz
源文件安裝存放目錄:/install/nginx-1.16.1.tar.gz
nginx安裝目錄:/usr/local/nginx
nginx解壓縮目錄:/usr/local/src
解壓之後的源文件目錄爲/usr/local/src/nginx-1.16.1
部署環境:
操作中系統 | ip | 主機名 | 軟件安裝目錄 |
---|---|---|---|
Linux7.5 | 192.168.174.129 | srvb | /usr/local/nginx |
Linux7.5 | 192.168.174.130 | srvc | /usr/local/nginx |
Linux7.5 | 192.168.174.131 | srvd | /usr/local/nginx |
程序部署思路說明:
1、通過將存放在ansible管理端的/install/nginx-1.16.1.tar.gz,複製並解壓到受管端/usr/local/src/nginx-1.16.1目錄
2、進入受管端/usr/local/src/nginx-1.16.1,進行nginx源碼安裝
3、安裝完成之後,進行添加到系統命令行,也就是可執行文件link到/usr/sbin中
4、啓動nginx
nginx.yaml配置文件
---
- hosts: srv
vars:
- srcdir: nginx-1.16.1
- insdir: /usr/local/nginx
remote_user: root
tasks:
- name: cp and untar
unarchive: src=/install/nginx-1.16.1.tar.gz dest=/usr/local/src
- name: compile and install nginx
shell : cd /usr/local/src/{{ srcdir }}; ./configure --prefix={{ insdir }} --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module && make && make install
- name: link the command
file : src={{ insdir }}/sbin/nginx dest=/usr/sbin/nginx state=link
- name: start nginx
shell : nginx
執行安裝:
ansible-playbook nginx.yaml
**部署記錄:**
[root@srva yaml]# ansible-playbook nginx.yaml
[WARNING]: Found both group and host with same name: srva
PLAY [srv] ************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************
ok: [srvc]
ok: [srvd]
ok: [srvb]
TASK [cp and untar] ***************************************************************************************************
changed: [srvb]
changed: [srvc]
changed: [srvd]
TASK [compile and install nginx] **************************************************************************************
changed: [srvd]
changed: [srvb]
changed: [srvc]
TASK [link the command] ***********************************************************************************************
changed: [srvc]
changed: [srvb]
changed: [srvd]
TASK [start nginx] ****************************************************************************************************
changed: [srvc]
changed: [srvb]
changed: [srvd]
PLAY RECAP ************************************************************************************************************
srvb : ok=5 changed=4 unreachable=0 failed=0
srvc : ok=5 changed=4 unreachable=0 failed=0
srvd : ok=5 changed=4 unreachable=0 failed=0
[root@srva yaml]#
補充說明
批量創建安裝目錄:
ansible srv -m shell -a ‘mkdir -p /usr/local/nginx’ 注:也可以使用file模塊來處理
批量關閉nginx:
ansible srv -m shell -a ‘nginx -s stop’
查看nginx進程:
ansible srv -m shell -a 'ps -ef|grep nginx|grep -v grep ’
錯誤記錄:
在配置yaml文件時,我們使用shell模塊,又使用chdir來改變目錄。這個是不正確的。
chdir是在command模塊帶的切換目錄參數。而shell模塊沒有這個。
shell和raw模塊要切換目錄,可以使用 -a ‘cd /usr/local/nginx/sbin; ./nginx -s start’ 的模式來實現。