Не удалось получить ansible_facts, когда стало: true, установлено - PullRequest
0 голосов
/ 06 августа 2020

Playbook ansible зависает часами и не выдает никаких результатов, когда я даю become: yes. Пожалуйста, проверьте playbook ниже:

- name: Play to get the gathre facts content
  hosts: DEV1
  become: yes
  tasks:
  - name: print ansible_facts
    debug:
     var: ansible_facts["kernel"]

Вывод:

Выполнение playbook зависает и, следовательно, нет вывода.

ansibleuser@debian:~/ansible_code$ ansible-playbook  playbooks/gatherfacts_playbook.yaml

PLAY [Play to get the gathre facts content] ********************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************

Для того же playbook, если i remove become: yes тогда он работает нормально:

- name: Play to get the gathre facts content
  hosts: DEV1
  tasks:
  - name: print ansible_facts
    debug:
     var: ansible_facts["kernel"]

Вывод:

Playbook запускается и дает версию ядра хост-машины.

ansibleuser@debian:~/ansible_code$ ansible-playbook  playbooks/gatherfacts_playbook.yaml

PLAY [Play to get the gathre facts content] ********************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************
[WARNING]: Platform linux on host DEV1 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter
could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [DEV1]

TASK [print ansible_facts] *************************************************************************************************************************************
ok: [DEV1] => {
    "ansible_facts[\"kernel\"]": "4.9.0-12-amd64"
}

PLAY RECAP *****************************************************************************************************************************************************
DEV1                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Пожалуйста, объясните:

  1. Почему это происходит?

  2. Как можно запустить playbook с become: yes и получить результат?

  3. Если become: yes не может быть использовано, то как запустить Linux обновление заголовков linux-headers-$(uname -r), для которого требуется версия ядра. Ниже представлена ​​игра, которая выглядит как become: yes is set.

Пример:

- hosts: DEV1
  become: yes
  tasks
  - name: Update linux kernel header and install build essential
    apt:
     name:
      - "linux-headers-{{ ansible_facts["kernel"] }}"
      - build-essential

1 Ответ

0 голосов
/ 06 августа 2020

В файле инвентаризации я использую testuser в качестве пользователя to login to DEV1 host machine. Этот пользователь добавлен в файл sudoers с разрешением testuser ALL=(ALL:ALL) NOPASSWD: ALL. Итак, я добавил become_user as testuser в playbook, и playbook успешно выполнился. Ниже приведена инструкция:

- name: Play to get the gathre facts content
  hosts: DEV1
  become: yes
  become_user: testuser
  tasks:
  - name: print ansible_facts
    debug:
     var: ansible_facts["kernel"]

Вывод:

ansibleuser@debian:~/ansible_code$ ansible-playbook  playbooks/gatherfacts_playbook.yaml

PLAY [Play to get the gather facts content] ********************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************
[WARNING]: Platform linux on host DEV1 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter
could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [DEV1]

TASK [print ansible_facts] *************************************************************************************************************************************
ok: [DEV1] => {
    "ansible_facts[\"kernel\"]": "4.9.0-12-amd64"
}

PLAY RECAP *****************************************************************************************************************************************************
DEV1                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Я печатаю ядро ​​ОС на экране вывода. Чтобы распечатать все ansible_facts, используйте следующую книгу:

- name: Play to get the gather facts content   
  hosts: DEV1   
  become: yes   
  become_user: testuser   
  tasks:
  - name: print ansible_facts
    debug:
     var: ansible_facts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...