ansible任务控制
任务控制方式
1.条件判断 when
- hosts: web
tasks:
-name: Install httpd server
yum: name=httpd state=present
when: ( ansible_distribution == "centos7" )
-name: Install apache server
yum: name=httpd2 state=present
when: ( ansible_distribution == "ubuntu" )
- hosts: all
tasks:
-name: create yum repo
yum_repository:
name: ansible_nginx
description: ansible_nginx
baseurl: http://mirros.list.com
when: ( ansible_fqdn is match("app*")) or ( ansible_fqdn is match("db*"))
-name: check httpd server
command: systemctl is-actived httpd
ignore_errors: yes
register: checkhttpd
-name: httpd restart
service: name=httpd state=present
when: check_httpd.rc == 0
when控制
- name: "supervisor start es data node"
shell: "supervisorctl update"
ignore_errors: True
tags: elastic
- name: "supervisor start es master node"
shell: "supervisorctl restart elasticsearch"
when:
- ansible_default_ipv4.address == groups['elastic-master'][0]
ignore_errors: True
tags: elastic
when判断主机IP
when:
- ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux']
- ansible_distribution_version|version_compare('15.04', '>=')
when多条件判断
2.循环语句 with_items
- hosts: web
tasks:
-name: service {{ item }} server
service: name={{ item }} state=restarted
with_items:
- nginx
- mysql
- hosts: db
tasks:
- name: create user
user: name={{ item.name }} group={{ item.group }} state=present
with_items:
- { name: 'www', group: 'bin' }
- { name: 'test', group: 'root' }
循环
3.触发器 handlers
用来实现修改配置文件以后,自动触发服务的重启操作. notify负责监控 > 通知 > handlers负责触发执行
实现配置管理
#当所有正常的task全部执行结束后才会调用notify中的handlers,handlers是排在最后被执行的.跟它定义的位置无关
#所有的handlers只会在最后被调用一次 不管你在task中定义了多少次
- hosts: redis
tasks:
- name: copy redis config
template: src=./etc/redis.conf dest=/etc/redis.conf
notify: service restart redis
notify:
- service restart redis
- service restart java
handlers:
- name: service restart redis
service: name=redis state=restarted
- name: service restart app
service: name=java state=restarted
配置管理
4.标签 tags
用来在调试Playbook的时候根据tags执行指定的tasks,而不是一次执行playbook中的所有task
5.包含 include
多个项目直接可以包含同一个task 用来减少同样内容task的编写量
6.错误忽略 ignore_errors
强制触发handlers,默认handlers是要所有的task全部执行成功最后才执行handlers
如果某个task执行失败 那么最后的handlers是不会触发的 force_handlers: yes
7.错误处理 changed_when
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibgakh
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22