gpt4 book ai didi

Ansible Playbook 在多个播放 playbook 文件上跳过一些播放

转载 作者:行者123 更新时间:2023-12-05 05:21:18 26 4
gpt4 key购买 nike

我有一个包含 3 个剧本的 ansible 剧本 YAML 文件。

第一个播放和第三个播放在本地主机上运行,​​但第二个播放在远程计算机上运行,​​如下例所示:

- name: Play1
hosts: localhost
connection: local
gather_facts: false
tasks:
- ... task here

- name: Play2
hosts: remote_host
tasks:
- ... task here

- name: Play3
hosts: localhost
connection: local
gather_facts: false
tasks:
- ... task here

我发现,在第一次运行时,Ansible Playbook 会执行 Play1Play3 并跳过 Play2。然后,我尝试再次运行,它正确地执行了所有这些。

这里有什么问题吗?

最佳答案

问题是,在 Play2,我使用 ec2 inventor 像 tag_Name_my_machine 但这个实例还没有创建,因为它会在 Play1 的任务。

Play1 完成后,它将运行 Play2 但未找到主机,因此它会静默跳过此播放。

解决方案是创建动态发明者并在Play1的任务中手动注册:

剧本可能看起来像这样:

- name: Play1
hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Launch new ec2 instance
register: ec2
ec2: ...
- name: create dynamic group
add_host:
name: "{{ ec2.instances[0].private_ip }}"
group: host_dynamic_lastec2_created

- name: Play2
user: ...
hosts: host_dynamic_lastec2_created
become: yes
become_method: sudo
become_user: root
tasks:
- name: do something
shell: ...

- name: Play3
hosts: localhost
connection: local
gather_facts: false
tasks:
- ... task here

关于Ansible Playbook 在多个播放 playbook 文件上跳过一些播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43137119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com