Estou com problemas para configurar Ansible e sudo para permitir o SSH em um servidor e executar um comando como outro usuário.
Eu passei pelas perguntas / respostas abaixo e a documentação do Ansible aqui: link
mas ainda não consigo fazê-lo funcionar.
Por favor, alguém pode me colocar no caminho certo.
Referências:
link
Ansible: usando um usuário sudo diferente para hosts diferentes
Estou tentando fazer isso:
server-01 client-01
--------- -----------
foo ----> ssh ---> foo
bar - sudo as root user
Usando Ansible,
conectar de: server-01
para: client-01
usando o usuário foo
e, em seguida, use sudo para executar um comando como barra de usuário
A barra do usuário está configurada para poder executar qualquer comando.
No entanto, não tenho certeza de onde está o problema, com sudo ou Ansible.
Eu acho que o problema é com o sudo, mas não tenho certeza de onde.
Este comando ansible funciona:
[foo@server-01 ~]$ **ansible client-01 -m raw -a "touch /var/tmp/testfile" --ask-sudo-pass**
sudo password: ********* ( password for foo user )
client-01 | success | rc=0 >>
Este não funciona:
[foo@server-01 ~]$ ansible client-01 -m raw -a "touch /etc/testfile" --ask-sudo-pass
sudo password: ********* ( password for foo user )
client-01 | FAILED | rc=1 >>
touch: cannot touch '/etc/testfile': Permission denied
Eu tenho autenticação SSH sem uma configuração de senha entre o server-01 e o client-01 para o usuário foo e funciona bem.
[foo@server-01 ~]$ id
uid=96(foo) gid=96(foo) groups=96(foo)
[foo@server-01 ~]$ su - foo
Password:
[foo@server-01 ~]$
[foo@server-01 ~]$
[foo@server-01 ~]$ ssh client-01
Last login: Thu Jan 15 16:32:05 2015 from server-01
[foo@client-01 ~]$
Esta é minha configuração:
server-01: /etc/ansible/hosts
-------------------------------------
[clients]
client-01 ansible_sudo=true ansible_ssh_user=foo ansible_sudo_user=bar
client-01: /etc/sudoers
-------------------------------------
[root@client-01 ~]# cat /etc/sudoers
#
root ALL=(ALL) ALL
bar ALL=(ALL) ALL
foo ALL=(bar) NOPASSWD: ALL
Quando no servidor de destino (cliente-01), posso testar o sudo.
Eu acho que o sudo é a parte que não está funcionando, mas devido a isso eu não consigo configurar nenhum dos Ansible Playbooks.
[root@client-01 ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@client-01 ~]# su - bar
[bar@client-01 ~]$ sudo -l
[sudo] password for bar:
User bar may run the following commands on this host:
(ALL) ALL
[bar@client-01 ~]$ sudo touch /etc/tempfile
[bar@client-01 ~]$ ls -alp /etc/tempfile
-rw-r--r-- 1 root root 0 Jan 15 17:08 /etc/tempfile
[bar@client-01 ~]$ sudo rm /etc/tempfile
[bar@client-01 ~]$ exit
logout
[root@client-01 ~]# su - foo
[foo@client-01 ~]$ sudo -l
User foo may run the following commands on this host:
(bar) NOPASSWD: ALL
[foo@client-01 ~]$ sudo touch /etc/tempfile
[sudo] password for foo:
Sorry, user foo is not allowed to execute '/bin/touch /etc/tempfile' as root on client-01.
[foo@client-01 ~]$ exit
logout
Talvez esta seja a linha que está falhando:
foo ALL=(bar) NOPASSWD: ALL
Agradeço por qualquer ajuda.