Playbooks组成部分:
Target section 定义将要执行playbooks的远程主机组
Variable section 定义playbook运行时需要使用的变量
Tast section 定义将要在远程主机上执行的任务列表
Handler section 定义task执行完成以后需要调用的任务
Target section常用参数
Hosts:定义远程主机组
User:执行该任务的用户
Sudo:设置为yes的时候,执行任务的时候使用root权限
Sudo_user:设置用户,执行时的权限为该用户
Connection:通过什么方式连接到远程主机,默认是ssh
Gather_facks:是否启用在远程主机执行setup模块,默认执行,setup模块 用于获取主机信息
Variabler section常用参数
Vars:定义格式 变量名:变量值
Vars_files:指定变量文件
Vars_prompt:用户交互模式自定义变量
Setup:模块去远程主机的值
Task section
Name:输出到屏幕的信息 定义一个名称
Action:定义执行的动作调用的ansible模块,例如 yum name=http state=installed
Copy:复制本地文件到远程主机
Template:复制本地文件到远程主机但是他可以在本地文件中调用变量
Service:定义服务的状态
playbook执行方式
ansible-playbook playbook文件位置
举例:
#表示该文件时YAML文件
#选择的主机组
- hosts: webservers
#这个是变量
vars:
http_port: 80
max_clients: 200
tasks:
#利用yum模块来操作
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=/src/httpd.j2 dest=/etc/httpd.conf
#触发重启服务器(只要上面的httpd.conf文件变化了,就触发handlers中的restart apache)
notify:
- restart apache
- name: ensure apache is running
service: name=httpd state=started
#这里的restart apache 和上面的触发是配对的。这就是handlers的作用。相当于tag
handlers:
- name: restart apache
service: name=httpd state=restarted
各模块的作用:
Vars:配置变量 变量名:变量值(变量名只能是字母、数字、下划线组 成,且只能以字母开头)
vars:
http: apache #给变量直接赋值
port: 80

Vars_files参数:指定变量文件
Vars_files:
- variables #变量文件位置


Vars_prompt参数:交互式给变量赋值
Vars_prompt:
- name: siteapp #变量名
Prompt: please enter your site #交互式(提示)
Private: no #是否隐藏输入的变量值

Copy模块:分发文件,分发过程中不进行赋值
Copy src=files/test.txt dest=files/test.txt

Template模块:分发文件,分发过程中进行变量的赋值
Template src=files/test.txt dest=/tmp/test.txt
