Ansible(2)

目录

playbook剧本

编写剧本:

准备好nginx的yum源文件:

when条件判断:

items循环:


playbook剧本

playbooks 本身由以下各部分组成
(1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行
(2)Variables:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色

编写剧本:

给管理主机配置文件还原,并重新进行配置管理:

Ansible(2)_第1张图片

Ansible(2)_第2张图片创建目录:
Ansible(2)_第3张图片

先给dbservers防火墙开启:

Ansible(2)_第4张图片

Ansible(2)_第5张图片

编写测试yaml文件:

Ansible(2)_第6张图片

---
- 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(2)_第7张图片

执行文件:

ansible-playbook demo1.yaml 

Ansible(2)_第8张图片

Ansible(2)_第9张图片

Ansible(2)_第10张图片

安装nginx的剧本: 

Ansible(2)_第11张图片

- 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(2)_第12张图片

Ansible(2)_第13张图片

执行剧本:

Ansible(2)_第14张图片

Ansible(2)_第15张图片

查看被控制主机:

Ansible(2)_第16张图片

Ansible(2)_第17张图片

检查剧本的语法:

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

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

Ansible(2)_第18张图片

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

Ansible(2)_第19张图片

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"

Ansible(2)_第20张图片

Ansible(2)_第21张图片

执行剧本:

Ansible(2)_第22张图片

Ansible(2)_第23张图片

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 ]

Ansible(2)_第24张图片

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

运行剧本:

Ansible(2)_第25张图片

查看/opt目录:

Ansible(2)_第26张图片

你可能感兴趣的:(ansible)