zoukankan      html  css  js  c++  java
  • ansible 任务流程控制

    一、任务委托

      默认情况下,ansible的所有任务都是在指定的机器上运行的,当在一个独立的群集环境中配置时,但是只想操作其中的某一台主机,或者在特定的主机上运行,此时就需要用到ansible的任务委托功能。

      使用delegate_to关键字可以配置任务在指定的机器上执行,二其他的任务还是在hosts关键字配置的机器上运行,到了这个关键字所在的任务时,就使用委托的机器运行。例如:

    ---
      - hosts: zookeeper
        remote_user: root
        gather_facts: no
    
        tasks:
          - name: test
            shell: "echo 123 > /tmp/bb"
          - name: test delegate
            shell: "echo 1 > /tmp/aa"
            register: aa
            delegate_to: 192.168.4.50
          - name: hhh
            debug:
              var: "{{ aa }}"

    说明:zookeeper组里面是两天主机:
    192.168.4.50
    192.168.4.46

    如果想要在ansible服务器本地运行,除了将任务委托给127.0.0.1或者localhost,还可以使用local_action关键字完成,如下:    tasks:

    - name: test
            shell: "echo 123 > /tmp/bb"
          - name: test delegate
            shell: "echo 1 > /tmp/aa"
            register: aa
            delegate_to: 127.0.0.1   
    或者
        tasks:
          - name: test
            shell: "echo 123 > /tmp/bb"
          - name: test delegate
            local_action: shell "echo 1 > /tmp/aa"
            register: aa
            

    二、任务暂停

      当一些任务的运行需要等到一些状态的恢复,比如某一台主机或者应用刚刚重启,需要等待其某个端口开启,这个时候就需要任务暂停。如下:

    ---
      - hosts: hadoop
        remote_user: root
        gather_facts: no
    
        tasks:
        - name: test1
          local_action:
            module: wait_for           #模块名字
            port: 80
            host: 192.168.4.50
            delay: 10
            timeout: 300
            state: started

    使用local_action配合wait_for模块来完成任务的暂停操作。该任务每隔10s检查主机上的80端口是否开启,如果操作300s,80端口任未开启,将返回失败信息。

  • 相关阅读:
    进程与线程
    Socket函数编程(二)
    socket编程
    subprocess 模块
    异常处理
    模块与包
    【Java基础】String源码分析
    【MySQL】 执行计划详解
    【MySQL】performance schema详解
    【Spring Cloud-Open Feign】使用OpenFeign完成声明式服务调用
  • 原文地址:https://www.cnblogs.com/yjt1993/p/10971801.html
Copyright © 2011-2022 走看看