tutorial playbook machine control ansible_ssh_private_key_file command-line ssh configuration-management ansible

command line - playbook - Visualización de salida de un comando remoto con Ansible



ansible tutorial (3)

Imprime pubkey y evita el estado modificado al agregar changed_when: False to cat task:

- name: Generate SSH keys for vagrant user user: name=vagrant generate_ssh_key=yes ssh_key_bits=2048 - name: Check SSH public key command: /bin/cat $home_directory/.ssh/id_rsa.pub register: cat changed_when: False - name: Print SSH public key debug: var=cat.stdout - name: Wait for user to copy SSH public key pause: prompt="Please add the SSH public key above to your GitHub account"

En un rol de Ansible, genero la clave SSH del usuario. Después de eso, quiero imprimirlo en la pantalla y pausar para que el usuario pueda copiarlo y pegarlo en otro lugar. Hasta ahora tengo algo como esto:

- name: Generate SSH keys for vagrant user user: name=vagrant generate_ssh_key=yes ssh_key_bits=2048 - name: Show SSH public key command: /bin/cat $home_directory/.ssh/id_rsa.pub - name: Wait for user to copy SSH public key pause: prompt="Please add the SSH public key above to your GitHub account"

La tarea ''Mostrar clave pública SSH'' se completa pero no muestra la salida.

TASK: [Show SSH public key] *************************************************** changed: [default]

Puede haber una mejor manera de resolver esto. Realmente no me gusta el hecho de que siempre mostrará un estado ''cambiado''. Encontré esta solicitud de extracción de ansible - https://github.com/ansible/ansible/pull/2673 - pero no estoy seguro si puedo usarla sin escribir mi propio módulo.


No estoy seguro de la sintaxis de sus comandos específicos (por ejemplo, vagabundo, etc.), pero en general ...

Simplemente registre la salida JSON de Ansible (no mostrada normalmente) en una variable, luego muestre el atributo stdout_lines cada variable:

- name: Generate SSH keys for vagrant user user: name=vagrant generate_ssh_key=yes ssh_key_bits=2048 register: vagrant - debug: var=vagrant.stdout_lines - name: Show SSH public key command: /bin/cat $home_directory/.ssh/id_rsa.pub register: cat - debug: var=cat.stdout_lines - name: Wait for user to copy SSH public key pause: prompt="Please add the SSH public key above to your GitHub account" register: pause - debug: var=pause.stdout_lines


Si pasa el indicador -v al comando ansible-playbook, entonces ansible mostrará la salida en su terminal.

Para su caso de uso, puede intentar usar el módulo de fetch para copiar la clave pública desde el servidor a su máquina local. De esta forma, solo mostrará un estado de "cambio" cuando el archivo cambie.