Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles

Ansible管理任务计划

-m:模块

ansible all  -m cron  -a  'name="ban IP of login" minute=0 hour=*/2 day=1-2 month=1-2 weekday=1-2 job="sh /data/x5online/ban_try_login_ip.sh"'

[root@test-01 opt]# crontab -l

#Ansible: ban IP of login
0 */2 1-2 1-2 1-2 sh /data/x5online/ban_try_login_ip.sh

若要删除该cron 只需要加一个字段 state=absent 

ansible testhost -m cron -a "name='ban IP of login' state=absent"

其他的时间表示:分钟 minute 小时 hour 日期 day 月份 month

Ansible安装rpm包/管理服务

安装yum的时候报错:
Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles

解决:
vi /etc/ansible/hosts
[testhost]
test-01 ansible_python_interpreter=/usr/bin/python2.7
test-02

安装
ansible test-01 -m yum -a "name=iftop state=installed"

删除
ansible test-01 -m yum -a "name=iftop state=removed"

state:``
running,

started,

stopped,

restarted,

reloaded


ansible testhost -m service -a "name=httpd state=started enabled=yes" 
 这里的name是centos系统里的服务名,可以通过chkconfig --list查到。

playbook的使用

为什么要用playbook?
我们完成一个任务,例如安装部署一个httpd服务,我们需要多个模块(一个模块也可以称之为task)提供功能来完成。而playbook就是组织多个task的容器,他的实质就是一个文件,有着特定的组织格式,它采用的语法格式是YAML(Yet Another Markup Language)。

相当于把模块写入到配置文件里面,例:
[root@test-01 tools]# vi /etc/ansible/test.yml

Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles

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

警告可以清理:
Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles

vi /etc/ansible/ansible.cfg
command_warnings=False #添加这个

例子2:创建用户

Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles
说明:
name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;

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

vars参数,指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。

Ansible playbook中的循环

没有文件,就创建
Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles

说明: with_items为循环的对象
执行 ansible-playbook while.yml

Ansible playbook中的条件判断

Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles
说明:ansible test-02 -m setup 可以查看到所有的facter信息

test-02 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.1.67"
]

Ansible playbook中的handlers

handlers需要等到所有tasks完成后才执行;相当于shell 中的 cmd1 && cmd2 只有当cmd1 执行成功后才执行cmd2
只有当task任务执行成功后,才执行handlers里的,用于检查nginx的语法,没问题才reload nginx服务
Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles

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

猜你喜欢

转载自blog.51cto.com/jacksoner/2139904