Cnbaby 发表于 2018-7-29 08:45:39

Ansible--playbook介绍

vim /etc/ansible/ansible.cfg  
roles_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]
查看完整版本: Ansible--playbook介绍