Рейтинг:0

модули оболочки/команды, не обеспечивающие вывод из playbook на Raspberry Pis

флаг se

Использование Ansible 2.11.6 из Ubuntu. У меня есть два Raspberry Pis в инвентарь. Один из них — старый Pi3 с функцией Stretch; другой Pi4 с Бастером.

$ ansible -i inventory -m shell -a "df -h" все

показывает результат дф-ч для обоих Пис, как и ожидалось. Но

$ ansible-playbook -i inventory main.yml

куда main.yml является

---
- хозяева: все
  задачи:
    - имя: показать место на диске
      ракушка:
        команда: дф -ч

после сбора фактов показывает

ЗАДАЧА [показать место на диске] *******************
изменено: [pi4]
изменено: [pi3]

не показывая результат дф-ч.

я пытался команда: вместо ракушка:. я пытался исполняемый файл: /bin/bash. Нет разницы. Одинаковый main.yml работает с доступным поставщиком Vagrant при создании виртуальной машины Ubuntu и показывает дф-ч вывод.

Что мне не хватает?

Обновлять Это была ошибка с моей стороны. Шаблон Vagrantfile, который я использовал, включен ansible.verbose = истина. Удалите это, и все будет работать последовательно.

Рейтинг:2
флаг in

Вам не хватает задачи отладки, которая показывала бы вывод.

---
- хозяева: все
  задачи:
  - имя: показать место на диске
    ракушка:
      команда: дф -ч
    регистрация: дф
  - отладка:
      переменная: дф

Ansible не показывает вывод команды напрямую.

