目录
playbook剧本
playbooks 本身由以下各部分组成
(1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行
(2)Variables:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色
编写剧本:
给管理主机配置文件还原,并重新进行配置管理:

创建目录:
先给dbservers防火墙开启:


编写测试yaml文件:

---
- name: first play for install nginx #设置play的名称
gather_facts: false #设置不收集facts信息
hosts: webservers:dbservers #指定执行此play的远程主机组
remote_user: root #指定执行此play的用户
tasks: #指定此play的任务列表
- name: disabled firewalld
service: name=firewalld state=stopped enabled=no
- name: disabled selinux forever
replace: path=/etc/selinux/config regexp=enforcing replace=disabled after=loaded

执行文件:
ansible-playbook demo1.yaml



安装nginx的剧本:

- name: #设置play的名称
hosts: #指定执行此play的远程主机组
remote_user: #指定执行此play的用户
gather_facts: #设置是否收集facts信息 yes|no|true|false
task: #指定此play的任务列表
- name: #定义任务的名称
模块名: 模块参数 #定义任务要使用的模块和参数(键值对格式)
- name:
模块名: 模块参数
ignore_errors: true #忽略此任务的失败
- name:
模块名: 模块参数
notify: '任务名' #定义此任务执行结果为changed状态时要触发的handler任务
handlers:
- name: 任务名
模块名: 模块参数
准备好nginx的yum源文件:




执行剧本:


查看被控制主机:


检查剧本的语法:
ansible-playbook demo1.yaml --syntax-check #检查yaml文件的语法是否正确

ansible-playbook demo1.yaml --list-task #检查tasks任务

ansible-playbook demo1.yaml --list-hosts #检查生效的主机

when条件判断:
在Ansible中,提供的唯一一个通用的条件判断是when指令,当when指令的值为true时,则该任务执行,否则不执行该任务。
编写剧本:

- hosts: webservers
remote_user: root
tasks:
- name: shutdown host
command: /sbin/shutdown -r now
when: ansible_default_ipv4.address == "192.168.233.20"


执行剧本:


items循环:
编写剧本:

---
- name: play1
hosts: webservers
gather_facts: false
tasks:
- name: create file
file:
path: "{{item}}"
state: touch
with_items: [ /opt/a, /opt/b, /opt/c, /opt/d ]

去20主机查看下/opt目录下有无文件:

运行剧本:

查看/opt目录:
