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的时候报错:
解决:
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
说明: 第一行需要有三个杠,hosts参数指定了对哪些主机进行参作,如果是多台机器可以用逗号作为分隔,也可以使用主机组,在/etc/ansible/hosts里定义;
remote_user参数指定了使用什么用户登录远程主机操作;
tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来,shell是ansible模块名字
执行:ansible-playbook test.yml
警告可以清理:
vi /etc/ansible/ansible.cfg
command_warnings=False #添加这个
例子2:创建用户
说明:
name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;
gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;
vars参数,指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。
Ansible playbook中的循环
没有文件,就创建
说明: with_items为循环的对象
执行 ansible-playbook while.yml
Ansible playbook中的条件判断
说明: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服务
说明,只有copy模块真正执行后,才会去调用下面的handlers相关的操作。 这种比较适合配置文件发生更改后,重启服务的操作。
yum 安装
不执行模糊匹配的安装(如:perl*),这样只是安装了perl
转载于:https://blog.51cto.com/jacksoner/2139904