DO447协调滚动更新--委派任务和事实

DO447协调滚动更新–委派任务和事实

RHCSA专栏:戏说 RHCSA 认证

RHCE专栏:戏说 RHCE 认证

此文章(第五章 协调滚动更新–委派任务和事实 )收录在RHCA专栏:RHCA 回忆录


官网: https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html

📜5.1.1 委派任务

有时,当Ansible运行一个play以确保系统的正确配置时,它可能需要代表托管主机在不同的系统上执行一个或多个任务。例如,您可能需要登录网络设备来更改DHCP配置,或确保Active Directory域中存在某些组,或使用被管理主机上不可用的工具与服务的APl通信。

在play中,可以将任务委派到另一个主机上运行,而不是当前托管主机上。

任务使用delegate_to指令将操作委托给主机。这个指令将Ansible指向将在相应的目标位置执行任务的主机。

委派任务最常见的地方之一是localhost,即Ansible控制节点。例如,如果您需要与某个服务的API进行通信,但由于某些原因无法从托管主机访问该服务,但可以从控制节点访问该服务,则可以这样做。

下面是一个简单的示例,在剧中的每台主机上执行uname -a命令,然后在localhost上代表剧本中的每台主机执行uname -a命令。

image-20220417121425059

在下面的实际示例中,第一个任务依次委托给Ansible组lbservers中的每个HAProxy负载均衡器,从所有负载均衡器中删除托管主机。

然后,没有委托的第二个任务将停止托管主机上的web服务器。此任务在剧中的每个主机上运行。

image-20220417124634543


📜5.1.2 委派事实

在前面的例子中,使用了事实ansible_facts[‘fgdn’]。使用被管理主机的FQDN,而不是localhost。

当您删除一个任务时,使用运行该任务的托管主机(当前的inventory_hostname)的主机变量和事实。因此,如果任务正在为服务器运行,但已委托给localhost,则为服务器使用变量和事实。这通常就是你想要的。

但是,有时您可能希望将委托任务收集到的事实分配给任务被委托给的主机。要更改此设置,请将delegate_facts指令设置为true

image-20220417124706864

前面的play是针对localhost运行的,但是第一个任务是委托给servera.lab.example.com。在该任务上使用delegate_facts指令指示Ansible将事实收集到hostvars[‘servera.lab.example.com’]的命名空间,而不是为当前托管主机的默认hostvars[‘localhost’]命名空间。


📜5.1.3 课本练习

[student@workstation ~]$ lab update-delegation start
[student@workstation ~]$ cd git-repos/
📑拉取实验代码
[student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/update-delegation.git
[student@workstation update-delegation]$ cd update-delegation
📑按要求编写剧本
[student@workstation update-delegation]$ vim query_times.yml
---
- name: Query server times and store them locally
  hosts: web_servers
  gather_facts: false

  tasks:
    - name: Take time on server
      shell: 'date'
      register: date
      changed_when: no

    - name: Save times to localhost
      vars:
        record: "{{ inventory_hostname }} time: {{ date.stdout_lines[0] }}"
      shell: "echo '{{ record }}' >> /tmp/times.txt"
      delegate_to: localhost
📑执行剧本并验证
[student@workstation update-delegation]$ ansible-playbook query_times.yml
[student@workstation update-delegation]$ cat /tmp/times.txt 
servera.lab.example.com time: Tue May  4 19:49:04 CST 2021
serverb.lab.example.com time: mar may  4 19:49:04 CST 2021
serverd.lab.example.com time: Tue May  4 19:49:04 CST 2021
servere.lab.example.com time: Tue May  4 19:49:04 CST 2021
serverc.lab.example.com time: Tue May  4 19:49:04 CST 2021
serverf.lab.example.com time: Tue May  4 19:49:05 CST 2021
📑清除实验
[student@workstation update-delegation]$ lab update-delegation finish

💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第五章 协调滚动更新–委派任务和事实 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT民工金鱼哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值