files:用來存放由copy模塊或script模塊調用的文件。
templates:用來存放jinjia2模板,template模塊會自動在此目錄中尋找jinjia2模板文件。
tasks:此目錄應當包含一個main.yml文件,用於定義此角色的任務列表,此文件能夠使用include包含其它的位於此目錄的task文件。
handlers:此目錄應當包含一個main.yml文件,用於定義此角色中觸發條件時執行的動做。
vars:此目錄應當包含一個main.yml文件,用於定義此角色用到的變量。
defaults:此目錄應當包含一個main.yml文件,用於爲當前角色設定默認變量。
meta:此目錄應當包含一個main.yml文件,用於定義此角色的特殊設定及其依賴關係。nginx
建立目錄shell
sudo mkdir nginx/{files,templates,vars,handlers,meta,default,tasks} -pvapp
查看目錄樹spa
一、下載依賴包3d
[dwchensenwen@vms20 tasks]$ cat pkg.yaml - name: 安裝依賴包 yum: name={{ item }} state=latest with_items: - pcre-devel - openssl-devel
二、建立目錄rest
[dwchensenwen@vms20 tasks]$ cat mkdir.yaml - name: 建立目錄 command: > mkdir -p /server/tools mkdir -p /application
三、建立一個管理nginx進程的虛擬用戶code
[dwchensenwen@vms20 tasks]$ cat user.yaml - name: 建立一個管理nginx進程的虛擬用戶 user: name=www shell=/sbin/nologin/ state=present
四、nginx安裝包獲取、解壓、編譯server
[dwchensenwen@vms20 tasks]$ cat nginx_common.yaml - name: 下載nginx軟件包 copy: src=/etc/ansible/roles/nginx/files/nginx-1.12.2.tar.gz dest=/server/tools/nginx-1.12.2.tar.gz - name: 解壓NGINX軟件包 command: > tar -C /server/tools -xvf /server/tools/nginx-1.12.2.tar.gz - name: 編譯安裝NGINX shell: cd /server/tools/nginx-1.12.2;./configure --prefix=/application/nginx-1.12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module;make && make install - name: nginx程序軟件建立連接目錄 file: src=/application/nginx-1.12.2 dest=/application/nginx state=link
五、nginx配置文件blog
[dwchensenwen@vms20 tasks]$ cat nginx_file.yaml - name: nginx配置文件 copy: src=/etc/ansible/roles/nginx/files/nginx.conf dest=/application/nginx/conf/nginx.conf notify: restart nginx
六、啓動nginx進程
[dwchensenwen@vms20 tasks]$ cat start.yaml - name: 啓動NGINX程序服務 shell: /application/nginx/sbin/nginx
七、設置tasks執行順序
[dwchensenwen@vms20 tasks]$ cat main.yaml - include: pkg.yaml - include: user.yaml - include: mkdir.yaml - include: nginx_common.yaml - include: nginx_file.yaml - include: start.yaml
[dwchensenwen@vms20 handlers]$ cat main.yaml - name: restart nginx service: name=nginx state=restarted
file目錄下,軟件包和配置文件,能夠先下載和配置完畢,這樣就減去下載和手動配置的時間。
[dwchensenwen@vms20 ansible]$ cat nginx_install.yaml - hosts: 192.168.30.22 become: yes become_method: sudo roles: - role: nginx
此文件與roles目錄同層級
ansible-playbook nginx_install.yaml