Ansible 之 when判断语句使用
2021-01-21 21:27
555 查看
一、when语句
Ansible when 语句等同于if语句的作用
二、判断test主机是否有redis-server进程
--- - hosts: test vars_files: remote_user: cedar become: yes vars: test: "0" tasks: - name: "判断redis进程是否存在" shell: netstat -tlunp | grep redis-server | wc -l ignore_errors: True register: result - name: "打印检查结果" debug: msg: "{{result}}" - name: "打印是否有redis-server进程" debug: msg: "{{result.stdout.find('1')}}" - name: "判断是否启动" shell: touch /root/aaa.txt when: result.stdout.find('1') == 0 #判断屏幕输出结果是否为1
二、当test主机有redis-server进程时结果
[root@Ansible playbook]# ansible-playbook process.yaml PLAY [test] ***************************************************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************************** ok: [10.3.153.8] TASK [判断redis进程是否存在] ******************************************************************************************************************************************** changed: [10.3.153.8] TASK [打印检查结果] *************************************************************************************************************************************************** ok: [10.3.153.8] => { "msg": { "changed": true, "cmd": "netstat -tlunp | grep redis-server | wc -l", "delta": "0:00:00.029704", "end": "2021-01-21 08:23:15.244863", "failed": false, "rc": 0, "start": "2021-01-21 08:23:15.215159", "stderr": "", "stderr_lines": [], "stdout": "1", "stdout_lines": [ "1" ] } } TASK [打印是否有redis-server进程] ************************************************************************************************************************************** ok: [10.3.153.8] => { "msg": "0" #当test主机有redis-server进程时,该值为0,否则为-1 } TASK [判断是否启动] *************************************************************************************************************************************************** [WARNING]: Consider using the file module with state=touch rather than running 'touch'. If you need to use command because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message. changed: [10.3.153.8] #当redis-server存在时,执行该动作,创建文件 PLAY RECAP ****************************************************************************************************************************************************** 10.3.153.8 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
三、当test主机没有redis-server进程结果
[root@Ansible playbook]# ansible-playbook process.yaml PLAY [test] ***************************************************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************************** ok: [10.3.153.8] TASK [判断redis进程是否存在] ******************************************************************************************************************************************** changed: [10.3.153.8] TASK [打印检查结果] *************************************************************************************************************************************************** ok: [10.3.153.8] => { "msg": { "changed": true, "cmd": "netstat -tlunp | grep redis-server | wc -l", "delta": "0:00:00.025883", "end": "2021-01-21 08:23:46.505443", "failed": false, "rc": 0, "start": "2021-01-21 08:23:46.479560", "stderr": "", "stderr_lines": [], "stdout": "0", "stdout_lines": [ "0" ] } } TASK [打印是否有redis-server进程] ************************************************************************************************************************************** ok: [10.3.153.8] => { "msg": "-1" } TASK [判断是否启动] *************************************************************************************************************************************************** skipping: [10.3.153.8] #当没有redis-server进程时,跳过此步骤,不创建文件 PLAY RECAP ****************************************************************************************************************************************************** 10.3.153.8 : ok=4 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
四、技术点解释
1、register 大部分情况下,我们使用注册器用来接收shell命令的返回结果,结果中包含标准输出(stdout)和错误输出(stderr)。
相关文章推荐
- ansible 使用when判断命令
- 输出,变量的使用,子查询,逻辑语句,循环,case..when..then..end多分支语句,Exists(判断存在)
- Sql语句中使用Case When Then判断
- Sql语句中使用Case When Then判断
- postgress的if条件语句的使用,case whenthen组合使用,replace语句,判断是否包含position
- C_判断语句if与else的嵌套使用
- C_判断语句if与else的组合使用
- 智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API.
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- sql语句判断方法case when then 还…
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
- 求两个整数的最大值,不使用判断语句
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 比较两个数a、b的大小,不能使用大于/小于、if、switch,?:等判断语句
- C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)
- 求1+2+…+n 要求不能使用 乘 除 法、for、while、if、else、switch、case等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- 一道腾讯的笔试题,不使用任何判断语句求出两个数中的较大者(即 if、if...else...、>、<、==、while等语句)