web-dev-qa-db-ja.com

ansibleを使用してjsonファイルを読み取る方法

私のansibleスクリプトがあるディレクトリと同じディレクトリにjsonファイルがあります。 jsonファイルの内容は次のとおりです。

{ "resources":[
           {"name":"package1", "downloadURL":"path-to-file1" },
           {"name":"package2", "downloadURL": "path-to-file2"}
   ]
}

Get_urlを使用してこれらのパッケージをダウンロードしようとしています。アプローチは次のとおりです。

---
- hosts: localhost
  vars:
    package_dir: "/var/opt/"
    version_file: "{{lookup('file','/home/shasha/devOps/tests/packageFile.json')}}"

  tasks:
    - name: Printing the file.
      debug: msg="{{version_file}}"

    - name: Downloading the packages.
      get_url: url="{{item.downloadURL}}" dest="{{package_dir}}" mode=0777
      with_items: version_file.resources

最初のタスクはファイルの内容を正しく印刷することですが、2番目のタスクでは次のエラーが表示されます。

[DEPRECATION WARNING]: Skipping task due to undefined attribute, in the future this
will be a fatal error.. This feature will be removed in a future release. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
16
Shasha99

ルックアップ後にfrom_json jinja2フィルターを追加する必要があります。

version_file: "{{ lookup('file','/home/shasha/devOps/tests/packageFile.json') | from_json }}"
22

JSON形式のテキストを読み取って変数として保存する必要がある場合は、 include_vars

- hosts: localhost
  tasks:
    - include_vars:
        file: variable-file.json
        name: variable

    - debug: var=variable
7
Akif