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

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

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

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

受付中

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

hotta
hotta

総合スコア1610

Ansible

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

1回答

0グッド

1クリップ

17449閲覧

投稿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}

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

2

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

- 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

総合スコア1654

argius, ngyuki👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

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

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ansible

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