Tentando adicionar as chaves públicas do Github de duas pessoas ao arquivo de usuários autorizados de um usuário. Consigo recuperar com sucesso as chaves SSH:
---
- hosts: 127.0.0.1
connection: local
vars:
my_users:
belminf: "belminf"
bob: "tmessins"
tasks:
- name: Retrieving all keys from GitHub
shell: /usr/bin/curl https://github.com/{{ item.value }}.keys 2> /dev/null
register: ssh_keys
with_dict: my_users
- debug: var=ssh_keys
No entanto, não tenho certeza de como percorrer os ssh_keys
resultados e usar authorized_keys
a tarefa para adicionar as chaves recuperadas.
Minha tentativa ridícula:
- name: Adding keys to authorized_keys
authorized_key: user=belminf key="{{ item }}" path=/home/belminf/test_auth state=present
with_items: ssh_keys.results
Resultados em invalid key specified
. Compreensivelmente, mas estou sem ideias. Alguém?
A partir do Ansible 1.9, o valor de
key
pode ser uma url, dispensando a necessidade de curling da url viashell
módulo.Exemplo:
OK, fiz alguns ajustes em seu manual, e aqui está a versão revisada
Algumas mudanças nota:
authorized_key
módulo, a chave foi alterada paraitem.stdout
. O stdout era a chave pública que você precisa.authorized_key
módulo, definiignore_errors: yes
retomar a execução do playbook sempre que a sua tarefa curl falhar ao buscar, problema de internet ou 404 não encontrado (como a chave de tmessins). É claro que você pode ajustá-lo controlando o que define a falha para que ainda falhe quando outro erro ocorrer.Agora é bem simples:
para detalhes, verifique esta função do github