ansible执行status

[root@centos5 pltestmodule]# ansible-playbook -i hosts testdate.yaml 

PLAY [local] *******************************************************************************************************

TASK [echo date] ***************************************************************************************************
changed: [localhost]

TASK [echo date_output] ********************************************************************************************
changed: [localhost]

PLAY RECAP *********************************************************************************************************
localhost                  : ok=2    changed=2    unreachable=0    failed=0   

[root@centos5 pltestmodule]# vim testdate.yaml 
[root@centos5 pltestmodule]# ansible-playbook -i hosts testdate.yaml 

PLAY [local] *******************************************************************************************************

TASK [echo date] ***************************************************************************************************
changed: [localhost]

TASK [echo date_output] ********************************************************************************************
skipping: [localhost]

PLAY RECAP *********************************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0   
---
- hosts: local
  remote_user: root
  gather_facts: False
  tasks:
    - name: echo date
      command: date
      register: date_output
    - name: echo date_output
      command: echo "5"
      when: date_output.stdout.split(" ")[3] == "5"  #第二种情况skipping
      #notify: 
      #- output test
  handlers:
    - name: output test
      shell: ls /root
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,举个简单的例子说明一下。 假设我们需要在目标机器上执行一个长时间运行的命令,比如安装一个非常大的软件包。我们希望在命令执行完成之后再进行后续操作,比如检查软件包是否安装成功。我们可以通过 async 特性来实现这个需求。 首先,在 Ansible 任务中添加 async 和 poll 参数,指定后台执行命令的时间和轮询状态的时间间隔: ```yaml - name: Install large software package command: /path/to/large_software_package_install_command async: 3600 # 1 hour poll: 60 # check every minute ``` 上面的代码中,async 参数指定后台执行命令的时间为 1 小时,poll 参数指定轮询命令状态的时间间隔为 1 分钟。 接下来,在后续任务中使用 async_status 模块来查询命令执行状态: ```yaml - name: Wait for large software package installation to complete async_status: jid: "{{ item.ansible_job_id }}" register: job_result until: job_result.finished retries: 720 # retry every minute for 12 hours delay: 60 # wait 1 minute between retries - name: Check if large software package is installed command: /path/to/check_large_software_package_installed_command when: job_result.finished ``` 上面的代码中,async_status 模块使用 ansible_job_id 变量来查询命令的执行状态,查询结果保存在 job_result 变量中。然后使用 until 条件来判断命令是否执行完成,如果未执行完成,则继续等待,直到命令执行完成为止。retries 和 delay 参数分别指定重试次数和等待时间间隔。最后,当命令执行完成时,再执行检查命令。 这样,我们就可以在 Ansible 执行命令时等待执行完成再进行后续操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值