金鱼哥RHCA回忆录:DO447协调滚动更新--委派任务和事实

举报
金鱼哥 发表于 2022/06/17 17:26:01 2022/06/17
【摘要】 第五章 协调滚动更新--委派任务和事实

🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥


官网: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门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

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

💾红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。