gpt4 book ai didi

ansible - 为什么 Ansible 会忽略 delegate_to 参数?

转载 作者:行者123 更新时间:2023-12-02 00:41:39 26 4
gpt4 key购买 nike

我有一个非常简单的剧本:

- hosts: test
gather_facts: no

tasks:
- name: debug
debug: msg="{{ inventory_hostname }}"
run_once: yes
delegate_to: "host2"

和 list 文件:

host1 ansible_ssh_host="1.2.3.4"
host2 ansible_ssh_host="1.2.3.5"

[test]
host1
host2

播放结果:

TASK [debug] *************************************************************************************************************************************************************************
ok: [host1 -> host2] => {
"changed": false,
"msg": "host1"
}

为了完整起见,无论我向 delegate_to 添加什么,即使是一些随机字符串,结果始终是 "msg": "host1"

如何正确地将此任务委派给 groups.test.1 或任何其他主机?

编辑:

- hosts: test
gather_facts: no

tasks:
- name: 1
shell: "hostname -f"
run_once: yes
delegate_to: "host2"
register: result

- name: debug
debug: msg="{{ ansible_host }} {{ inventory_hostname }} {{ result.stdout }}"
run_once: yes

播放输出:

TASK [command] ***************************************************************************************************************************************************************************************
changed: [host1 -> None]

TASK [debug] *****************************************************************************************************************************************************************************************
ok: [host1] => {
"msg": "1.2.3.4 host1 host2"
}

Ansible 2.3.x

Ansible 2.4.0

最佳答案

inventory_hostname 在您使用 delegate_to 以允许您“跟踪”您所处的环境时不会改变,但其他变量会改变。

你可以测试:

- name: debug
debug: msg="{{ inventory_hostname }} {{ ansible_host }}"
run_once: yes
delegate_to: "host2"

你应该得到:host1 1.2.3.5

关于ansible - 为什么 Ansible 会忽略 delegate_to 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46326978/

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