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="Please 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/267 -しかし、自分のモジュールを書かずにそれを使用できるかどうかはわかりません。
私はあなたの特定のコマンドの構文(例えば、浮浪者など)についてはわかりませんが、一般的に...
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="Please add the SSH public key above to your GitHub account"
register: pause
- debug: var=pause.stdout_lines
-v
フラグをansible-playbookコマンドに渡すと、ansibleは端末に出力を表示します。
ユースケースでは、 fetch モジュールを使用して、公開鍵をサーバーからローカルマシンにコピーしてみてください。これにより、ファイルが変更されたときにのみ「変更済み」ステータスが表示されます。
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="Please add the SSH public key above to your GitHub account"