Ansible в интерактивном режиме реагирует на непредустановленные выходные данные удаленной оболочки - PullRequest
0 голосов
/ 01 ноября 2019

Заранее спасибо за любой совет / помощь по этому вопросу.

Я попробовал «ожидать» и многие итерации модулей оболочки / команд, но ни один из них не предлагает того, что я (и я представляю другим), хочу сделать в этом случае. Обращаясь к более широкой группе в надежде, что есть решение, которое я еще не нашел.

Наше программное обеспечение имеет команду оболочки, которая выводит список файлов, которые оно изменит, и предлагает пользователю продолжить сстандартное приглашение [y / n]. Подобно тому, что сделал бы YUM, если бы вы обновляли программное обеспечение, оно выплевывает кучу выходных данных и ожидает ввода данных пользователем.

    The following changes need to be made:

        Create /home/XYZ-file
        Enable and start the ABC service
        Enable and start the DEF service

    Allow? [y/N] n

ИНОГДА, в зависимости от файлов, которые он перечисляет, мы НЕ хотим продолжать ... Иногда мы ДЕЛАЕМ. поэтому я хочу иметь возможность подсказать моему пользователю, отвечающему за вопрос, и дать ему выбор на основе списка. Я знаю, что это раздражает вмешательство человека, и не в духе автоматизации, но для этого одного шага мы готовы отказаться от вещей и заставить человека реально посмотреть на эти файлы и принять решение.

В настоящее время «ожидаем»только сопоставляет заданный вывод с заданными ответами пользователя. Я не хочу этого делать, так как я не знаю, какие файлы будут представлены пользователю, поэтому я не могу использовать какие-либо предустановки.

Я хотел бы отобразить все выходные данныеКоманда оболочки и предлагает пользователю ответить на основании выходных данных.

Простая задача для выдачи команды и регистрации выходных данных:

- name: Issue XYZ command
  shell: xyz
  register: xyz_output
- debug: var=xyz_output.stdout

Проблема заключается в том, что команда оболочки зависает вэтот случай, потому что ansible не может:

отобразить вывод и предложить пользователю ansible продолжить или нет

любая помощь очень ценится!

1 Ответ

0 голосов
/ 02 ноября 2019

образец yaml, который вы можете взять для справки и улучшить в соответствии с вашими требованиями.

---
- hosts: all
  gather_facts: False
  tasks:
    - name: print
      shell: cat inventory
      register: fileout

    - debug: var=fileout.stdout

    - name: pause
      pause: prompt='Confirm action by giving - yes/no:'
      register: pause

    - name: Ansible create file.
      file:
         path: "/home/ansible/vops.txt"
         state: touch
         mode: 0777
      when: pause.user_input == 'yes'

    - name: Ansible start service
      service:
         name: httpd
         state: started
      when: pause.user_input == 'yes'

Я использовал модуль pause , чтобы приостановить воспроизведение и запросить вводи использовал условие ' when ' для сравнения входного результата и продолжения действия.

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