Ansible--playbook介绍
vim /etc/ansible/ansible.cfgroles_path = /etc/ansible/roles #roles的路径
/etc/ansible/roles/nginx/
#其中nginx就是一个角色,在nginx目录下应该具有特定的目录层级结构,如:handlerstaskstemplatesvars
cat /etc/ansible/roles/nginx/tasks/main.yml #tasks是nginx角色的一个任务模块,main.yml是固定格式不能改变
- name: install nginx pkg
yum: name=nginx state=latest
- name: start nginx service
service: name=nginx state=started enabled=true
#此任务模块完成两个动作,安装nginx和启动nginx
然后配置playbook文件
cat websrv.yml
- hosts: webservers
remote_user: root
roles: #不需要像以前那样配置tasks之类的,而是直接指定角色
- nginx
#对webservers的主机以root身份调用nginx角色,而nginx橘色定义了两个task任务
ansible-playbook-C websrv.yml
#测试
总结:创建角色nginx,配置playbook文件,而此文件只需调用角色即可,具体操作已经在角色的模块中定义好了
示例:
基于模板生成nginx配置文件
第一步定义nginx内的变量 #定义变量,将被templates模板调用
cat /etc/ansible/roles/nginx/vars/main.yml
nginx_server_port: 8888
nginx_server_name: www.abc.com
nginx_doc_root: /webdata
第二步配置nginx下的模板文件 #定义模板文件,调用vars变量,此模板将用于生成nginx服务的配置文件
cat /etc/ansible/roles/nginx/templates/web-conf.j2
server {
listen {{ nginx_server_port }};
server_name {{ nginx_server_name }};
location/ {
root {{ nginx_doc_root }};
}
}
第三步定义nginx下的任务文件 #定义多项任务,安装nginx、配置文件、创建文件、开启服务
cat /etc/ansible/roles/nginx/tasks/main.yml
- name: install nginx pkg
yum: name=nginx state=latest
- name: install conf file
template: src=web-conf.j2 dest=/etc/nginx/conf.d/web.conf
- name: create datadir
file: path={{ nginx_doc_root }} state=directory #此目录即nginx模板文件中将使用的
- name: start nginx service
service: name=nginx state=started enabled=true
第四步配置playbook文件 #定义webservers组中主机以root身份调用nginx角色,而nginx角色能做什么上述三个步骤已定义
cat /root/websrv.yml
- hosts: webservers
remote_user: root
roles:
- nginx
第五步测试i
ansible-playbook websrv.yml
#执行完上述操作,在远程webservers主机的/etc/nginx/conf.d/web.conf文件中就会有nginx模板下web-conf.j2文件的内容
#
页:
[1]