ansible-delegate_to

本文最后更新于 2025年8月5日 下午

delegate_to是ansible的委派主机,使用委派主机需要注意上下问变量不会切换

1
2
3
4
5
6
7
8
9
10
11
12
13
[hosts]
node1 ansible_host=xxxxx work_dir=root_dir_1
node2 ansible_host=xxxx work_dir=root_dir_2

[work1]
node1

[work2]
node2

[hosts:vars]
ansible_ssh_user=root
ansible_ssh_pass=xxxxx
1
2
3
4
5
6
7
8
9
10
11
12
13
- hosts: node1
gather_facts: false
tasks:
- name: show context
debug:
msg:
- "ansible_delegated_vars: {{ ansible_delegated_vars.keys() | list }}"
- "ansible_play_hosts: {{ ansible_play_hosts }}"
- "inventory_hostname={{ inventory_hostname }}"
- "work_dir={{ work_dir }}"
- "origin work_dir={{ hostvars[inventory_hostname].work_dir }}"
- "delegate work_dir = {{ hostvars[ansible_delegated_vars | first].work_dir }}"
delegate_to: node2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PLAY [node1] ******************************************************************************************************************************************************************************************

TASK [show context] ***********************************************************************************************************************************************************************************
ok: [node1 -> node2(172.17.139.121)] => {
"msg": [
"ansible_delegated_vars: ['node2']",
"ansible_play_hosts: ['node1']",
"work_dir=root_dir_1",
"inventory_hostname=node1",
"origin work_dir=root_dir_1",
"delegate work_dir = root_dir_2"
]
}

PLAY RECAP ********************************************************************************************************************************************************************************************
node1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

需要使用委派主机上下文,可以使用hostvars[ansible_delegated_vars | first]或单独设置vars和set_fact


ansible-delegate_to
https://blog.cook369.xyz/2025/08/05/ansible-delegate-to/
作者
likp
发布于
2025年8月5日
更新于
2025年8月5日
许可协议