1.serial线性更新服务器
在更新线上服务器时正确的做法应该是循序渐进的方式进行更新,降低因更新问题对线上服务造成的影响。
Ansible提供的serial参数来实现线性更新。取值可以是一个数字,或者百分比。
#一次只更新一台 --- - hosts: dbservers serial: 1
#一次更新百分之二十 --- - hosts: dbservers serial: "20%"
#第一次更新一台,第二次更新2台,第三次更新5台 --- - hosts: dbservers serial: 1 serial: 3 serial: 5
2.delegate_to实现任务委派
在某些情况下,对服务器进行批量操作的过程中需要对某一台服务器进行特殊处理,此时可以使用ansible的任务委派功能。
--- - hosts: dbservers tasks: - name: install nginx yum: name=nginx state=present delegate_to: 192.168.1.2
3.local_action在控制服务器上执行操作
4.run_once使任务仅执行一次
5.通过tags控制Play的执行
--- - hosts: dbservers tasks: - name: install nginx yum: name=nginx state=present tags: nginx - name: test tags: test
#执行tag为nginx的任务 ansible-playbook test.yaml --tags "nginx" #不执行tag为nginx的任务 ansible-playbook test.yaml --skip-tags "nginx"
6.使用changed_when控制对changed字段的定义
Ansible中 changed_when关键字的作用是在条件成立时,将对应任务的执行状态设置为changed。
7.使用failed_when控制对failed字段的定义
- shell: "echo 'This is a string for testing error'" register: return_value failed_when: " 'error' in return_value.stdout"
failed_when对应的条件是 ” ‘error’ in return_value.stdout”,表示”error”字符串如果存在于shell模块执行后的标准输出中,则条件成立,当条件成立后,shell模块的执行状态将会被设置为失败,由于shell模块的执行状态被设置为失败,所以playbook会终止运行。
「 文章如果对你有帮助,请点个赞哦^^ 」 
1+
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/3136.html