Ansible lineinfile - добавить в конец строки без перезаписи - PullRequest
0 голосов
/ 08 января 2020

Как мне добавить список групп в конец строки, не перезаписывая то, что там уже есть?

- name: "Updating sssd"
  hosts: temp
  gather_facts: no

  vars:
    usergroups:
      - operations

  tasks:
  - name: "Add Group to sssd"
    lineinfile:
      dest: /etc/sssd/sssd.conf
      regexp: '^simple_allow_groups'
      line: "simple_allow_groups = {{usergroups | join(',')}}"
      backrefs: yes

Мое намерение для этого кода - взять строку

simple_allow_groups = администраторы, разработчики

и заканчиваются

simple_allow_groups = администраторы, разработчики, операции

однако фактический результат это:

simple_allow_groups = операции

Обратите внимание, что я не могу использовать regexp: '^ simple_allow_groups' = администраторы, разработчики , поскольку каждый сервер может отличаться в какие группы уже перечислены здесь.

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Просто добавьте одну строку

- name: "Updating sssd"
  hosts: temp
  gather_facts: no

  vars:
    usergroups:
      - operations
      - "{{ lookup('ini', 'simple_allow_groups type=properties file=/etc/sssd/sssd.conf') }}"

  tasks:
  - name: "Add Group to sssd"
    lineinfile:
      dest: /etc/sssd/sssd.conf
      regexp: '^simple_allow_groups'
      line: "simple_allow_groups = {{usergroups | join(',')}}"
      backrefs: yes

Некоторые обновления

Чтобы убедиться, usergroups уникален

line: "simple_allow_groups = {{usergroups|flatten|unique | join(',')}}"
0 голосов
/ 08 января 2020

Вы можете заранее рассмотреть возможность использования отдельной задачи lineinfile, но запустить ее в режиме проверки. Пример:

- name: "Get currently allowed groups from SSSD config"
  lineinfile:
    path: /etc/sssd/sssd.conf
    regexp: '^simple_allow_groups'
    state: absent
  check_mode: yes
  register: existing_groups

Затем измените значение line: в текущей задаче, чтобы включить {{ existing_groups}}, и добавьте условное выражение, например when: existing_groups is changed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...