Ansible 入れ子になってる変数と変数を合体させて、変数と認識させる方法
やりたいこと
タイトルでちょっとアレですが。。やりたいこととしてはインベントリに定義された変数を組み合わせたパターンから、varsのから呼び出す値を変えたい!ってことです。
こんな感じで。。
[インベントリ]
head=an #head変数には、ユーザー次第でanだったりteが入ったりする
tail=sible #tail変数には、ユーザー次第でsibleだったりstが入ったりする
[vars]
ansible:
ansible: success!!! #head変数の値が`an`で、tail変数`sible`が定義された場合に出力したい
test: test!!! #head変数の値が`te`で、tail変数`st`が定義された場合に出力したい
head変数とtail変数を合体させてansible
になればsuccess!!!
test
になればtest!!!
を出力したいという感じです。
実現方法
playbookのリスト内の変数を[]で括ります。これだけ。
今回は変数で定義された値を出力するだけのplaybookです。
[playbook]
---
- name: ansible変数合体
debug:
msg: "{{ ansible[head + tail] }}"
結果
インベントリのhead変数の値がan
で、tail変数にsible
が定義された場合の記載と出力結果が下記です。success!!!が出力されます。
[インベントリ]
head=an
tail=sible
[出力結果]
PLAY [all] ******************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************
ok: [test1]
TASK [var_practice : ansible変数合体] *******************************************************************************************************
ok: [test1] => {
"msg": "success!!!"
}
PLAY RECAP ******************************************************************************************************************************
test1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
インベントリのhead変数の値がte
で、tail変数にst
が定義された場合の出力結果が下記です。test!!!が出力されています。
[インベントリ]
head=te
tail=st
[出力結果]
PLAY [all] ******************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************
ok: [test1]
TASK [var_practice : ansible変数合体] *******************************************************************************************************
ok: [test1] => {
"msg": "test!!!"
}
PLAY RECAP ******************************************************************************************************************************
test1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
おまけ
変数と変数の間に_
とかの文字列があっても出来ます。
文字列は""で括るんですが、ダブルクオーテーションを\
の前に入れます。
playbookの記述以外は変わりません。
[playbook]
- name: ansible変数合体
debug:
msg: "{{ ansible[head + \"_\" + tail] }}"
これでOK。
最後に
変数の呼び方とか用語があんまり知らないので、
使い方間違ってたりしたら指摘もらえると有難いです。
全く大した量では無いですが、GitHubに上げているので参考にしたい方はどうぞ。
tasksフォルダとvarsフォルダ以外使ってませんが。。
Author And Source
この問題について(Ansible 入れ子になってる変数と変数を合体させて、変数と認識させる方法), 我々は、より多くの情報をここで見つけました https://qiita.com/atsushi586/items/0731157c32bffd61366f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .