質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

1回答

1545閲覧

Ansibleの質問 include_varsでTarget側のファイルを読み込む方法

hakoritenshi

総合スコア41

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2020/08/29 14:31

編集2020/08/30 03:57

構成

【①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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/08/30 00:05

で、しつもんはなんでしょうか。
guest

回答1

0

group_vars/lvs01/hoge.yamlで静的変数として以下のように定義されているのであれば、予め「〇」のみの変数を定義すればよいかと思いましたが、いかがでしょうか?

yaml

1RHEL: 2 selinux: 3 - "selinux a:::〇" 4 - "selinux b:::×" 5 - "selinux c:::〇"

投稿2020/09/01 11:21

comefigo

総合スコア1045

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問