Se você tiver sudo global, adicione become: no
às duas tarefas que não requerem sudo privs.
Estou tentando usar o seguinte script Ansible (parte de um playbook) para executar o unicorn via systemd
para um aplicativo rails na instância do 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
O usuário configurado no playbook é ubuntu
, o usuário padrão (EC2) e estou exibindo um erro Interactive authentication required
, por isso estou tentando solucionar problemas diretamente na linha de comando do implantar-para servidor e encontrei este obstáculo.
Eu posso rodar como sudo:
$ sudo systemctl start unicorn_myapp.service
Diretamente por meio da linha de comando do servidor ou usando o método Ansible's , que é bem-sucedido.
Mas o servidor rails, sendo executado pelo usuário ubuntu
, não pode acessá-lo (pelo menos é uma avenida que estou explorando por causa do .sock failed (111: Connection refused
error).
Se eu rodar sem sudo, uma senha é solicitada, mas, até onde eu sei, o usuário do EC2 ubuntu roda sem senha.
Sei que uma solução alternativa pode ser crie um novo usuário com senha e execute rails e systemctl / unicorn como esse usuário, mas não acho que seja a resposta real para esse problema, ainda mais porque o desenvolvedor do manual recentemente removeu o user_password
do o manual por motivos de segurança.
Se eu puder descobrir como executar systemd
como um usuário não-root, talvez eu consiga descobrir como fazer com que Ansible seja bem sucedido.
É claro que também não é improvável que eu esteja me aproximando do ângulo errado, já que sou relativamente novo em praticamente tudo que esse cenário envolve.
Se você tiver sudo global, adicione become: no
às duas tarefas que não requerem sudo privs.
Tags sudo systemd amazon-ec2 ansible