L oop переменная не добавляет файл - PullRequest
0 голосов
/ 07 мая 2020

Когда я использую blockinfile l oop для добавления файла / etc / environment, он добавляет только последний ключ и значение элемента из переменной l oop, а не добавляет все это.

Я пытаюсь изменить файлы с помощью модуля Blockinfile в ролях main.yml:

- name: Add proxy to global /etc/environments
blockinfile:
 path: "/etc/environment"
 block: |
  export {{item.key}}={{item.value}}
loop: "{{proxy_details}}"

мои vars / main.yaml выглядят так:

proxy_details:
- key: http_proxy
  value: "http://"{{ProxyHost}}":"{{ProxyPort}}""
- key: https_proxy
  value: "http://"{{ProxyHost}}":"{{ProxyPort}}""

my group_vars / all выглядит так:

ProxyHost: test.com
ProxyPort: 9999

1 Ответ

1 голос
/ 07 мая 2020

См. Последний пример в документации по адресу https://docs.ansible.com/ansible/latest/modules/blockinfile_module.html. Вам необходимо использовать собственный маркер для каждого элемента, чтобы Ansible знал, где каждый из них находится в файле, чтобы заменить его.

Согласно примечанию к документации:

При использовании 'with_ * 'помните, что если вы не установите уникальную метку, блок будет перезаписываться на каждой итерации.

Пример:

- name: Add mappings to /etc/hosts
  blockinfile:
    path: /etc/hosts
    block: |
      {{ item.ip }} {{ item.name }}
    marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}"
  loop:
    - { name: host1, ip: 10.10.1.10 }
    - { name: host2, ip: 10.10.1.11 }
    - { name: host3, ip: 10.10.1.12 }

Вы можете изменить свой так, чтобы он был :

- name: Add proxy to global /etc/environments
  blockinfile:
    path: "/etc/environment"
    marker: "# {mark} ANSIBLE MANAGED BLOCK FOR {{item.key}}"
    block: |
      export {{item.key}}={{item.value}}
  loop: "{{proxy_details}}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...