云运维-任务5.2-Ansible(2)playbook的使用-20201222

Ansible playbook 使用

 
 

3.1 ansible playbook 中的使用

相当于把模块写入到配置文件里面,例:

#cat /root/te.yml 
---
- hosts: 192.168.2.20
  remote_user: root
  tasks:
    - name: test_pb
      shell: touch /tmp/tst_pb

#ansible-playbook test.yml

云运维-任务5.2-Ansible(2)playbook的使用-20201222

 

再来创建一个用户的例子:

#cat create_user.yml
---
- name: create_user
  hosts: 192.168.2.20
  user: root
  gather_facts: false
  vars:
    - user: "test"
  tasks:
    - name: create user
      user: name="{{ user }}"

云运维-任务5.2-Ansible(2)playbook的使用-20201222

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

 

 #ansible-playbook create_user.yml

云运维-任务5.2-Ansible(2)playbook的使用-20201222
 

3.2 ansible playbook 中的循环

创建 white.yml 文件

//先分别在两台虚拟机/tmp下创建三个文件:touch 1.txt 2.txt 3.txt
#cat while.yml
---
- hosts: testhost
  user: root
  tasks:
    - name: change mode for files
      file: path=/tmp/{{ item }} mode=600
      with_items:
        - 1.txt
        - 2.txt
        - 3.txt

 

#ansible-playbook while.yml

云运维-任务5.2-Ansible(2)playbook的使用-20201222
 

3.3 ansible playbook 中的条件判断

创建 when.yml 文件:

#cat when.yml
---
- hosts: testhost
   user: root
   gather_facts: True
   tasks:
     - name: use when
       shell: touch /tmp/when.txt
       when:ansible_ens33.ipv4.address == "192.168.2.20"

 

#ansible-playbook when.yml

云运维-任务5.2-Ansible(2)playbook的使用-20201222
 

3.4 ansible playbook 中的 handlers

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

#cat handlers.yml
---
- name: handlers test
  hosts: 192.168.2.20
  user: root
  tasks:
    - name: copy file
      copy: src=/etc/passwd dest=/tmp/aaa.txt
      notify: test handlers
  handlers:
    - name: test handlers
      shell: echo "123456" >> /tmp/aaa.txt

#ansible-playbook handlers.yml 

云运维-任务5.2-Ansible(2)playbook的使用-20201222

云运维-任务5.2-Ansible(2)playbook的使用-20201222

上一篇:Ansible 2.1:Playbook 中遵循的 YAML 一般语法


下一篇:Linux企业实战(五十)——持续集成与持续交付(7)