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