問題タブ [ansible-template]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ansible - ansible テンプレート用に var が定義されている場合の短いバージョン
Ansible テンプレートの Jinja2 では、テンプレートでこのタイプの式を使用できます。
等
「変数が定義されていない場合、この行を印刷しない」という短いバージョンはありますか?
foo_bar = {{foobar|skip_this_line_if_undefined}} のようなものですか?
ansible - Ansible: 現在のターゲット ホストの IP アドレスを取得する
ロール内の現在のホストの IP アドレスを取得するにはどうすればよいですか?
ホストがメンバーであるグループのリストとホストのホスト名を取得できることは知っていますが、IP アドレスを取得するための解決策が見つかりません。
を使用してホスト名を取得し、を使用{{inventory_hostname}}
してグループを取得できます{{group_names}}
{{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
私は次のようなことを試しましたip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
ansible - Ansible Jinja2 文字列比較
次のような group_vars で定義された変数を使用して、Jinja2 テンプレート ファイルの変数「env」の値を取得しています。
env
可能な 3 つの値はabc
、、、def
ですxyz
。
この値に基づいて、可能な値を次のように定義したサーバー URL を使用したいと思いますdefaults/main.yml
。
Jinja2 テンプレートで、私はやろうとしています:
ただし、 、またはの値が付いていServerURL = "server URL not found"
ても、常に定義されてしまいます。env
abc
def
xyz
以下の条件のように、Jinja2 テンプレート (ハードコード) の env を置き換えようとすると、true になります。
つまり、構文は true ですが、"{{env}}"
実行時の値は評価されません。
これを解決するために何ができますか?
ansible - Ansibleに変数ファイルを含める方法は?
次のプレイブックがあります。
そして、次の Jinja テンプレート:
プレイブックを実行すると、次のエラーが表示されます。
AnsibleError: 文字列のテンプレート化中にテンプレート エラーが発生しました: トークン 'end of print statement' が予期され、'main_body' が取得されました。
Jinjaにファイルを含めるように指示する方法、その名前は以前に定義された事実に保存されていますか?
ansible - 「hostvars」を介してロールのデフォルト値を使用する方法
これに触発された役割を作成しようとしています: ansible-cassandra。
このロールには、 variable のデフォルト値がありますcassandra_network_iface
。
そして、それを介してそれを使用するテンプレートファイルcassandra.yaml.j2hostvars
:
このテンプレート ファイルをタスクで使用すると、次のようになります。
このエラーがあります:
問題は、変数cassandra_network_iface
がスコープに定義されていないことですhostvars[host]
(デバッグタスクで確認しました)。それ以外の場合は、変数を直接使用できます。
cassandra_network_iface
私の質問:を通じて変数に到達する方法はありますhostvars
か?
注:ansible 2.1および2.2で試しました