構成
【①Server01】 ⇒ 【②lvs01】
①:Ansible Controller
②:Ansible Target
前提・実現したいこと
1.group_varsで変数を読み込む
2.値の「〇」がついている値のみ、抜き出して作成。セパレータは「:::」
RHEL: selinux: - "selinux a:::〇" - "selinux b:::×" - "selinux c:::〇"
↓(抜き出したい)
RHEL: selinux: - "selinux a" - "selinux c"
3.yaml再読み込みして変数上書き
RHEL: selinux: - "selinux a" - "selinux c"
4.ファイル出力
selinux a selinux b
試したこと
00_tst.yaml
playbook
1--- 2- name: tst 3 hosts: lvs01 4 become: true 5 roles: 6 - 00_tst
roles/00_tst/tasks/main.yml
role
1#------------------------------------------# 2# 2.値の「〇」がついている値のみ、抜き出して作成。セパレータは「:::」 3#------------------------------------------# 4- name: generate Apache vhost config file 5 template: 6 src: template/vars.j2 7 dest: /var/tmp/vars.conf 8 9#------------------------------------------# 10# 3.yaml再読み込みして変数上書き 11#------------------------------------------# 12- name: include template_role 13 include_vars: /var/tmp/vars.conf 14 15#------------------------------------------# 16# 4.ファイル出力 17#------------------------------------------# 18- name: generate Apache vhost config file 19 template: 20 src: template/vhost.conf.j2 21 dest
group_vars/lvs01/hoge.yaml
vars
1RHEL: 2 selinux: 3 - "selinux a:::〇" 4 - "selinux b:::×" 5 - "selinux c:::〇"
roles/00_tst/template/vars.j2
template
1RHEL: 2 selinux: 3{% for var in RHEL.selinux %} 4{% if var.split(':::')[1] == '〇' %} 5 - {{ var.split(':::')[0] }} 6{% endif %} 7{% endfor %}
roles/00_tst/template/file.j2
template
1{% for var in RHEL.selinux %} 2{{ var }} 3{% endfor %}
出来ていないこと①
以下は解決しました。
2.値の「〇」がついている値のみ、抜き出して作成。セパレータは「:::」
セパレータ「:::」で分割して、2番目の値が「〇」以外だったら、次のループに行くことの記載方法
roles/00_tst/template/vars.j2
template
1RHEL: 2 selinux: 3{% for var in RHEL.selinux %} 4{% if var.split(':::')[1] == '〇' %} 5 - {{ var.split(':::')[0] }} 6{% endif %} 7{% endfor %}
出来ていないこと②
3.yaml再読み込みして変数上書き
includeで読み込もうとしましたが、includeはAnsible Controller側のファイルを読み込もうとしてしまいます。
Ansible Target側に作成した、yamlを読み込む方法
role
1#------------------------------------------# 2# 3.yaml再読み込みして変数上書き 3#------------------------------------------# 4- name: include template_role 5 include_vars: /var/tmp/vars.conf
で、しつもんはなんでしょうか。