Ansible 之 when判断语句使用
16lz
2021-01-22
一、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)。
©著作权归作者所有:来自51CTO博客作者wx592bc92b285c7的原创作品,如需转载,请注明出处,否则将追究法律责任好知识,才能预见未来
赞赏
0人进行了赞赏支持
更多相关文章
- 关于php多进程编程(代码详解)
- 关于PHP进程防止内存溢出的排查
- PHP 进程管理器 PHP-FPM
- 看懂PHP进程管理器php-fpm
- 基于PHP-FPM进程池的探索
- 谈谈PHP中的多进程消费队列
- 直击PHP进程管理器php-fpm
- 探秘基于PHP-FPM进程池
- Nginx使用的php-fpm进程管理方式及优化