gpt4 book ai didi

ubuntu - 如何禁用主机 : all in Ansible

转载 作者:行者123 更新时间:2023-12-04 18:37:09 24 4
gpt4 key购买 nike

我想禁用 hosts: all在 Ansible list 文件中。
有时人们忘记修改 YAML 文件中的 hosts 列,因此不小心将新配置推送到了内网中的所有主机。
我对 Ansible 很陌生,感谢任何帮助!

最佳答案

假设您要保留 hosts: all在所有剧本中,并希望通过选项 --limit 限制运行时中的主机.接下来,您要防止在所有主机上不受限制地运行 playbook。
问:如何禁用主机:全部在 Ansible 中?
答:Ansible 中没有这样的选项会禁用所有组。 all 组是自动创建的,包含 list 中的所有主机。
相反,在剧本中,您可以测试剧本是否针对所有主机,例如

shell> cat playbook.yml
- hosts: all
tasks:
- assert:
that: ansible_play_hosts_all|length < groups.all|length
fail_msg: '[ERROR] All hosts not allowed.'
run_once: true
没有东道主的限制,比赛不会继续
shell> ansible-playbook playbook.yml

...

TASK [assert] **************************************************************
fatal: [host01]: FAILED! => changed=false
assertion: ansible_play_hosts_all|length < groups.all|length
evaluated_to: false
msg: '[ERROR] All hosts not allowed.'

实现
您不必修改所有剧本。相反,创建包装器。例如,给定剧本
shell> cat playbook-509.yml
- hosts: all
tasks:
- debug:
msg: playbook-509 is running ...
创建包装器
shell> cat playbook-509-wrapper.yml
- hosts: all
gather_facts: false
tasks:
- assert:
that: ansible_play_hosts_all|length < groups.all|length
fail_msg: '[ERROR] All hosts not allowed.'
run_once: true

- import_playbook: playbook-509.yml
只允许用户运行包装器。例如,如果用户无限制地运行包装器,则播放不会运行
shell> ansible-playbook playbook-509-wrapper.yml

...

TASK [assert] ***************************************************
fatal: [host01]: FAILED! => changed=false
assertion: ansible_play_hosts_all|length < groups.all|length
evaluated_to: false
msg: '[ERROR] All hosts not allowed.'
如果主机有限,该剧将运行
shell> ansible-playbook playbook-509-wrapper.yml --limit host01

PLAY [all] *****************************************************

TASK [assert] **************************************************
ok: [host01] => changed=false
msg: All assertions passed

PLAY [all] *****************************************************

TASK [debug] ***************************************************
ok: [host01] =>
msg: playbook-509 is running ...
您可以使用 Ansible 自动创建包装器。

关于ubuntu - 如何禁用主机 : all in Ansible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70819513/

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