Ansible-playbook 将某一个任务委托给其他主机delegate_to(学习笔记二十四)-阿里云开发者社区

开发者社区> 云计算> 正文

Ansible-playbook 将某一个任务委托给其他主机delegate_to(学习笔记二十四)

简介: 默认ansible的所有task是在我们的配置的管理机器上面运行的,当在一个独立的群集里面配置,那是适用的.而有一些情况是,某些任务运行的状态是需要传递给其他机器的,在同一个任务你需要在其他机器上执行,这时候你就许多要用task委托 使用delegate_to关键字便可以配置任务在其他机器上执行.

默认ansible的所有task是在我们的配置的管理机器上面运行的,当在一个独立的群集里面配置,那是适用的.而有一些情况是,某些任务运行的状态是需要传递给其他机器的,在同一个任务你需要在其他机器上执行,这时候你就许多要用task委托

使用delegate_to关键字便可以配置任务在其他机器上执行.其他模块还是在所有配置的管理机器上运行的,当到了这个关键字的任务就是使用委托的机器上运行.而facts还是适用于当前的host,下面我们演示一个例子,使用get_url模块去下载一个web集群的配置

---

  - name: Fetch configuration from all webservers

    hosts: webservers

    tasks:

      - name: Get config

        get_url: dest=configs/{{ ansible_hostname }} force=yes url=http://{{ ansible_hostname }}/diagnostic/config

        delegate_to: localhost

如果需要委托loaclhost执行任务,这里提供一个快捷的方式,只要使用local_action作为task的key便行.我们尝试使用这种方式来配置上面的例子,会更加简洁.

---    #1

  - name: Fetch configuration from all webservers    #2

    hosts: webservers    #3

    tasks:    #4

        - name: Get config

          local_action: get_url dest=configs/{{ ansible_hostname }}.cfg url=http://{{ ansible_hostname }}/diagnostic/config

委托不限于localhost,可以在你的inventory里面的任何host.下列一些场景适用使用委托

部署之前你希望从负载均衡里面把host移除

更改你的server时候更改dns的指向

创建一个iSCSI卷存储设备

使用一个外部服务器去检测一下服务

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章