他の多くの投稿や質問で読んだように、Ansible プレイブックの実行中に事実を収集するには時間がかかり、いくつかの理由で停止する可能性があります。
私の場合、動作はかなり奇妙です:
サーバーをセットアップするための Ansible プレイブックを入手しました。すべては SSH 経由でアクセス可能で、プレイブックは一度に 1 つのホストでのみ実行する場合 (どのホストかに関係なく)、期待どおりに実行されます。事実の収集は魔法のように機能し、数秒で完了します。
複数のホストに対してプレイブックを実行すると、問題が発生し始めます。ホスト ファイルにセットアップ用のホストを複数入力すると、情報の収集に非常に長い時間がかかります。
誰かがこの動作を経験したことがありますか? この問題を解決するためのヒントを教えてもらえますか?
プレイブックを開始するとき
ansible-playbook frontend_rollout.yml -i hosts -K -vvv
Ansible では、予想どおり sudo パスワードと SSH パスフレーズを入力するように求められます。各サーバーの SSH パスフレーズを要求すると、プロンプト出力が次のように 1 行で表示されます。
Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh': Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh':
両方のプロンプトに対してパスワードを 1 回だけ入力できます。これは想定された動作ですか? 何か見落としているのでしょうか?
答え1
興味がある人もいるかもしれないので、今のところ質問を削除していません。
事実収集が終わりのない理由となったのは、ssh パスフレーズの入力を求める動作の説明でした。
通常の人間であれば、次のような行動を期待するでしょう。
[Pre fact gathering phase]
- prompt for ssh passphrase for host 1
- input for host 1
- prompt ssh passphrase for host 2
- input for host 2
[fact gathering phase]
しかし、実際はどうだったかというと:
[Pre fact gathering phase]
- prompt ssh passphrase for host 1 AND host 2 in buggy output
- input for host 1
[fact gathering phase]
- host 1 fact gathering ok
- waiting for input for host 2 without any prompting
これは本当に混乱しました。
ちなみに、私は Ubuntu 16.04 で Python3.7 を使って Ansible 2.8 を使用していました。このバグが他のソフトウェア コンステレーションでも発生するかどうかはテストしていませんが、発生する可能性があります。