Vagrant интерактивный Ansible обеспечение с пользовательским вводом - PullRequest
0 голосов
/ 18 января 2019

Мне было интересно, можно ли было обеспечить Vagrant с помощью Plays для Ansible, чтобы выполнить задачу, в которой выполняется команда, требующая ввода данных пользователем, и приостанавливает ожидание взаимодействия с пользователем.

Вариант использования - аутентификациякоманда терминала gcloud с gcloud auth login.Команда просит пользователя перейти по URL-адресу, который выполняет аутентификацию Google, и затем ввести проверочный код, предоставленный после предоставления доступа:

Go to the following link in your browser:

https://accounts.google.com/o/oauth2/....


Enter verification code:

Я видел prompt и wait_for модулей дляAnsible, но это не похоже, может использоваться в этом сценарии?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Если учетная запись, которую вы пытаетесь аутентифицировать в этом сценарии, является служебной учетной записью, попробуйте gcloud auth activate-service-account.Это было бы особенно полезно здесь, потому что он ничего не запрашивает, все, что он делает, это входит в учетную запись службы, используя файл ключа.Вы можете узнать больше об этом здесь .

0 голосов
/ 18 января 2019

Возможно, модуль expect подойдет для вашего случая. Вы читали об этом?

Пример из ansible документов:

- name: Case insensitive password string match
  expect:
    command: passwd username
    responses:
      (?i)password: "MySekretPa$$word"
  # you don't want to show passwords in your logs
  no_log: true

- name: Generic question with multiple different responses
  expect:
    command: /path/to/custom/command
    responses:
      Question:
        - response1
        - response2
        - response3

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

Источник: Модуль Ansible Expect

...