Ansible: добавление данных файла с помощью модуля шаблона - PullRequest
0 голосов
/ 10 февраля 2020

Есть ли способ добавить данные с помощью модуля шаблона в ansible. Есть опции для lineinfile и blockinfile в ansible. Но я должен добавить данные в файл хоста. Я хочу сохранить оригинальные хосты и добавить новые хосты в существующий файл.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вы можете использовать blockinfile для выполнения sh выше, как показано ниже:

- name: Add the below DNS records
  blockinfile:
   path: /etc/hosts
   marker: "------"
   insertafter: '^yourlinepattern'
   state: present
   block: |
      lines to append
0 голосов
/ 10 февраля 2020

При использовании шаблонного модуля создается полный файл шаблона.

Что вы можете сделать, это динамически создать файл таким образом, как показано в шаблоне Jinja2:

This is content of my file, not being replaced.

{% for item in some_variable %}
{% {{ item }} %}
{% endfor %}

 And here is the end of the file, not being replaced.

Однако создается впечатление, что вы пытаетесь редактировать файл / etc / hosts или что-то подобное. Вы не должны использовать шаблон для этого варианта использования.

Использование lineinfile идеально подходит для этих сценариев ios. Попробуйте что-то вроде:

  - name: Add the hosts names and IPs to /etc/hosts
    lineinfile:
      dest: /etc/hosts
      regexp: '.*{{ item }}$'
      line: "{{ hostvars[item]['ansible_default_ipv4']['address'] }} {{item}}"
    state: present
    when: hostvars[item]['ansible_facts']['default_ipv4'] is defined
    with_items:
      - "{{ groups['all'] }}"
...