ansible

Posted python运维之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible相关的知识,希望对你有一定的参考价值。

ansible(二)

playbook介绍

playbook相当于把模块写入到配置文件里面

例一:新建文件

创建playbook

---

- hosts: testhost

  remote_user: root

  tasks:

    - name: test_playbook

      shell: touch /tmp/shs.txt

说明:

hosts参数指定了对哪些主机进行操作

user参数指定了使用什么用户登录远程主机操作

tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来。

检查配置

ansible-playbook --syntax-check test.yml

执行

ansible-playbook test.yml

ansible(二)

例二:创建用户

---

- name: create_user

  host: testhost

  user: root

  gather_facts: false

  vars:

    - user: "test"

  tasks:

    - name: create user

      user: name="{{user}}"

ansible(二)

说明:

name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印name变量的值,可以省略;

gather_facts参数指定了在一下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setu获取的信息时用到;

vars参数,指定了变量,这里指一个user变量,其值为test,需要注意的是,变量值一定要用引号引住;

user指定了调用user模块,nameuser模块里的一个参数,而增加的用户名字调用了上面的user变量的值。

 

检查并执行

ansible-playbook --syntax-check create_user.yml

ansible-playbook create_user.yml

ansible(二)

此时已创建用户

ansible(二)

while循环

---

- hosts: testhost

  user: root

  tasks:

    - name: change mode for fife

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

      with_items:

        - 1.txt

        - 2.txt

ansible(二)


说明:with_items是循环的关键

检查配置

ansible-playbook --syntax-check while_items.yml

ansible(二)

执行

ansible-playbook while_items.yml

ansible(二)

when条件

---

- hosts: testhost

  remote_user: root

  gather_facts: True

  tasks:

    - name: use when

      shell: touch /tmp/when.txt

      when: facter_ipaddress=="192.168.1.249"

ansible(二)

检查

ansible-playbook --syntax-check when.yml

ansible(二)

执行

ansible-playbook when.yml

ansible(二)

我们可以通过如下命令查看各个参数的值

ansible testhost -m setup

ansible(二)

192.168.1.249没有facter_ipaddress参数,我们需要修改一下判断对象

或者我们可以过滤一下其他的条件

---

- hosts: testhost

  remote_user: root

  gather_facts: True

  tasks:

    - name: use when

      shell: touch /tmp/when.txt

      when: ansible_distribution_version == "6.5"

ansible(二)

执行

ansible(二)

模块handlers


执行task之后,服务器发生变化之后要执行一些操作。比如我们修改了配置文件后,需要重启依稀服务,具体示例:

---

- hosts: testhost

  remote_user: root

  tasks:

    - name: test copy

      copy: src=/tmp/1.txt dest=/tmp/2.txt

      notify: test handlers

  handlers:

    - name: test handlers

      shell: echo "121212" >> /tmp/2.txt

ansible(二)


检查

ansible-playbook --syntax-check handlers.yml

执行

ansible-playbook handlers.yml


说明:只有copy模块真正执行后,才会去调用下面的handlers相关的操作。也就是说如果1.txt2.txt内容是一样的,就不会去执行handlers里面的shell相关命令。这种比较适合配置文件发生变更后,重启相关的操作。



以上是关于ansible的主要内容,如果未能解决你的问题,请参考以下文章

Ansibleansible安装,用户级执行ansible命令,清单构建,配置文件详解

Ansibleansible安装,用户级执行ansible命令,清单构建,配置文件详解

AnsibleAnsible控制windows插件安装及运行error与解决方法

ansible控制windows 2019

Ansible 自动化常用实例

初识Ansible