Отображение вывода удаленной команды с помощью 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 - но не уверен, могу ли я использовать его без написания собственного модуля.
Ответы
Ответ 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"