Взять переменную ansible в качестве json одного вкладыша? - PullRequest
1 голос
/ 25 марта 2020

Я хотел бы заполнить файл конфигурации, используя Ansible и модуль шаблона. Я получу полезную нагрузку json из другой системы как один вкладыш в этом формате ..

[
    {
        "customer": "customer_name",
        "license_type": "eval",
        "customFields": {
            "test": 1234
        }
    },
    {
        "customer": "customer_name",
        "license_type": "eval",
        "customFields": {
            "test": 123
        }
    }
]

Сжатый как один вкладыш:

[ { "customer": "customer_name", "license_type": "eval", "customFields": { "test": 1234 } }, { "customer": "customer_name", "license_type": "eval", "customFields": { "test": 123 } } ]

В моем ansible Я установил переменную (whole_li c), которая будет всей этой строкой, а затем в модуле шаблона у меня есть шаблон с именем license.conf с:

{{ entire_lic }}

Это работает, однако он не очень хорошо напечатан для чтения json. Могу ли я это сделать? Я пытался

{{ entire_lic | to_nice_json }}

, но это не похоже на работу. Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 25 марта 2020

Q: "Это не очень хорошо напечатано, чтобы хорошо читалось JSON. Есть ли способ, которым я могу это сделать?"

A: Playbook ниже делает работу

shell> cat play.yml
- hosts: localhost
  vars:
    entire_lic: [{"customer": "customer_name", "license_type": "eval", "customFields": {"test": 1234}}, {"customer": "customer_name", "license_type": "eval", "customFields": {"test": 123}}]
  tasks:
    - debug:
        var: entire_lic
    - template:
        src: license.conf.j2
        dest: license.conf
shell> cat license.conf.j2 
{{ entire_lic | to_nice_json }}

дает

PLAY [localhost] ***

TASK [debug] ***
ok: [localhost] => {
    "entire_lic": [
        {
            "customFields": {
                "test": 1234
            }, 
            "customer": "customer_name", 
            "license_type": "eval"
        }, 
        {
            "customFields": {
                "test": 123
            }, 
            "customer": "customer_name", 
            "license_type": "eval"
        }
    ]
}

TASK [template] ***
changed: [localhost]

PLAY RECAP ***
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
shell> cat license.conf
[
    {
        "customFields": {
            "test": 1234
        },
        "customer": "customer_name",
        "license_type": "eval"
    },
    {
        "customFields": {
            "test": 123
        },
        "customer": "customer_name",
        "license_type": "eval"
    }
]
...