首页 > 其他分享 >18.ansible delegate_to

18.ansible delegate_to

时间:2022-10-19 14:33:43浏览次数:45  
标签:机器 name 18 ansible hosts delegate facts 执行

1. 场景介绍

在对一组服务器 server_group1 执行操作过程中,需要在另外一台机器 A 上执行一个操作,比如在 A 服务器上添加一条 hosts 记录,这些操作必须要在一个 playbook 联动完成。也就是是说 A 服务器这个操作与 server_group1 组上的服务器有依赖关系。Ansible 默认只会在定义好的一组服务器上执行相同的操作,这个特性对于执行批处理是非常有用的。但如果在这过程中需要同时对另外 1 台机器执行操作时,就需要用到 Ansible 的任务委派功能(delegate_to)。使用 delegate_to 关键字可以委派任务到指定的机器上运行。在 playbook 的操作如下:

- name: add host record 
  shell: 'echo "192.168.1.100 test.xyz.com" >> /etc/hosts'

 - name: add host record to center server 
  shell: 'echo "192.168.1.100 test.xyz.com " >> /etc/hosts'
  delegate_to: 192.168.1.1

任务委派功能还可以用于以下场景:

  • 在部署之前将一个主机从一个负载均衡集群中删除;
  • 当你要对一个主机做改变之前去掉相应 dns 的记录;
  • 当在一个存储设备上创建 iscsi 卷的时候;
    *当使用外的主机来检测网络出口是否正常的时候。

2. 委托(delegate)

通过"delegate_to", 用户可以把某一个任务放在委托的机器上执行.

- hosts: webservers
  serial: 5

  tasks:

  - name: take out of load balancer pool
    command: /usr/bin/take_out_of_pool {{ inventory_hostname }}
    delegate_to: 127.0.0.1

上面的task会在跑ansible的机器上执行, “delegate_to: 127.0.0.1” 可以用local_action来代替

  tasks:

  - name: take out of load balancer pool
    local_action: command /usr/bin/take_out_of_pool {{ inventory_hostname }}

3. 委托者的facts

默认情况下, 委托任务的facts是inventory_hostname中主机的facts, 而不是被委托机器的facts. 在ansible 2.0 中, 设置delegate_facts为true可以让任务去收集被委托机器的facts.

- hosts: app_servers
  tasks:
    - name: gather facts from db servers
      setup:
      delegate_to: "{{item}}"
      delegate_facts: True
      with_items: "{{groups['dbservers'}}"

该例子会收集dbservers的facts并分配给这些机器, 而不会去收集app_servers的facts

4. run_once

通过run_once: true来指定该task只能在某一台机器上执行一次. 可以和delegate_to 结合使用

- command: /opt/application/upgrade_db.py
  run_once: true
  delegate_to: web01.example.org

指定在"web01.example.org"上执行这
如果没有delegate_to, 那么这个task会在第一台机器上执行

标签:机器,name,18,ansible,hosts,delegate,facts,执行
From: https://www.cnblogs.com/yangtao416/p/16806111.html

相关文章

  • 【算法训练营day7】LeetCode454. 四数相加II LeetCode383. 赎金信 LeetCode15. 三数之
    【算法训练营day7】LeetCode454.四数相加IILeetCode383.赎金信LeetCode15.三数之和LeetCode18.四数之和LeetCode454.四数相加II题目链接:454.四数相加II初次尝......
  • ansible搭建基本使用
    一、安装ansible配置yum源RHEL/CentOS6:#yuminstallhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmRHEL/CentOS7:#yuminstallh......
  • docker安装jenkins+maven-3.6.3+node-v14.18.3+java-1.8.0
    安装maven-3.6.31)下载apache-maven-3.6.3-bin.tar.gzwget apache-maven-3.6.3-bin.tar.gz2)解压压缩包tar-xfapache-maven-3.6.3-bin.tar.gz-C /usr/local/3)配置......
  • 代码随想录算法训练营第七天 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之
    做完题目,总算理解为什么三数之和荣获“初代噩梦”的称号了。真的是对照着题解才能弄明白每一步到底都想干些什么……454.四数相加II从四个数组里各挑一个元素,只考察组合......
  • 2022.10.18 - 前端Vue项目部署文件上线
    在terminal终端连接Linux服务器mac通过scp特定端口上传文件到linux服务器命令:scp-r-P10017/Users/yehudalee/Desktop/多测/portal-ui/dist/*[email protected].......
  • 2022.10.18-代码大全-10月读后感1
    近期,我阅读了这本书的什么是软件构造这一部分。我了解到了开发计算机软件已是一个复杂的过程。已经认识到在软件开发中的各种不同的活动:定义问题、需求分析、规划构建、软......
  • 10.18小测(流量人数统计)
    题目要求:给出result.txt文件,导入到mysql中,清洗日期格式,统计视频流量,可视化展示。需要数据分析的内容:(1)统计最受欢迎的视频/文章的Top10访问次数(video/article)(2)按照地市......
  • P4588 [TJOI2018]数学计算
    线段树板子题。#include<iostream>#include<cstring>usingnamespacestd;#defineintlonglongconstintN=8e5+1;intmod;intq,m;namespacest{inttree[......
  • 10.18
    [COCI2021-2022#4]Autobus题目描述在一个国家里有\(n\)座城市。这些城市由\(m\)条公交线路连接,其中第\(i\)条线路从城市\(a_i\)出发,到\(b_i\)停止,路程中耗时......
  • C语言学习2--10/18
    常量: 不会变化的数据1.“hello”字符串常量,‘A’字符常量,-10整型常量,3.14浮点常量2.#definePI3.14,宏定义,推荐3.consta=10 const关键字,被该关键字......