что использовать вместо lineinfile для печати повторяющихся значений в файле через ansible при работе с несколькими именами хоста - PullRequest
1 голос
/ 27 мая 2020

Моя playbook запущена на нескольких хостах, которые имеют одинаковое значение в настройках конфигурации клиента Tanium. Я использовал модуль lineinfile для печати значения каждой задачи в файле, который пропускает уже существующее значение при запуске на первом хосте при выполнении на втором. Я хочу напечатать значение, даже если оно дублируется, в файле для всего имени хоста инвентаризации. Ниже приведен код:

- name: main execution
  hosts: dc
  become: true
  gather_facts: no
  serial: 1
  tasks:
       - name: fetch conf setting
         shell: /opt/Tanium/TaniumClient/TaniumClient config list | grep -i -e 'ListenPort' -e 
         'ServerName' -e 'ServerNameList' -e 'ServerPort'
         register: output2

       - lineinfile:
         line: "{{item}}"
         path: "{{playbook_dir}}/output.txt"
         with_items:
         - "{{ output2.stdout_lines }}"
         connection: local

После запуска playbook ниже показан статус 1-го хоста :

         TASK [fetch conf setting] 
***************************************************************************************
changed: [firsthost.com]

TASK [lineinfile] 
**********************************************************************************************
changed: [firsthost.com] => (item= The conf value for firsthost.com)
changed: [firsthost.com] => (item=  - LastGoodServerName: anenp.host.com)
changed: [firsthost.com] => (item=  - ListenPort: 17472)
changed: [firsthost.com] => (item=  - ServerName: anenp.host.com)
changed: [firsthost.com] => (item=  - ServerNameList: anenp.host.com,anenpc.host.com)
changed: [firsthost.com] => (item=  - ServerPort: 443)

Как упоминалось выше, все значения для 1-го хоста печатаются в файле.

Когда playbook запускается на 2-м хосте , общие значения пропускаются, ниже показан статус:

TASK [fetch conf setting] 
 *******************************************************************************************
changed: [secondhost.com]

TASK [lineinfile] 
****************************************************************************************
changed: [secondhost.com] => (item= The conf value for secondhost.com)
changed: [secondhost.com] => (item=  - LastGoodServerName: anen100.host.com)
**ok: [secondhost.com] => (item=  - ListenPort: 17472)**
changed: [secondhost.com] => (item=  - ServerName: anen100.host.com)
**ok: [secondhost.com] => (item=  - ServerNameList: 
anenp.host.com,anenpc.host.com)
ok: [secondhost.com] => (item=  - ServerPort: 443)**

Как распечатать все значения, независимо от повторяющихся значений, в файле?

1 Ответ

2 голосов
/ 27 мая 2020

Попробуйте blockinfile:

- blockinfile:
    block: "{{ output2.stdout }}"
    path: "{{playbook_dir}}/output.txt"
    marker: ""
  connection: local
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...