【发布时间】:2015-04-14 12:44:54
【问题描述】:
我正在尝试模板化 yum .repo 文件。我们有多个内部和外部 yum 存储库,我们管理的各种主机可能使用也可能不使用。
我希望能够指定任意数量的存储库以及它们将被模板化的 .repo 文件。将这些存储库分组在同一个 .repo 文件中是有意义的,因为它们具有共同的目的(例如所有 centos 存储库)
我无法确定如何结合 ansible、yaml 和 j2 来实现这一点。我尝试使用 ansible 'with_items'、'with_subelements' 和 'with_dict' 失败。
YAML 数据
yum_repo_files:
- centos:
- name: base
baseurl: http://mirror/base
- name: updates
baseurl: http://mirror/updates
- epel:
- name: epel
baseurl: http://mirror/epel
Ansible 任务
- name: create .repo files
template: src=yumrepos.j2 dest="/etc/yum.repos.d/{{ item }}.repo"
with_items: yum_repo_files
j2 模板
{% for repofile in yum_repo_files.X %} {# X being the relative index for the current repofile, e.g. centos = 0 and epel = 1 #}
{% for repo in repofile %}
name={{ repo.name }}
baseurl={{ repo.baseurl }}
{% endfor %}
{% endfor %}
【问题讨论】:
标签: jinja2 ansible ansible-playbook