Problema com arquivos criados pelo Ansible
Estou pensando em usar alguns novos servidores em um novo provedor e tenho feito algumas etapas básicas para testar primeiro. Eu sou novo, mas tenho feito alguns testes em servidores diff em outro ISP que parecia ir OK (eu tinha criado arquivos não há problema). Ambos são Unbuntu 12, mas o teste original foi em um servidor que já tinha seu kernel atualizado para 3.8.0-44-generic e outros maint adicionados. Este novo servidor também é o Ubuntu 12, mas vem do modelo ISP e está usando o Kernel 3.5 (Ubuntu 12.04.2 LTS (GNU / Linux 3.5.0-23-genérico x86_64))
Meu primeiro teste seria criar novos usuários e fazer o upload de suas chaves SSH já existentes para login futuro. O usuário foi criado sem problemas e a criação do arquivo não indicou nenhum erro durante o processo de criação, mas ocorreu quando tentei usá-los. Tentei fazer o login (novo usuário) _ usando a chave, mas o sistema agiu como se o arquivo de chave SSH não estivesse lá. Como esse foi o primeiro novo usuário, eu estava logado como root e fiz minha primeira pesquisa e criação como root
Como root tudo parece bom. O arquivo “authorized_keys” no diretório .ssh existe e parece ter as permissões corretas e o conteúdo correto. Mas tentar fazer o login via SSH age como se não estivesse lá. Saí da raiz e me conectei novamente como o novo usuário (usando a senha, pois a chave não estava sendo reconhecida). Eu faço um “ls -al” e vejo o diretório .ssh bem, mas fazer “ls -al .ssh” para ver o arquivo “authorized_keys” no diretório me dá um resultado muito estranho. 'ls' coloca uma mensagem de erro "Permissão negada" para cada item dentro do diretório, e então exibe o que deve ser o resultado do comando, mas enquanto o nome do arquivo é visível, tudo (permissões, tamanho do arquivo, usuário / grupo, data) substituído por pontos de interrogação.
Primeiro como usuário - myusername
myusername@my-server:~$ ls -al .ssh
ls: cannot access .ssh/authorized_keys: Permission denied
ls: cannot access .ssh/..: Permission denied
ls: cannot access .ssh/.: Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? authorized_keys
myusername@my-server:~$
Agora como root
sudo bash
[sudo] password for myusername:
root@my-server:~# sudo ls -al .ssh
total 12
drw-r--r-- 2 myusername myusername 4096 Sep 17 19:54 .
drwxr-xr-x 4 myusername myusername 4096 Sep 17 22:51 ..
-rw-r--r-- 1 myusername myusername 406 Sep 17 19:54 authorized_keys
root@my-server:~#
No que diz respeito à documentação, meu servidor atende aos requisitos mínimos (linux, SSH e Python)
As especificações são - Ubuntu 12.04.2 LTS (GNU / Linux 3.5.0-23-genérico x86_64)
A versão ansible é 1.7.1
Estou executando a sessão ansible do meu laptop Python Python 2.7.5 OSX (10.9.4)
Abaixo está o Ansible Playbook que eu corri para fazer isso
---
# This playbook create my user {{userid}} and loads the public ssh-key
- name: create my user {{userid}} and loads the public ssh-key
hosts: myservername-public
# gather_facts: no
# remote_user: myusername
vars:
# security_groups: "sudo,adm"
security_groups: ""
userid: testjunk01
tasks:
- name: test connection
ping:
remote_user: myusername
- name: Create user {{userid}} groups={{security_groups}}
user: name={{userid}} shell=/bin/bash groups={{security_groups}} append=yes
password=$hashed_password_was_here_and_it_worked
- name: Verify that needed directories are in place before file copy
file: dest="/home/{{userid}}/.ssh"
mode=0644
owner={{userid}} group={{userid}}
state=directory
- name: Copy file into user {{userid}}'s directory
copy: src="/Users/osx_user/Documents/Projects/Projects Internal/Security/ssh-key-public/myusername"
dest="/home/{{userid}}/.ssh/authorized_keys"
mode=0644
owner={{userid}} group={{userid}}
backup=yes
- name: Reset permissions for file after file copy
file: dest="/home/{{userid}}/.ssh/authorized_keys"
mode=0644
owner={{userid}} group={{userid}}
state=file
===== Atualizou para ansible 1.7.2 e tentou novamente. Mesmos resultados Execução abaixo
nome do servidor e endereço IP mascarados
$ ansible-playbook playbooks/test01/Test02/create-user -i ansible-hosts --ask-pass -vv
SSH password:
PLAY [create my user testjunk01 and loads the public ssh-key] *****************
GATHERING FACTS ***************************************************************
<192..168.1.1> REMOTE_MODULE setup
ok: [myserver-public]
TASK: [test connection] *******************************************************
<192..168.1.1> REMOTE_MODULE ping
ok: [myserver-public] => {"changed": false, "ping": "pong"}
TASK: [Create user testjunk01 groups=] ****************************************
<192..168.1.1> REMOTE_MODULE user name=testjunk01 shell=/bin/bash groups= append=yes password=VALUE_HIDDEN
ok: [myserver-public] => {"append": true, "changed": false, "comment": "", "group": 1003, "groups": "", "home": "/home/testjunk01", "move_home": false, "name": "testjunk01", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/bash", "state": "present", "uid": 1003}
TASK: [Verify that needed directories are in place before file copy] **********
<192..168.1.1> REMOTE_MODULE file dest="/home/testjunk01/.ssh" mode=0644 owner=testjunk01 group=testjunk01 state=directory
changed: [myserver-public] => {"changed": true, "gid": 1003, "group": "testjunk01", "mode": "0644", "owner": "testjunk01", "path": "/home/testjunk01/.ssh", "size": 4096, "state": "directory", "uid": 1003}
TASK: [Copy file into user testjunk01's directory] ****************************
changed: [myserver-public] => {"changed": true, "dest": "/home/testjunk01/.ssh/authorized_keys", "gid": 1003, "group": "testjunk01", "md5sum": "fd6c6017993e847026a010bf67a96c1a", "mode": "0644", "owner": "testjunk01", "size": 406, "src": "/root/.ansible/tmp/ansible-tmp-1412114658.34-25330110994991/source", "state": "file", "uid": 1003}
TASK: [Reset permissions for file after file copy] ****************************
<192..168.1.1> REMOTE_MODULE file dest="/home/testjunk01/.ssh/authorized_keys" mode=0644 owner=testjunk01 group=testjunk01 state=file
ok: [myserver-public] => {"changed": false, "gid": 1003, "group": "testjunk01", "mode": "0644", "owner": "testjunk01", "path": "/home/testjunk01/.ssh/authorized_keys", "size": 406, "state": "file", "uid": 1003}
PLAY RECAP ********************************************************************
myserver-public : ok=6 changed=2 unreachable=0 failed=0