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文件,用于定义此角色的特殊设定及其依赖关系。

ansible role 安装nginx

创建目录

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

查看目录树

 

配置tasks文件

1、下载依赖包

[dwchensenwen@vms20 tasks]$ cat pkg.yaml 
- name: 安装依赖包
  yum: name={{ item }} state=latest
  with_items:
    - pcre-devel
    - openssl-devel

2、创建目录

[dwchensenwen@vms20 tasks]$ cat mkdir.yaml 
- name: 创建目录
  command: >
    mkdir -p /server/tools
    mkdir -p /application

3、创建一个管理nginx进程的虚拟用户

[dwchensenwen@vms20 tasks]$ cat user.yaml 
- name: 创建一个管理nginx进程的虚拟用户
  user: name=www shell=/sbin/nologin/ state=present

4、nginx安装包获取、解压、编译

[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

5、nginx配置文件

[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

6、启动nginx

[dwchensenwen@vms20 tasks]$ cat start.yaml 
- name: 启动NGINX程序服务
  shell: /application/nginx/sbin/nginx

7、设置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

执行结果:

原文地址:https://www.cnblogs.com/mustark/p/11112853.html