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

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

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

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ansible

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

解決済

set_factモジュールで定義した変数を後続のタスクで個別に指定して呼び出したい

riho456
riho1128

総合スコア17

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ansible

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

2回答

0リアクション

0クリップ

389閲覧

投稿2022/08/31 07:29

編集2022/09/01 00:17

※エラーメッセージの記述を間違えていた為、修正しました。

いつも助けて頂いてありがとうございます。下記を実現する方法がもしあれば教えて頂けると助かります。自身も本当に出来るのかわからず探りながらやってます。

実現したいこと

・パラメータ情報が記載された外部ファイル(json)を読み込み、jinja2テンプレートに入れた(入れて加工したいのですが、加工の内容はまだ決めてません)後
後続のタスクでパラメータを個別に指定して呼び出し使用したい。
・上記を一枚のPlaybookで完結させたい。
・"{{ 変数名.パラメータ値 }}"という形で呼び出したいけど、他の形でも方法があるのか知りたい。

該当のソースコード

test.yml

- hosts: fortigates collections: - fortinet.fortios connection: httpapi vars: ansible_httpapi_use_ssl: yes ansible_httpapi_validate_certs: no ansible_httpapi_port: 443 test1: "{{ lookup('file', '/srv/data/parameter.json') }}" test2: "{{ lookup('template', '/srv/data/parameter.j2', template_vars=test1) }}" tasks: - name: set_factest set_fact: parameter: "{{ test2 }}" - name: debug debug: msg: "{{ parameter }}" - name: system_global fortios_system_global: system_global: language: "{{ parameter.language }}" ------------------------------------------------------------------------------------------------------- ■parameter.json { "timezone": "60", "hostname": "FGT60FTK21035539", "language": "japanese" } ■parameter.j2 { "timezone": "{{ timezone }}", "hostname": "{{ hostname }}", "language": "{{ language }}" } ------------------------------------------------------------------------------------------------------- ■実行結果&エラーメッセージ TASK 2/3 [set_factest] *********************************************************************************************************** task path: /etc/ansible/fortigate/test/template/test.yml:12 redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi ok: 1/1 [ansible_host=192.168.1.1] => { "ansible_facts": { "parameter": { "hostname": "FGT60FTK21035539", "language": "japanese", "timezone": "60" } }, "changed": false } TASK 3/3 [debug] ***************************************************************************************************************** task path: /etc/ansible/fortigate/test/template/test.yml:15 redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi ok: 1/1 [ansible_host=192.168.1.1] => { "msg": "japanese" } TASK 4/3 [system_global] ********************************************************************************************************* task path: /etc/ansible/fortigate/test/template/test.yml:18 redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi <ansible_host=192.168.1.1> ESTABLISH LOCAL CONNECTION FOR USER: root <ansible_host=192.168.1.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-2547325cxuhn6 `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319 `" && echo ansible-tmp-1661990706.1743524-25588-27745780406319="` echo /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319 `" ) && sleep 0' Using module file /root/.ansible/collections/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py <ansible_host=192.168.1.1> PUT /root/.ansible/tmp/ansible-local-2547325cxuhn6/tmpxygvkwnr TO /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py <ansible_host=192.168.1.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/ /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py && sleep 0' <ansible_host=192.168.1.1> EXEC /bin/sh -c '/usr/bin/python3 /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py && sleep 0' <ansible_host=192.168.1.1> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/ > /dev/null 2>&1 && sleep 0' The full traceback is: Traceback (most recent call last): File "/root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py", line 100, in <module> _ansiballz_main() File "/root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py", line 92, in _ansiballz_main invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS) File "/root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py", line 41, in invoke_module run_name='__main__', alter_sys=True) File "/usr/lib64/python3.6/runpy.py", line 205, in run_module return _run_module_code(code, init_globals, run_name, mod_spec) File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code mod_name, mod_spec, pkg_name, script_name) File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py", line 15222, in <module> File "/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py", line 15199, in main File "/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/fortios.py", line 216, in check_schema_versioning File "/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible/module_utils/connection.py", line 200, in __rpc__ ansible.module_utils.connection.ConnectionError: Method not found fatal: 1/1 [ansible_host=192.168.1.1]: FAILED! => { "changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py\", line 100, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py\", line 92, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-local-2547325cxuhn6/ansible-tmp-1661990706.1743524-25588-27745780406319/AnsiballZ_fortios_system_global.py\", line 41, in invoke_module\n run_name='__main__', alter_sys=True)\n File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py\", line 15222, in <module>\n File \"/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py\", line 15199, in main\n File \"/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/fortios.py\", line 216, in check_schema_versioning\n File \"/tmp/ansible_fortios_system_global_payload_j54iq53b/ansible_fortios_system_global_payload.zip/ansible/module_utils/connection.py\", line 200, in __rpc__\nansible.module_utils.connection.ConnectionError: Method not found\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1 } PLAY RECAP *********************************************************************************************************************** ansible_host=192.168.1.1 : ok=3 changed=0 unreachable=0 failed=1 rescued=0 ignored=0

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

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

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

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

2022/08/31 07:39依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「広告と受け取られるような質問」という指摘を受けました。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ansible

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