自动化运维之Ansible详解(2)

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

收集客户端的信息:

ansible client -m setup

8.ansible playbook循环

修改testhost组下主机的/tmp/目录下的1.txt,2.txt,3.txt(首先保证这些文件存在)的权限修改为600,属主改为root,属组改为root:

编辑一个loop.yml脚本:

vim /etc/ansible/loop.yml

---

- hosts: testhost

 user: root

 tasks:

   - name: change mode for file

     file: path=/tmp/{{ item }} mode=600 owner=root group=root

     with_items:

      - 1.txt

      - 2.txt

      - 3.txt

执行:

ansible-playbook /etc/ansible/loop.yml

9.ansible playbook判断

当满足条件ansible_hostname == "client"时执行命令:

touch /tmp/when.txt:

编辑一个when.yml脚本:

vim /etc/ansible/when.yml

---

- hosts: testhost

 remote_user: root

 gather_facts: True

 tasks:

   - name: use when

     shell: touch /tmp/when.txt

     when: ansible_hostname == "client"

执行:ansible-playbook /etc/ansible/when.yml

10.ansible playbook 中的 handlers

在执行task之后,服务器发生变化之后要执行的一些操作,比如我们修改了一些配置问价后,需要重启一下服务:

vim /etc/ansinle/handlers.yml

---

- name: handlers test

 hosts: testhost

 user: root

 tasks:

   - name: copy file

     copy: src=https://www.linuxidc.com/etc/passwd dest=/tmp/aaa.txt

     notify: test handlers

 handlers:

   - name: test handlers

     shell: echo "111111" >> /tmp/aaa.txt

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ce60ef5658922091167275395d1b1484.html