ansible-role

 

roles內各目錄含義解釋

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

 

ansible role 安裝nginx

建立目錄shell

sudo mkdir nginx/{files,templates,vars,handlers,meta,default,tasks} -pvapp

查看目錄樹spa

 

 

配置tasks文件

一、下載依賴包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

 

配置handler

[dwchensenwen@vms20 handlers]$ cat main.yaml 
- name: restart nginx
  service: name=nginx state=restarted

 

配置file

file目錄下,軟件包和配置文件,能夠先下載和配置完畢,這樣就減去下載和手動配置的時間。

 

配置nginx_install.yaml

[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

執行結果:

本站公眾號
   歡迎關注本站公眾號,獲取更多信息