Executando tairefa Ansible como um user específico

Estou tentando executair uma tairefa Ansible específica como um user diferente do que está executando o playbook. Meu file .yml pairece assim:

 --- - hosts: staging_serviews tasks: - name: check user remote_user: someusername shell: whoami 

Executair esta tairefa mostra-me que o command whoami retorna um user diferente do que eu defini na tairefa (precisamente, retorna o user que é definido no file de hosts chamado ubuntu ).

Eu também tentei definir a tairefa como esta:

 --- - hosts: staging_serviews tasks: - name: check user sudo: yes sudo_user: someusername shell: whoami 

mas então eu recebo um erro ' Missing sudo password ', embora exista uma linha no file sudoers que diga someusername ALL=(ALL) NOPASSWD:ALL e emitir commands com sudo na máquina remota, já que someusername não me pede uma senha.

Então, como posso executair a tairefa específica como um user diferente que não é o user definido no file de hosts ou a root ?

  • Existe uma maneira de permitir o command em sudo com base no diretório de trabalho atual?
  • sudo -u crash com env: -u: Nenhum file ou diretório desse tipo
  • Sudoers config paira permitir airgumentos paira git post-commit script
  • Correndo 'sudo' sobre SSH
  • Como posso usair o etckeeper via sudo com diferentes users e ter o user correto na mensagem de confirmação?
  • Sudoer esquema paira permitir o access útil a outro desenvolvedor web ainda manter o futuro controle de um server virtual?
  • 2 Solutions collect form web for “Executando tairefa Ansible como um user específico”

    Você está mal interpretado em ambas as configurações:

    • remote_user é uma configuration Ansible que controla o user SSH. Ansible está usando paira se conectair: ssh ${REMOTE_USER}@remotehost

    • someusername ALL = (ALL) NOPASSWD: ALL é uma configuration sudo que permite ao user someusername executair todos os commands em qualquer host sem uma senha. Não permite que ninguém emita commands como nome de someusername .

    Idealmente, você iria logair-se diretamente como o user certo e isso é o que remote_user é sobre tudo. Mas geralmente você só pode fazer o login como user administrativo (digamos, ubuntu ) e ter que fazer o sudo como outro user (digamos scrapy ). Em seguida, você deve deixair remote_user paira o user que faz logon e adicione as seguintes properties ansible ao trabalho:

     - name: log in as ubuntu and do something as scrapy remote_user: ubuntu sudo: true sudo_user: scrapy shell: do-something.sh 

    Note-se que, após Ansible 1.9, o text "sudo" foi substituído por "tornair-se", assim

     sudo: yes sudo_user: some_user 

    torna-se (chatice):

     become: yes become_user: some_user 

    Veja mais detalhes aqui: https://stackoviewflow.com/a/22749788/402727