使用Ansible将查找变量输出到json文件

时间:2019-01-10 01:55:45

标签: json ansible lookup

我需要从ansible查找中输出多个变量(键-值对)并将它们保存到json文件中。我的json文件应如下所示:

{
  "name": "name1",
  "password": "pass1",
  "creationDate": 2019-01-01 00:44:35
}

我的ansible剧本中包含以下代码:

- hosts: localhost
  vars:
    my_variables:
      "name": "{{ lookup('env', 'name') }}",
      "password": "{{ lookup('env', 'password') }}",
      "creationDate": "{{ '%Y-%m-%d %H:%M:%S'| strftime(ansible_date_time.epoch) }}"

  tasks:
  - name: Create /tmp/{{ lookup('env', 'name') }}.json  
    file:
      name: '/tmp/{{ lookup('env', 'name') }}.json'
      state: touch
  - name: Write my_variables to /tmp/{{ lookup('env', 'name') }}.json
    copy:
      content: "{{ my_varibles | to_nice_json }}"
      dest: "/tmp/{{ lookup('env', 'name') }}.json"

我能够创建/tmp/name1.json文件。但是,我的name1.json文件看起来像这样:

{
  "name": "",
  "password": "",
  "creationDate": 2019-01-01 00:44:35
}

查找的名称和密码值丢失。

1 个答案:

答案 0 :(得分:0)

您的剧本中有错字,而我绝对不知道您的剧本是如何工作的,因为当使用该语法时,ansible 2.7和pyyaml都:fu:

- hosts: localhost
  vars:
    my_variables:
      "name": "{{ lookup('env', 'name') }}", # <-- should not end with a comma