ansible 自動化編譯安裝nginx服務、管理配置文件
說明:
系統版本:
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 reloadvim /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
- old
ansible 自動化編譯安裝nginx服務、管理配置文件