- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下任务:
- name: copy server.xml
template: src=server.xml dest=/var/containers/{{ item.key }}/conf
with_dict: containers
containers:
frontend:
http_port: 8080
backend:
http_port: 8081
<Connector port="{{ http_port }}" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
最佳答案
使用 {{ item.value.http_port }}
是完全正确的解决方案。
当您传递 with_dict 时,它会循环通过将容器字典中的每个项目作为 {{ item }}
传递的任务。 ,其中项目有一个键和字典项目包含的任何值 - 在你的情况下,键/值对,其中键是 http_port 并且值是这两个不同的整数 - 但是你可以传递非常复杂的嵌套字典,它会得到更多使用 {{ item.value.http_port }}
访问内容很重要你想出的语法。
当您使用更复杂的模板时要警惕的是,当您有一些额外的变量要为一个主机(或容器或其他)模板而不是另一个主机时,如何混合并设置默认值并使用 if 语句。
要掌握它,请阅读 Jinja2,Ansible 解释模板的语言。一个很好的例子是在前端通过 SSL 提供文件,而不是后端。使用类似 {{ foo | default('bar') }}
的语法避免 Ansible 因您尝试使用 undefined variable 和 if 语句而生气,以确保您只是在模板化您需要的东西。
一个粗略的草图 - 假设你有:
containers:
frontend:
http_port: 8080
https_port: 8443
ssl_cert: ./files/keystore
ssl_pass: "{{ vaulted_vars.ssl_pass }}"
backend:
http_port: 8081
<Connector port="{{ item.value.http_port }}" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="{{ item.value.https_port | default('8443')" />
{% if item.value.ssl_cert is defined %}
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore" keystorePass="{{ item.value.ssl_pass }}"
clientAuth="false" sslProtocol="TLS"/>
{% endif %}
关于Ansible with_dict 模板使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26020465/
我有以下任务: - name: copy server.xml template: src=server.xml dest=/var/containers/{{ item.key }}/conf
我知道这个问题之前已经被问过很多次了,但我一定在这里遗漏了一些东西! 这是重现问题的最小剧本。 这是剧本: --- - hosts: - localhost gather_facts: f
我正在尝试为接口(interface)变量动态提供字典名称。 我的 ansible 任务看起来像这样。 - name: Setting interface list set_fact: o
我有我想要迭代的字典类型的数据,保持顺序很重要: with_dict_test: one: 1 two: 2 three: 3 four: 4 five: 5 si
如何引用一个注册值的字典元素。 我的 Ansible 剧本如下所示: - command: echo {{ item }} with_dict: - foo - bar -
我正在尝试在任务循环中将多个词典输入 with_dict。 vars/users.yml 文件 --- server_admins: admin1: comment="Dark Helmet" u
我想更新 INI 配置文件。 今天,我以这种方式将我的信息存储在一个 var 文件中(在 group_vars 中): # Identity configuration information ide
我正在尝试像这样循环哈希和与其关联的数组: 变量: dictionary: aword: [ ant, den ] bword: [ fat, slim ] 任务: name: C
环境为:Ansible 1.9.2、CentOS 6.5 我创建了一个角色来从 Artifactory 下载 3 个不同 JAVA 版本的 JAVA (.tar.gz) 工件文件。我正在尝试使用 An
我是一名优秀的程序员,十分优秀!