Ansible: замена значений из одного словаря в другой без добавления всего словаря - PullRequest
0 голосов
/ 18 марта 2020

Как следует из заголовка, я собираюсь объединить 2 дикта в том случае, если ключ одного диктата найден в другом; используется значение второго dict.

Например

Dict 1:

{
  "test": "replace me",
  "test2": "some value"
}

Dict 2:

{
  "test": "replaced",
  "test3": "Don't add"
}

Комбинированный результат :

{
  "test": "replaced",
  "test2": "some value"
}

1 Ответ

1 голос
/ 18 марта 2020

Плейбук ниже

shell> cat playbook.yml
- hosts: localhost
  vars:
    dict1:
      test: "replace me"
      test2: "some value"
    dict2:
      test: "replaced"
      test3: "Don't add"
  tasks:
    - set_fact:
        dict1: "{{ dict1|combine({item: dict2[item]}) }}"
      loop: "{{ dict1.keys()|list|intersect(dict2.keys()|list) }}"
    - debug:
        var: dict1

дает

shell> ansible-playbook playbook.yml

...

ok: [localhost] => {
    "dict1": {
        "test": "replaced", 
        "test2": "some value"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...