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.