0Pricing
Ansible Academy · レッスン

SSH Pipelining と接続の再利用

タスクごとのオーバーヘッドを削減します。

「SSH Pipelining と接続の再利用」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。

SSHのオーバーヘッドは積み重なる

各タスクでは、SSHによる新しいログイン、ファイルのコピー、実行が発生することがあります。タスクとホストの数が増えると、このオーバーヘッドが実行時間の大部分を占めます。

タスクが通常実行される仕組み

デフォルトでは、Ansibleはモジュールをホストにコピーして実行し、その後で削除します。各ステップでSSHの往復が発生しますが、多くの場合これは省略できます。

Pipeliningで解決する

pipeliningを使うと、Ansibleは一時ファイルを先に書き込む代わりに、既存のSSHセッション経由でモジュールをストリーミングします。これにより、タスクごとの接続回数を減らせます。

[ssh_connection]
pipelining = True

requirettyの落とし穴

PipeliningにはTTYなしでsudoを実行できることが必要です。そのため、リモートのsudoersでrequirettyを強制してはいけません。最近のディストリビューションでは問題ありませんが、セキュリティを強化した一部の環境では調整が必要です。

接続を再利用する

OpenSSHのControlPersistはマスター接続を開いたままにし、後続のタスクをそこ経由で処理します。これにより、タスクごとに新しいハンドシェイクを行わずに済みます。

ssh_argsを調整する

Ansibleはssh_argsを通じて接続の再利用を有効にします。ControlPersistの値は、最後のタスクの後も共有ソケットを維持する時間を設定します。

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s

ソケットの場所

共有接続はcontrol pathのソケットファイルに保存されます。ソケット名の長さに関するオペレーティングシステムの制限を避けるため、このパスは短くしてください。

[ssh_connection]
control_path = %(directory)s/%%h-%%p-%%r

Pipeliningと再利用の違い

両者は異なるコストを削減します。pipeliningは1つのタスク内の往復通信を減らし、ControlPersistは複数のタスク間でSSHセッションを再利用します。

両方を組み合わせる

Pipeliningと永続的な接続は相乗効果を発揮します。両方を有効にすると、大規模なplaybookに対して、リスクが低く効果の大きい高速化を実現できます。

Factsの収集も高速化する

Factsが不要な場合は、gather_facts: falseを設定してsetupモジュールを省略します。これにより、各playの開始時に発生するコストの高い処理を取り除けます。

効果を測定する

profile_tasksコールバックを有効にすると、各タスクの実行時間を計測できます。どこで何秒かかっているかが正確に分かるため、調整の効果を確認できます。

クイックチェック

SSH経由で実行する前に、各タスクが一時ファイルを書き込まないようにしたいとします。

まとめ

pipeliningを有効にして往復通信を減らし、ControlPersistでSSHセッションを再利用します。両方を組み合わせると、大規模なplayで接続のオーバーヘッドを大幅に削減できます。⚡

よくある質問

「SSH Pipelining と接続の再利用」レッスンは無料ですか?

はい。「SSH Pipelining と接続の再利用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。

「SSH Pipelining と接続の再利用」で何を学びますか?

タスクごとのオーバーヘッドを削減します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ansible Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「SSH Pipelining と接続の再利用」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAnsible Academyレッスンでコードを書いて実行できますか?

はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. forks と並列実行のチューニング
  2. Strategy:linear、free、host_pinned
  3. SSH Pipelining と接続の再利用
  4. serial とローリングバッチ実行
← Ansible Academyに戻る