1. 程式人生 > >ansible 自動化編譯安裝nginx服務、管理配置文件

ansible 自動化編譯安裝nginx服務、管理配置文件

lease root 嚴格 f2c 重啟 handlers nginx fig items

圖解:

技術分享圖片

說明:

系統版本:
CentOS Linux release 7.4.1708 (Core)

需要先在一臺機上先裝好nginx,再配置ansible服務

1、將替換的文件放入到templates中,ansible可以找到
2、自動化安裝時得確定系統版本一致
3、gather_facts: True 獲取主機的信息,可以關閉
4、roles目錄下有兩個角色,common為一些準備操作,install為安裝nginx的操作。每個角色下面又有幾個目錄,handlers下面是當發生改變時要執行的操作,通常用在配置文件發生改變,重啟服務。files為安裝時用到的一些文件,meta為說明信息,說明角色依賴等信息,tasks裏面是核心的配置文件,templates通常存一些配置文件,啟動腳本等模板文件,vars下為定義的變量

5、覺得可以用編譯好了的nginx包來做,比如在一臺機上安裝編譯好nginx目錄,然後打成tar包後,傳入到目標主機中,目標主機只需要安裝插件即可
6、主函數必須要是main.yml,不然找不到這個就不執行這個

管理配置文件

生產環境中大多時候是需要管理配置文件的,安裝軟件包只是在初始化環境的時候用一下。下面我們來寫個管理nginx配置文件的playbook

1、[root@test-01 install]# mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
其中new為更新時用到的,old為回滾時用到的,files下面為nginx.conf和vhosts目錄,handlers為重啟nginx服務的命令

關於回滾,需要在執行playbook之前先備份一下舊的配置,所以對於舊配置文件的管理一定要嚴格,千萬不能隨便去修改線上機器的配置,並且要保證new/files下面的配置和線上的配置一致

2、先把nginx.conf和vhosts目錄放到files目錄下面

3、cp nginx.conf vhost -R /etc/ansible/nginx_config/roles/new/files/

4、 vim /etc/ansible/nginx_config/roles/new/vars/main.yml //定義變量
nginx_basedir: /usr/local/nginx

技術分享圖片

vim /etc/ansible/nginx_config/roles/new/handlers/main.yml //定義重新加載nginx服務

  • name: restart nginx
    shell: /etc/init.d/nginx reload

    技術分享圖片

    vim /etc/ansible/nginx_config/roles/new/tasks/main.yml //這是核心的任務

  • name: copy conf file
    copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644 #循環
    with_items:

    • { src: nginx.conf, dest: conf/nginx.conf }
    • { src: vhosts, dest: conf/ }
      notify: restart nginx #上面的配置文件改變後,可通過“notify”通知給相應的handlers reload nginx服務;

    技術分享圖片

5、 vim /etc/ansible/nginx_config/update.yml // 最後是定義總入口配置

  • hosts: testhost
    user: root
    roles:

    • new

    技術分享圖片

    執行: ansible-playbook /etc/ansible/nginx_config/update.yml

    6、而回滾的backup.yml對應的roles為old
    rsync -av /etc/ansible/nginx_config/roles/new/ /etc/ansible/nginx_config/roles/old/
    回滾操作就是把舊的配置覆蓋,然後重新加載nginx服務, 每次改動nginx配置文件之前先備份到old裏,對應目錄為/etc/ansible/nginx_config/roles/old/files
    vim /etc/ansible/nginx_config/rollback.yml // 最後是定義總入口配置

  • hosts: testhost
    user: root
    roles:
    • old
      技術分享圖片

ansible 自動化編譯安裝nginx服務、管理配置文件