使用 ansible facts 作为列表
Using ansible facts as lists
我正在调试一组将主机置于 Rackspace 负载平衡器中的嵌套播放。
- include create_servers.yml
...
- include add_to_load_balancers.yml
在第一个游戏中,我使用 rax_clb
模块创建服务器。我们注册变量 rax
并使用其中的 rax.success
列表将这些主机添加到 create_servers.yml:
中的组
- name: create instances on Rackspace
local_action:
module: rax
image: "{{ IMAGE }}"
flavor: "{{ FLAVOR }}"
wait: yes
count: "{{ COUNT }}"
...
register: rax
- name: some other play
local_action:
...
with_items: rax.success
- name: register rax.success as rax_servers for later use
set_fact:
rax_servers: rax.success
在另一个使用 with_items
的游戏中使用 rax.success 时,它有效。但后来当我尝试在 add_to_load_balancers.yml 中使用 rax_servers
时:
- name: place new hosts in the load balancer
rax_clb_nodes:
address={{ item.rax_accessipv4 }}
state=present
...
with_items: rax_servers
我收到一条错误消息,指出项目中没有 rax_accessipv4
。不过,我应该这样做,因为这就是我在之前的剧本中使用它的方式(并且有效)。所以我打印出 rax_servers
:
TASK: [debug var=rax_servers] *************************************************
ok: [127.0.0.1] => {
"var": {
"rax_servers": "rax.success"
}
}
我显然做错了什么,但我似乎无法从文档中找出在存储或引用此变量时我做错了什么。这两部剧都是 运行 来自本地主机,所以它应该给我相同的列表,不是吗?
感谢您对这位新手的包容,感谢您的帮助:)
应该是:
- name: register rax.success as rax_servers for later use
set_fact:
rax_servers: "{{ rax.success }}"
在这种情况下没有双括号,'rax.success' 只是一个字符串。
我正在调试一组将主机置于 Rackspace 负载平衡器中的嵌套播放。
- include create_servers.yml
...
- include add_to_load_balancers.yml
在第一个游戏中,我使用 rax_clb
模块创建服务器。我们注册变量 rax
并使用其中的 rax.success
列表将这些主机添加到 create_servers.yml:
- name: create instances on Rackspace
local_action:
module: rax
image: "{{ IMAGE }}"
flavor: "{{ FLAVOR }}"
wait: yes
count: "{{ COUNT }}"
...
register: rax
- name: some other play
local_action:
...
with_items: rax.success
- name: register rax.success as rax_servers for later use
set_fact:
rax_servers: rax.success
在另一个使用 with_items
的游戏中使用 rax.success 时,它有效。但后来当我尝试在 add_to_load_balancers.yml 中使用 rax_servers
时:
- name: place new hosts in the load balancer
rax_clb_nodes:
address={{ item.rax_accessipv4 }}
state=present
...
with_items: rax_servers
我收到一条错误消息,指出项目中没有 rax_accessipv4
。不过,我应该这样做,因为这就是我在之前的剧本中使用它的方式(并且有效)。所以我打印出 rax_servers
:
TASK: [debug var=rax_servers] *************************************************
ok: [127.0.0.1] => {
"var": {
"rax_servers": "rax.success"
}
}
我显然做错了什么,但我似乎无法从文档中找出在存储或引用此变量时我做错了什么。这两部剧都是 运行 来自本地主机,所以它应该给我相同的列表,不是吗?
感谢您对这位新手的包容,感谢您的帮助:)
应该是:
- name: register rax.success as rax_servers for later use
set_fact:
rax_servers: "{{ rax.success }}"
在这种情况下没有双括号,'rax.success' 只是一个字符串。