はじめに
Ansibleもくもく会 2022.5にて、質疑応答を担当するメンターにて参加させていただきました。
""
で書こう意味について質問いただいたので、分かる範囲でお答えしました。その内容についてまとめます。
ディクショナリと区別するために ""
で囲う
Playbook 内で、変数の値を展開する場合
- name: debug test debug: msg: "{{ 変数名 }}"
のように、変数名を{{ }}
で囲います。この際 {
が値の先頭にくる場合は、クォーテーションで囲う必要があります。囲わないと{
をディクショナリの構文として認識してしまうためです。
この件は、公式ドキュメントに記載されています。
サンプルを引用しますと、以下のケースは ""
で囲う必要があります。
- hosts: app_servers vars: app_path: {{ base_path }}/22 # これはSyntax Error
修正後
- hosts: app_servers vars: app_path: "{{ base_path }}/22"
以下のケースは、値が {
で始まらないため、クォーテーションで囲う必要はありません。
- hosts: app_servers vars: app_path: /tmp/{{ base_path }}/22 # 問題ない
が、統一して囲うのがいいかもしれません。
- hosts: app_servers vars: app_path: "/tmp/{{ base_path }}/22" # これも問題ない