флаг se
Спасибо. Странно, что поставщик Ansible в Vagrant ведет себя по-другому.
флаг in
У меня нет опыта работы с Vagrant, поэтому я могу только предположить, что это функция Vagrant для прямого отображения вывода. Я просмотрел [Настройки Ansible](https://docs.ansible.com/ansible/latest/reference_appendices/config.html), но не смог найти ничего, что могло бы показаться полезным.
Рейтинг:2
флаг th

При заданной по умолчанию детализации результаты задачи не отображаются По умолчанию стандартный вызов обратного вызова. Специальные команды обычно используют минимальный обратный вызов, который имеет другое поведение. Если вы видите это в выходных данных Vagrant, это либо использует другой обратный вызов, либо работает с более высокой детализацией, где отображается больше информации:

ec2-user@pandora ~ $ ansible-playbook test.yml 

ИГРАТЬ [localhost] **************************************************** *****************

ЗАДАЧА [команда] **************************************************** *******************
изменено: [локальный хост]

ОБЗОР ИГРЫ ******************************************************* *********************
localhost: ok=1 изменено=1 недоступно=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0   
ec2-user@pandora ~ $ ANSIBLE_STDOUT_CALLBACK=минимальный тест ansible-playbook.yml
локальный | ИЗМЕНЕНО | rc=0 >>
Используемый размер файловой системы Доступно Использование % Установлено на
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 272K 3.9G 1% /dev/shm
tmpfs 3.9G 8.9M 3.9G 1%/запуск
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 12 ГБ 7,3 ГБ 4,8 ГБ 61% /
/dev/nvme1n1 40G 9.0G 32G 23% /домашний
fs-c2c955bb.efs.us-east-2.amazonaws.com:/ 8.0E 0 8.0E 0% /ammit
tmpfs 788M 0 788M 0% /выполнить/пользователь/1913323
tmpfs 788M 0 788M 0% /выполнить/пользователь/257994
tmpfs 788M 0 788M 0% /выполнить/пользователь/1000
ec2-user@pandora ~ $ ansible-playbook test.yml -vvv
ansible-playbook [ядро 2.11.5] 
  конфигурационный файл = /home/ec2-user/ansible-aws/ansible/ansible.cfg
  сконфигурированный путь поиска модуля = ['/home/ec2-user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  Расположение модуля ansible python = /home/ec2-user/ansible-aws/.venv/lib/python3.8/site-packages/ansible
  расположение коллекции ansible = /home/ec2-user/ansible-aws/ansible/collections
  местоположение исполняемого файла = /home/ec2-user/ansible-aws/.venv/bin/ansible-playbook
  версия python = 3.8.5 (по умолчанию, 18 февраля 2021 г., 01:24:20) [GCC 7.3.1 20180712 (Red Hat 7.3.1-12)]
  версия джиндзя = 3.0.2
  libyaml = Истина
Использование /home/ec2-user/ansible-aws/ansible/ansible.cfg в качестве файла конфигурации
Пропуск обратного вызова «по умолчанию», так как у нас уже есть обратный вызов stdout.
Пропуск обратного вызова «минимальный», так как у нас уже есть обратный вызов stdout.
Пропускаем обратный вызов «oneline», так как у нас уже есть обратный вызов stdout.

ПЛЕЙБУК: test.yml *************************************************** ****************
1 играет в test.yml

ИГРАТЬ [localhost] **************************************************** *****************
МЕТА: запуск обработчиков

ЗАДАЧА [команда] **************************************************** *******************
путь к задаче: /home/ec2-user/test.yml:4
Использование файла модуля /home/ec2-user/ansible-aws/.venv/lib/python3.8/site-packages/ansible/modules/command.py
Конвейеризация включена.
<127.0.0.1> УСТАНОВИТЬ ЛОКАЛЬНОЕ СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: ec2-user
<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-gljjnrdznzzibrxampvyyzigtjnozzra ; /home/ec2-user/ansible-aws/.venv/bin/python'"'"' && sleep 0'
изменено: [localhost] => {
    «изменено»: правда,
    "команд": [
        "дф",
        "-час"
    ],
    "дельта": "0:00:00.004672",
    "конец": "2021-10-20 12:22:07.355248",
    "вызов": {
        "module_args": {
            "_raw_params": "df -h",
            "_uses_shell": ложь,
            "аргв": ноль,
            "chdir": ноль,
            "создает": ноль,
            "исполняемый": ноль,
            "удаляет": ноль,
            «стандартный ввод»: ноль,
            "stdin_add_newline": правда,
            "strip_empty_ends": правда,
            "предупреждать": ложь
        }
    },
    "сообщение": "",
    "рс": 0,
    "старт": "2021-10-20 12:22:07.350576",
    "Стдерр": "",
    "stderr_lines": [],
    "stdout": "Используемый размер файловой системы Доступно Использование% Установлено на\ndevtmpfs 3.9G 0 3.9G 0% /dev\ntmpfs 3.9G 124K 3.9G 1% /dev/shm\$
tmpfs 3.9G 8.8M 3.9G 1% /run\ntmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup\n/dev/nvme0n1p1 12G 7.3G 4.8G 61% /\n/dev/nvme1n1      
                          40G 9.0G 32G 23% /home\nfs-c2c955bb.efs.us-east-2.amazonaws.com:/ 8.0E 0 8.0E 0% /ammit\ntmpfs 788M 0 788M 0% /run/user/1913323\ntmpfs                      
                788M 0 788M 0% /выполнить/пользователь/257994",
    "stdout_lines": [
        «Используемый размер файловой системы, доступное использование, % смонтировано»,
        "devtmpfs 3.9G 0 3.9G 0%/dev",
        "tmpfs 3.9G 124K 3.9G 1% /dev/shm",
        "tmpfs 3.9G 8.8M 3.9G 1%/запуск",
        "tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup",
        "/dev/nvme0n1p1 12G 7,3G 4,8G 61%/",
        "/dev/nvme1n1 40G 9.0G 32G 23%/дом",
        "fs-c2c955bb.efs.us-east-2.amazonaws.com:/ 8.0E 0 8.0E 0% /ammit",
        "tmpfs 788M 0 788M 0% /выполнить/пользователь/1913323",
        "tmpfs 788M 0 788M 0% /выполнить/пользователь/257994"
    ]
}
МЕТА: запуск обработчиков
МЕТА: запуск обработчиков

ОБЗОР ИГРЫ ******************************************************* *********************
localhost: ok=1 изменено=1 недоступно=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0   

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

---
- хозяева: все
  задачи:
  - имя: получить место на диске
    команда:
      команда: дф -ч
    регистрация: результат

  - отладка:
      сообщение: "{{ result.stdout_lines }}"
ec2-user@pandora ~ $ ansible-playbook test.yml 

ИГРАТЬ [localhost] **************************************************** *****************

ЗАДАЧА [получить место на диске] ************************************************* ****************
изменено: [локальный хост]

ЗАДАЧА [отладка] **************************************************** *********************
хорошо: [локальный хост] => {
    "сообщение": [
        «Используемый размер файловой системы, доступное использование, % смонтировано»,
        "devtmpfs 3.9G 0 3.9G 0%/dev",
        "tmpfs 3.9G 124K 3.9G 1% /dev/shm",
        "tmpfs 3.9G 8.8M 3.9G 1%/запуск",
        "tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup",
        "/dev/nvme0n1p1 12G 7,3G 4,8G 61%/",
        "/dev/nvme1n1 40G 9.0G 32G 23%/дом",
        "fs-c2c955bb.efs.us-east-2.amazonaws.com:/ 8.0E 0 8.0E 0% /ammit",
        "tmpfs 788M 0 788M 0% /выполнить/пользователь/1913323",
        "tmpfs 788M 0 788M 0% /выполнить/пользователь/257994"
    ]
}

ОБЗОР ИГРЫ ******************************************************* *********************
localhost : ok=2 изменено=1 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0   
флаг in
Вы всегда узнаете что-то новое. Это должен быть принятый ответ.
флаг se
Это имеет смысл и привело меня к обнаружению моей ошибки. Спасибо.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.