ser*_*eda 5 ansible ansible-playbook
我有许多带有名称的列表,它们是通过附加ec2_public_dns_name到seeds_
像这样: seeds_ec2-50-8-1-43.us-west-1.compute.amazonaws.com
我需要在每个主机的配置中访问它的列表并循环遍历它。我尝试这样做:
在剧本中分配给新变量:
- name: Seeds provision
set_fact:
seeds: "seeds_{{ec2_public_dns_name}}"
Run Code Online (Sandbox Code Playgroud)
而不是在配置中使用它:
{% for seed in seeds %}
{{seed.name ~ ","}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但似乎seeds在配置文件中只是文本,我无法访问列表元素。如何才能做到这一点?
小智 1
任务:
- set_fact:
seeds: "seeds_{{ec2_public_dns_name}}
Run Code Online (Sandbox Code Playgroud)
创建seeds值为 的文本变量seeds_ec2-50-8-1-43.us-west-1.compute.amazonaws.com。
如果您想seeds成为要迭代的列表,则需要添加seeds_{{ec2_public_dns_name}}到seeds列表:
- set_fact:
seeds: [] # define seeds as empty list
- set_fact:
seeds: "{{seeds + ['seeds_' + ec2_public_dns_name]}}"
Run Code Online (Sandbox Code Playgroud)
但这将向数组添加seeds一个元素。您可能拥有ec2_public_dns_names主机的公共 DNS 值列表:
ec2_public_dns_names:
- ec2-50-8-1-43.us-west-1.compute.amazonaws.com
- ec2-50-8-2-43.us-west-1.compute.amazonaws.com
- ...
Run Code Online (Sandbox Code Playgroud)
有了这样的列表,您可以通过以下任务创建种子列表:
- set_fact:
seeds: "{{seeds + ['seeds_' + item]}}"
with_items: "{{ec2_public_dns_names}}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |