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
例二:创建用户
---
- name: create_user
host: testhost
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: create user
user: name="{{user}}"
说明:
name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印name变量的值,可以省略;
gather_facts参数指定了在一下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setu获取的信息时用到;
vars参数,指定了变量,这里指一个user变量,其值为test,需要注意的是,变量值一定要用引号引住;
user指定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面的user变量的值。
检查并执行
ansible-playbook --syntax-check create_user.yml
ansible-playbook create_user.yml
此时已创建用户
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
说明:with_items是循环的关键
检查配置
ansible-playbook --syntax-check while_items.yml
执行
ansible-playbook while_items.yml
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-playbook --syntax-check when.yml
执行
ansible-playbook when.yml
我们可以通过如下命令查看各个参数的值
ansible testhost -m setup
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"
执行
模块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-playbook --syntax-check handlers.yml
执行
ansible-playbook handlers.yml
说明:只有copy模块真正执行后,才会去调用下面的handlers相关的操作。也就是说如果1.txt和2.txt内容是一样的,就不会去执行handlers里面的shell相关命令。这种比较适合配置文件发生变更后,重启相关的操作。
以上是关于ansible的主要内容,如果未能解决你的问题,请参考以下文章
Ansibleansible安装,用户级执行ansible命令,清单构建,配置文件详解
Ansibleansible安装,用户级执行ansible命令,清单构建,配置文件详解