ansible playbook批量部署nginx

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’ 的模式來實現。

發佈了63 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章