web-dev-qa-db-fra.com

Affichage du résultat d'une commande à distance avec Ansible

Dans un rôle Ansible, je génère la clé SSH de l'utilisateur. Après cela, je veux l'imprimer à l'écran et faire une pause pour que l'utilisateur puisse le copier et le coller ailleurs. Jusqu'à présent, j'ai quelque chose comme ça:

- 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 tâche 'Afficher la clé publique SSH' se termine mais n'affiche pas le résultat.

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

Il y a peut-être une meilleure façon de s'y prendre. Je n'aime pas vraiment le fait qu'il affichera toujours un statut "changé". J'ai trouvé cette demande d'extraction pour ansible - https://github.com/ansible/ansible/pull/267 - mais je ne suis pas sûr de pouvoir l'utiliser sans écrire mon propre module.

59
Damian Moore

Je ne suis pas sûr de la syntaxe de vos commandes spécifiques (vagabond, etc.), mais en général ...

Enregistrez simplement la sortie JSON d'Ansible (qui n'est pas normalement affichée) dans une variable, puis affichez l'attribut stdout_lines De chaque 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
77
elimisteve

Si vous passez le -v drapeau à la commande ansible-playbook, puis ansible affichera la sortie sur votre terminal.

Pour votre cas d'utilisation, vous pouvez utiliser le module fetch pour copier la clé publique du serveur sur votre ordinateur local. De cette façon, le statut "modifié" ne sera affiché que lorsque le fichier sera modifié.

18
Lorin Hochstein

Imprime pubkey et évitez le statut modifié en ajoutant changed_when: False à cat tâche:

- 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"
6
luissquall