Ansible - авторизоваться на Heroku - PullRequest
1 голос
/ 02 апреля 2020

Обычно вход в систему с использованием терминала выглядит следующим образом

sudo heroku login --interactive
Email: My email
Password: My password
Login Successful!

это моя роль

- name: Heroku login
  expect:
    command: heroku login --interactive
    responses:
      (?i)Email: '{{ heroku_email }}'
      (?i)Password: '{{ heroku_password }}'

Через 30 секунд я получил

fatal: [localhost]: FAILED! => {"changed": true, "cmd": "heroku login --interactive", "delta": "0:00:31.545693", "end": "2020-04-02 20:06:40.838040", "msg": "command exceeded timeout", "rc": null, "start": "2020-04-02 20:06:09.292347", "stdout": " \u001b[33m›\u001b[39m   Warning: heroku update available from \u001b[92m7.39.0\u001b[39m to \u001b[92m7.39.2\u001b[39m.\r\nheroku: Enter your login credentials\r\nEmail \u001b[33m[myemail@gmail.com]\u001b[39m: \u001b[2K\u001b[GPassword: ***********", "stdout_lines": [" \u001b[33m›\u001b[39m   Warning: heroku update available from \u001b[92m7.39.0\u001b[39m to \u001b[92m7.39.2\u001b[39m.", "heroku: Enter your login credentials", "Email \u001b[33m[myemail@gmail.com]\u001b[39m: \u001b[2K\u001b[GPassword: ***********"]}

У кого-то есть идеи почему я получил эту ошибку?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

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

#!/usr/bin/expect

spawn heroku login -i

sleep 1

send "HEROKU_EMAIL";

send "\r"

sleep 1

send "HEROKU_PASSWORD"

sleep 1

send "\r"

sleep 2

interact

Если кому-то нужна вся роль, перейдите по ссылке ниже

https://github.com/BElluu/Ansible-Heroku-Deploy

0 голосов
/ 02 апреля 2020

Время ожидания по умолчанию для модуля expect составляет 30 секунд. Из стандартного вывода видно, что ожидаемое ответило на оба запроса.

Возможно, что для входа в систему требуется больше времени ожидания по умолчанию. Увеличьте время ожидания для задачи,

- name: Heroku login
  expect:
    command: heroku login --interactive
    responses:
      (?i)Email: '{{ heroku_email }}'
      (?i)Password: '{{ heroku_password }}'
    timeout: 300
...