Подтвердить что ты не робот

Отображение вывода удаленной команды с помощью Ansible

В роли Ansible я генерирую пользовательский SSH-ключ. После этого я хочу распечатать его на экране и приостановить, чтобы пользователь мог скопировать и вставить его в другое место. Пока что у меня есть что-то вроде этого:

- 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="Plase add the SSH public key above to your GitHub account"

Задача "Показать SSH открытый ключ" завершается, но не отображает результат.

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

Там может быть лучший способ обойти это. Мне не нравится, что он всегда будет показывать "измененный" статус. Я нашел этот запрос на тягу для ansible - https://github.com/ansible/ansible/pull/2673 - но не уверен, могу ли я использовать его без написания собственного модуля.

4b9b3361

Ответ 1

Я не уверен в синтаксисе ваших конкретных команд (например, бродяга и т.д.), но в целом...

Просто зарегистрируйте ANSible (не нормально отображаемый) вывод JSON для переменной, затем отобразите каждый атрибут stdout_lines:

- 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="Plase add the SSH public key above to your GitHub account"
  register: pause
- debug: var=pause.stdout_lines

Ответ 2

Если вы передадите флаг -v команде ansible-playbook, то ansible отобразит вывод на вашем терминале.

В вашем случае использования вы можете попробовать использовать модуль fetch для копирования открытого ключа с сервера на локальный компьютер. Таким образом, при изменении файла он будет показывать только "измененный" статус.

Ответ 3

Распечатывает pubkey и позволяет избежать изменения статуса, добавив changed_when: False в задачу cat:

- 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="Plase add the SSH public key above to your GitHub account"