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

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

ただいまの
回答率

90.49%

  • Ansible

    154questions

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

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

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 7,493

hotta

score 1513

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

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

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

【試してみた内容】(廃止)
$ cat test.yml
---
- hosts: www.example.com
  gather_facts: no
  vars:
    COMPLETE_MSG: 表示テスト
  tasks:
  - name: debug=msg を使ってみる
    debug: msg="{{COMPLETE_MSG}} abc"
  - name: debug=var を使ってみる
    debug: var=COMPLETE_MSG
  - name: 単なる name を使う {{COMPLETE_MSG}}
    command: echo "{{COMPLETE_MSG}}"
【実行結果】(廃止)
$ ansible-playbook test.yml
TASK: [debug=msg を使ってみる] ******************************************
ok: [www.example.com] => {
    "msg": "表示テスト abc"
}

TASK: [debug=var を使ってみる] ******************************************
ok: [www.example.com] => {
    "var": {
        "COMPLETE_MSG": "表示テスト"
    }
}

TASK: [単なる name を使う {{COMPLETE_MSG}}] *****************************
changed: [www.example.com]

【試してみた内容】(改訂版)
$ cat /etc/ansible/hosts
www.example.com vhost=wp1

$ cat test.yml
---
- hosts: www.example.com
  gather_facts: no
  roles:
    - test

$ cat /etc/ansible/roles/test/tasks/main.yml
---
- name: "{{vhost}} at roles/test/tasks/main.yml"
  debug: msg={{vhost}}
【実行結果】(改訂版)
$ ansible-playbook test.yml
TASK: [test | {{vhost}} at roles/test/tasks/main.yml] *************************
ok: [www.example.com] => {
    "msg": "wp1"
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+2

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

- name: "{{ COMPLETE_MSG }}"

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

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

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

# test.yml
---
- hosts: all
  gather_facts: no
  roles:
    - role: test
      msg: メッセージ

# roles/test/tasks/main.yml
---
- name: "{{ msg }}"
  debug: msg={{ msg }}

# 出力
TASK: [test | メッセージ] ************************************************
ok: [127.0.0.1] => {
    "msg": "メッセージ"
}


投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/08 19:47

    TASK: [{{ COMPLETE_MSG }}]

    と出力されますが、何か間違ってますかね?(汗

    キャンセル

  • 2015/06/08 19:56

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

    キャンセル

  • 2015/06/08 20:09

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

    キャンセル

  • 2015/06/08 20:19

    変数が展開されない件については、以下に書かれていました。
    https://github.com/ansible/ansible/issues/3103

    キャンセル

  • 2015/06/09 13:40

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

    キャンセル

  • 2015/06/09 20:06

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

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • Ansible

    154questions

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