Есть ли у нас команда Ansible для запуска сценария интерактивной оболочки пользователя без использования playbook? - PullRequest
0 голосов
/ 11 сентября 2018

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

 read -e -p "Enter any string:" varible
 echo  'Entered value is ::' $varible > abc.txt

Я хотел запустить этот скрипт, который требует ввода данных пользователем на нескольких серверах и достигается с помощью ниже yml:

- name: Here we start
  hosts: all

  tasks:  # is a list
  - name: Execute the user interactive script
  expect:                                                                   
       command: /usr/bin/sh /home/ansible/test.sh
       responses:
            "Enter any string:": "Success Script Executed"

Но то же самое, если я пытаюсь использовать приведенную ниже команду, это не продвигает для пользовательского ввода:

 ansible all -a 'sh /home/ansible/test.sh'

1) Пожалуйста, предоставьте правильную команду ansible, которая запрашивает ввод данных пользователем для моего скрипта выше.

2) Также для моего скрипта, приведенного выше, поделитесь правильной командой ansible, которая принимает значение по умолчанию от имени пользователя.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете запустить любой отдельный модуль Ansible с помощью команды ansible:

  • укажите имя модуля в качестве значения --module-name=MODULE_NAME (-m)

  • предоставляет аргументы модуля в качестве значения для --args=MODULE_ARGS (-a)

В случае вышеуказанного задания:

ansible all -m expect -a "command='/usr/bin/sh /home/ansible/test.sh' responses='{\"Enter any string:\": \"Success Script Executed\"}'"
...