Назад | Перейти на главную страницу

Запуск службы с systemd в качестве пользователя по умолчанию через ansible в ec2 (запрашивает пароль)

Я пытаюсь использовать следующий скрипт Ansible (часть плейбука) для запуска единорога через systemd для приложения rails на экземпляре EC2 (micro):

---

- name: restart unicorn
  command: psql -h {{ db_host }} -U {{ db_user }} -d {{ db }} -c "SELECT true FROM pg_tables WHERE tablename = 'order_cycles';"
  register: table_exists
  ignore_errors: yes
  sudo: yes
  sudo_user: "{{ unicorn_user }}"
  notify: restart unicorn step 2

#TODO make sure both of these things run as one handler.
- name: restart unicorn step 2
  service:
    name: unicorn_{{ app }}
    state: restarted
  when: table_exists.stderr.find('does not exist') == -1
  # If unicorn isn't actually started yet we probably need this:
  notify: start unicorn

- name: start unicorn
  service:
    name: unicorn_{{ app }}
    state: started

Пользователь, настроенный в playbook, ubuntu, пользователь по умолчанию (EC2), и я нажимаю Interactive authentication required ошибка там, поэтому я просто пытаюсь устранить неполадки непосредственно в командной строке сервера развертывания и наткнулся на это препятствие.

Я могу запустить его как sudo:

$ sudo systemctl start unicorn_myapp.service

Либо напрямую через командную строку сервера, либо с помощью Необработанный Ansible метод, который успешен.

Но тогда сервер rails, запущенный пользователем ubuntu не могу получить к нему доступ (по крайней мере, я исследую этот путь по причине .sock failed (111: Connection refused ошибка).

Если я запустил его без sudo, будет запрошен пароль, но, насколько я могу судить, пользователь EC2 ubuntu работает без пароля.

Я знаю, что можно обойти создать нового пользователя с паролем и запускайте rails и systemctl / unicorn от имени этого пользователя, но я не думаю, что это реальный ответ на эту проблему, тем более что разработчик playbook недавно удалил user_password из playbook в целом по соображениям безопасности.

Если я пойму, как бежать systemd как пользователь без полномочий root, возможно, я смогу понять, как добиться успеха с Ansible.

Конечно, также не исключено, что я подхожу к этому с неправильной точки зрения, поскольку я новичок практически во всем, что включает этот сценарий.

Если у вас глобальный sudo, добавьте become: no для двух задач, для которых не требуется sudo privs.