specify publica privada llaves crear claves clave agregar ssh batch-processing ssh-keys ansible ansible-playbook

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