publica - Agregue varias claves SSH usando ansible
putty claves ssh (1)
He escrito una secuencia de comandos ansible para eliminar claves SSH de servidores remotos:
---
- name: "Add keys to the authorized_keys of the user ubuntu"
user: ubuntu
hosts: www
tasks:
- name: "Remove key #1"
authorized_key: user=ubuntu key="{{ item }}" state=absent
with_file:
- id_rsa_number_one.pub
- name: "Remove key #2"
authorized_key: user=ubuntu key="{{ item }}" state=absent
with_file:
- id_rsa_number_two.pub
...
Agregar cada archivo como una tarea diferente es absurdo, así que he intentado usar with_fileglob
:
- name: "Remove all keys at once"
authorized_key: user=ubuntu key="{{ item }}" state=absent
with_fileglob:
- /Users/adamatan/ansible/id_rsa*.pub
Pero esto falla con líneas como esta:
failed: [www.example.com] => (item = / Users / adamatan / ansible / id_rsa_one.pub) => {"failed": true, "item": "/Users/adamatan/ansible/id_rsa_one.pub" } msg: clave no válida especificada: /Users/adamatan/ansible/id_rsa_one.pub
El mismo archivo de clave se elimina con éxito utilizando una única tarea, pero falla cuando forma parte de un fileglob
.
¿Cómo puedo agregar o eliminar por lotes las claves SSH usando ansible?
Creo que solo obtiene los nombres de archivo usando with_fileglob
, pero with_file
recupera el contenido del archivo. Y el módulo autorizado_key requiere la clave real.
Por lo tanto, debe seguir usando loop con el with_fileglob
, pero en lugar de enviar el nombre de archivo al parámetro "key =", debe usar el complemento de búsqueda de archivos .
- name: "Remove all keys at once"
authorized_key: user=ubuntu key="{{ lookup(''file'', item) }}" state=absent
with_fileglob:
- /Users/adamatan/ansible/id_rsa*.pub