Использовать шаблон jinja в имени свойства json с Ansible - PullRequest
0 голосов
/ 20 марта 2019

Я не могу найти следующий шаблон:

- debug: 
msg: {"registries":{"{{docker_registry.url}}":{"username":"{{docker_registry.user}}","password":"{{docker_registry.password}}"}}}

Ansible автоматически обнаруживает json и не вводит значение {{docker_registry.url}}:

"msg": {"registries": {"{{docker_registry.url}}": {"password": "arGgyprRu8R3nu7JBIki", "username": "autom"}}}

Помещение в кавычки дает ошибку "не сериализуемо".Я добавляю обратную косую черту, обратная косая черта - это обратная косая черта.

Любая идея, чтобы шаблонизировать это или игнорировать сериализацию JSON?

1 Ответ

2 голосов
/ 20 марта 2019

Цитирование, кажется, работает просто отлично:

- hosts: localhost
  gather_facts: false
  vars:
    docker_registry:
      url: http://foo.com
      user: alice
      password: secret
  tasks:
    - debug:
        msg: '{"registries":{"{{docker_registry.url}}":{"username":"{{docker_registry.user}}", "password":"{{docker_registry.password}}"}}}'

Это выводит:

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": {
        "registries": {
            "http://foo.com": {
                "password": "secret",
                "username": "alice"
            }
        }
    }
}

Я бы, наверное, процитировал это так, чтобы сделать его более читабельным:

    - debug:
        msg: |
          {
            "registries": {
              "{{docker_registry.url}}": {
                "username": "{{docker_registry.user}}",
                "password": "{{docker_registry.password}}"
              }
            }
          }
...