Skip to content

Latest commit

 

History

History
99 lines (82 loc) · 2.94 KB

5.111-ansible_playbook.md

File metadata and controls

99 lines (82 loc) · 2.94 KB

ansible playbook介绍

Ansible playbook是将要做的所有操作汇集到一个或者几个yaml文件中去,其实就跟我们写shell脚本一样,只不过这个playbook有它自己的语法和规则。

好处很明显:方便维护、升级;可以反复使用;将复杂的步骤逻辑化。

示例1

vi test.yml #内容如下

---
- hosts: aminglinux02
  remote_user: root
  tasks:
    - name: test_playbook
      shell: touch /tmp/lishiming.txt

#说明:第一行需要有三个杠,hosts参数指定了对哪些主机进行参作,如果是多台机器可以用逗号作为分隔,
#也可以使用主机组,在/etc/ansible/hosts里定义;
#user参数指定了使用什么用户登录远程主机操作;
#tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来,shell是ansible模块名字

执行:
ansible-playbook test.yml

示例2

vi create_user.yml #内容如下

---
- name: create_user
  hosts: aminglinux02
  user: root
  gather_facts: false
  vars:
    - user: "test"
  tasks:
    - name: create user
      user: name="{{ user }}"

#说明:name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;
#gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到<ansible 127.0.0.1 -m setup>;
#vars参数,指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;
#user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。

playbook中的循环

vi while.yml #内容如下

---
- hosts: test
  user: root
  tasks:
    - name: change mode for files
      file: path=/tmp/{{ item }} mode=600
      with_items:
        - 1.txt
        - 2.txt
        - 3.txt

#说明: with_items为循环的对象

playbook中的条件判断

vi when.yml #内容如下

---
- hosts: test
  user: root
  gather_facts: True
  tasks:
    - name: use when
      shell: touch /tmp/when.txt
      when: ansible_ens33.ipv4.address == "192.168.222.128"

#说明:这里的ansible_ens33.ipv4.address就是通过setup模块查看到的facter信息

playbook中的handlers

执行task之后,服务器发生变化之后要执行的一些操作,比如我们修改了配置文件后,需要重启一下服务 vi handlers.yml #加入如下内容

---
- name: handlers test
  hosts: aminglinux02
  user: root
  tasks:
    - name: copy file
      copy: src=/etc/passwd dest=/tmp/aaa.txt
      notify: test handlers
  handlers:
    - name: test handlers
      shell: echo "111111" >> /tmp/aaa.txt

#说明,只有copy模块真正执行后,才会去调用下面的handlers相关的操作。这种比较适合配置文件发生更改后,重启服务的操作