ホストに接続したいので、screenを使ってansibleプレイブックを実行します。 screenを使用すると、SSH接続が中断または終了したときにスクリプトを完了できます。これまでは問題ありません。
私のAnsibleホストは、インベントリファイルのホストに接続するためにパスワードまたはSSHキーが必要です。したがって、Ansible インスタンスに接続するときに新しい秘密鍵を生成する代わりに、SSH エージェント転送を使用します。
# from my macOS
ssh-add -K
ssh -A ansible-host
# from ansible-host
screen -R run-playbook-example
ansible-playbook -i inventory/hosts my-playbook.yml
今まではそんなに良くなった。切断された接続をシミュレートするまで。これはまた、プロキシ転送が機能しなくなり、ansible-hostがどのホストにも認証できないことを意味します。これにより、画面使用のポイントがすべて崩れます。
どちらもできる方法はありますか? 1) 新しい SSH 秘密鍵を生成して Ansible ホストに保存しないで、SSH エージェントの転送やその他のトリックを使用します。 2)AnsibleホストへのSSH接続が失われることを気にせずに画面上で実行できます。接続が切断されました。
何かこれが不可能だと言ってくれます。しかし、私は画面を使用し、SSH接続の問題から安全になるために複数の人がアクセスできる秘密鍵を保存する必要が本当に嫌いです。この問題を解決するためのアイデア、ヒント、その他の方法はありますか?
答え1
このソリューションに興味がある人は、SSH設定に次のオプションを追加する必要があります。これをSSH多重化と呼び、再利用のためにSSH接続を保存します。
Host *
Controlmaster auto
Controlpath /tmp/ssh-%r@%h:%p
ControlPersist yes
したがって、ansibleが実行されているホストのスクリーンセッション接続を切断すると、既存のSSH接続は引き続き実行され再利用されます(切断前に設定されている場合)。