ansible регистрация переменных и циклов - PullRequest
0 голосов
/ 13 июля 2020

Я новичок в ansible, так что несите меня

Мне нужно создать playbook, который читает файл и извлекает список серверов, затем подключается к каждому узлу и извлекает значение файла в каждом (env), затем собирает скомпилированный текстовый файл с информацией:

  • node1 - version - env ​​
  • node2 - version - env ​​
  • node3 - version - env ​​

проблема возникает, когда мне нужно собрать все вместе

- name: check remote file
  remote_user: user
  shell: cat /remote/file
  register: env

- name: get version
  shell: cat /local/file | -f3 | sort | uniq
  register: vers
  delegate_to: localhost

- name: save results
  shell: echo NODE {{ hostz.stdout_lines }} VERSION {{ vers.stdout_lines }}  ENVIRONMENT {{ env.stdout_lines }} >> /home/user/test.csv
  delegate_to: localhost

как вы можете себе представить, он выполняет al oop на задачу, поэтому я получаю файл со всеми хостами, затем со всеми версиями и всеми средами, что не имеет никакого смысла, как вы думаете, что было бы лучшим способом собрать это вместе?

Я в основном пытаюсь сделать для хосты в $ hostz; делать ...

1 Ответ

0 голосов
/ 13 июля 2020

Например, инвентарь ниже

shell> cat hosts
[my_group]
test_01
test_02
test_03

этот playbook

shell> cat playbook.yml
- hosts: my_group
  tasks:
    - shell: 'cat /etc/passwd| wc -l'
      register: env

    - shell: 'cat /etc/passwd| wc -l'
      register: vers
      delegate_to: localhost
      run_once: true
      
    - template:
        src: test.csv.j2
        dest: test.csv
      delegate_to: localhost
      run_once: true

и этот шаблон

shell> cat test.csv.j2
{% for host in groups.my_group %}
NODE {{ host }} VERSION {{ vers.stdout|trim }} ENVIRONMENT {{ hostvars[host]['env']['stdout']|trim }}
{% endfor %}

give

shell> ansible-playbook -i hosts playbook.yml 

PLAY [my_group] ************************************************************

TASK [shell] ***************************************************************
changed: [test_01]
changed: [test_03]
changed: [test_02]

TASK [shell] ***************************************************************
changed: [test_01 -> localhost]

TASK [template] ************************************************************
changed: [test_01 -> localhost]

PLAY RECAP *****************************************************************
test_01: ok=3 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0   
test_02: ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0   
test_03: ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 
shell> cat test.csv
NODE test_01 VERSION 55 ENVIRONMENT 37
NODE test_02 VERSION 55 ENVIRONMENT 31
NODE test_03 VERSION 55 ENVIRONMENT 29
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...