Executando serviço com o systemd como usuário padrão via ansible em ec2 (solicita senha)

4

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.

    
por MikeiLL 01.11.2015 / 10:16

1 resposta

1

Se você tiver sudo global, adicione become: no às duas tarefas que não requerem sudo privs.

    
por 07.09.2018 / 16:03