目录
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目录: