我坚持使用Ansible playbook中角色中的任务变量。我的剧本如下:
- hosts: server.com
gather_facts: yes
tasks:
- set_fact:
private_ip: "{{ item }}"
with_items: "{{ ansible_all_ipv4_addresses }}"
when: "item.startswith('10.')"
- debug: var=private_ip
roles:
- role: check-server
server_ip: 10.10.0.1
client_ip: "{{ private_ip }}
当pleybook运行时-debug在变量private_ip中显示正确的IP,但是我无法使client_ip(来自角色块)获取private_ip内容。 client_ip始终未定义。
我可以在这里应用什么法术来使用client_ip = $ private_ip?
答案 0 :(得分:1)
tasks
在roles
应用后执行。
将tasks
更改为pre_tasks
。
此外,在循环中使用set_fact
不是最佳做法。如果你得到你想要的价值,那没关系,我相信你验证了它。但您应该使用(ansible_all_ipv4_addresses | select("match", "10\..*") | list)[0]
。