2013-09-13 4 views
38

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

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

«открытый ключ Show SSH» задача завершается успешно, но не показывает выход.

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

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

ответ

12

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

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

+0

Я не думаю, что я d хотите запустить весь плейер в сложном режиме, чтобы получить результат этого. Извлечение могло бы быть полезным для предотвращения «измененного» статуса, если бы я мог заставить playbook приостановить и отобразить содержимое локального файла. Мне нужно сообщить оператору добавить общедоступный SSH-ключ к авторизации учетной записи GitHub. Наверное, я мог бы просто предоставить дополнительные инструкции и сказать им открыть извлеченный файл. –

+1

@DamianMoore Вы можете использовать модуль «пауза», чтобы заставить проигрыватель приостановить работу, и вы можете использовать модуль «debug» с плагином «lookup» для печати файла на экран. –

51

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

Просто зарегистрируйтесь (не-нормально показано) вывод 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

По какой-то причине я по-прежнему не получаю никакого вывода, я даже использовал '-vvvv' на недоступном, и я вообще не получаю никакого вывода. Пытается с 'command: ls' – sorin

+0

@sorin Я также не видел выхода, в моем случае проблема заключалась в том, что мой параметр« hosts »в playbook был установлен неправильно. Такая конфигурация трудно отлаживать, поскольку Ansible не указывает указание на хосты, которые были предприняты. Возможно, это была твоя проблема? – blong

5

распечатки Публичных и избегает измененного состояния пути добавления changed_when: False кошки задачи:

- 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" 
Смежные вопросы