一、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人进行了赞赏支持

更多相关文章

  1. 关于php多进程编程(代码详解)
  2. 关于PHP进程防止内存溢出的排查
  3. PHP 进程管理器 PHP-FPM
  4. 看懂PHP进程管理器php-fpm
  5. 基于PHP-FPM进程池的探索
  6. 谈谈PHP中的多进程消费队列
  7. 直击PHP进程管理器php-fpm
  8. 探秘基于PHP-FPM进程池
  9. Nginx使用的php-fpm进程管理方式及优化

随机推荐

  1. 多个Activity跳转的小结
  2. android的手机任务管理器,关键功能实现方
  3. Android使用文件进行数据存储的方法
  4. Android绘制流程窗口启动流程分析(上)
  5. Android(安卓)ADT 离线下载技巧(告别在线
  6. 【Android】Android(安卓)Studio中新创建
  7. Chrome for Android(安卓)编译了两天终于
  8. 有关android加快开机速度
  9. Android(安卓)WakeLock详解
  10. Android(安卓)布局动画