Ansible角色任务委派

时间:2018-08-14 22:27:01

标签: ansible

给出以下清单/角色/剧本示例,如何将角色中的任务委派给localhost并使其打印该角色在其上执行的节点的IP地址?

需要明确的是,在这种情况下,我想要的输出是app1的IP地址。但是,我希望localhost打印该IP地址。我不希望在app1节点上运行打印任务。

## inventory
[app_nodes]
app1
app2

## Role: foobar/main.yml
task:
    debug:
        msg: {{ansible_default_ipv4.address}}
    delegate_to: localhost

## playbook
hosts: app_nodes
roles:
    - { role: foobar }

1 个答案:

答案 0 :(得分:0)

答案是结合使用host_vars魔术变量和inventory_hostname

## inventory
[app_nodes]
app1
app2

## Role: foobar/main.yml
task:
    debug:
        msg: {{host_vars[inventory_hostname]['ansible_facts']['default_ipv4_address']}}
    delegate_to: localhost

## playbook
hosts: app_nodes
roles:
    - { role: foobar }

在运行时,这将输出app1和app2的IP地址。