标签:控制 httpd name service handlers redis state 任务 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 == 0when控制
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
标签:控制,httpd,name,service,handlers,redis,state,任务,ansible 来源: https://www.cnblogs.com/yxh168/p/14784969.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。