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

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

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

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

Q&A

1回答

19319閲覧

ansibleで変数展開を含むメッセージを表示したい

hotta

総合スコア1613

Ansible

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

0グッド

1クリップ

投稿2015/06/08 02:55

編集2015/06/09 04:37

ansibleのnameディレクティブは、変数の展開をしてくれないようです。
debugなら任意のメッセージを表示できますが、出力が冗長なのが気になります。
変数展開を含むメッセージをシンプルに表示する方法をご教示いただきたく。

【望ましい結果】
TASK: [表示テスト] *****************************

【次善策】
TASK: [XXXX] *****************************
表示テスト

【試してみた内容】(廃止)

lang

1$ cat test.yml 2--- 3- hosts: www.example.com 4 gather_facts: no 5 vars: 6 COMPLETE_MSG: 表示テスト 7 tasks: 8 - name: debug=msg を使ってみる 9 debug: msg="{{COMPLETE_MSG}} abc" 10 - name: debug=var を使ってみる 11 debug: var=COMPLETE_MSG 12 - name: 単なる name を使う {{COMPLETE_MSG}} 13 command: echo "{{COMPLETE_MSG}}"

【実行結果】(廃止)

lang

1$ ansible-playbook test.yml 2TASK: [debug=msg を使ってみる] ****************************************** 3ok: [www.example.com] => { 4 "msg": "表示テスト abc" 5} 6 7TASK: [debug=var を使ってみる] ****************************************** 8ok: [www.example.com] => { 9 "var": { 10 "COMPLETE_MSG": "表示テスト" 11 } 12} 13 14TASK: [単なる name を使う {{COMPLETE_MSG}}] ***************************** 15changed: [www.example.com]

【試してみた内容】(改訂版)

lang

1$ cat /etc/ansible/hosts 2www.example.com vhost=wp1 3 4$ cat test.yml 5--- 6- hosts: www.example.com 7 gather_facts: no 8 roles: 9 - test 10 11$ cat /etc/ansible/roles/test/tasks/main.yml 12--- 13- name: "{{vhost}} at roles/test/tasks/main.yml" 14 debug: msg={{vhost}}

【実行結果】(改訂版)

lang

1$ ansible-playbook test.yml 2TASK: [test | {{vhost}} at roles/test/tasks/main.yml] ************************* 3ok: [www.example.com] => { 4 "msg": "wp1" 5}

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

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

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

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

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

guest

回答1

0

以下で出力されると思いますが、いかがでしょうか?

- name: "{{ COMPLETE_MSG }}"

-- 追記
単体の playbook と role の場合で展開のされかたが違う?ようです。

hottaさんが試された方法 (単体の playbook) だと、確かに展開されませんでした。
私が試していたのは、role を使用した方法でしたので、その差が出てしまったようです。

以下、私が試したソースと出力を記載します。

lang

1# test.yml 2--- 3- hosts: all 4 gather_facts: no 5 roles: 6 - role: test 7 msg: メッセージ 8 9# roles/test/tasks/main.yml 10--- 11- name: "{{ msg }}" 12 debug: msg={{ msg }} 13 14# 出力 15TASK: [test | メッセージ] ************************************************ 16ok: [127.0.0.1] => { 17 "msg": "メッセージ" 18}

投稿2015/06/08 10:07

編集2015/06/08 11:08
ryunix

総合スコア1656

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

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

hotta

2015/06/08 10:47

TASK: [{{ COMPLETE_MSG }}] と出力されますが、何か間違ってますかね?(汗
ryunix

2015/06/08 10:56

ちょっと確認してみます、すいません :(
ryunix

2015/06/08 11:09

追記しました!ご確認ください :D 残念ながら、単体の playbook で name に変数を渡す方法はまだ見つかっていません...
hotta

2015/06/09 04:40

わざわざ調べて頂いて、ありがとうございました。全部は読みきれていませんが、要望が多いようなので、実装する方向で仕様策定中というところでしょうか。 ちなみに、実際に引っかかったのは上記のケースでした(書き直しました)。 質問を単純化したのが失敗だったようですm(__)m
ryunix

2015/06/09 11:06

追記いただいたソースで試してみると、確かにそうなりました! 単体の playbook と言うよりは、hosts に依存する変数かどうかなのですかね? (複数ホストがあった時に定義されているとは限らないから) GATHERING FACTS した結果なら出力できるかな?と思ったけど、これもダメでした orz
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問