web-dev-qa-db-ja.com

AnsibleのSSHコマンドのタイムアウトを増やす

現在、Ansibleを使用して、IPv6リンクローカルアドレスを使用してベアメタルをプロビジョニングしています。サーバーがプロビジョニングされると、ansibleは1つのシェルコマンドとしてサーバーで一連のテストを実行し、プロビジョニングが成功したことを確認します。これらのテストの実行には約10分かかります。

私が直面している問題は、コマンドが完了する前に接続がタイムアウトしたように見えることです。

Ansibleからのエラーは次のとおりです。

fatal: [fe80::5054:ff:XXXX:XXXX%eth0]: UNREACHABLE! => {
  "changed": false, 
  "msg": "Failed to connect to the Host via ssh: Shared connection to fe80::5054:ff:XXXX:XXXX%eth0 closed.\r\n",
  "unreachable": true
}

このエラーを見ると、SSH接続に問題があると思うかもしれません。このタスクの前に同じホストで他のいくつかのタスクが正常に実行されるため、SSH接続自体は良好です。

Ansibleがコマンドの終了を待つようにタイムアウトを増やすにはどうすればよいですか? Ansible構成内でこのタイムアウトを増やすことはできますか、またはタイムアウトを増やすためにコマンド自体を変更する必要がありますか?

11
grizzthedj

タスクを非同期で実行したいと思うでしょう。大まかな手順は次のとおりです。

  1. インスタンスの展開リクエストを送信する
  2. 当該リクエストのある種のインスタンスまたはリクエストIDを取得する
  3. リクエストの結果をポーリングする
  4. プレイブックを続ける

official docs のこの動作の例を次に示します

- name: 'YUM - fire and forget task'
  yum:
    name: docker-io
    state: installed
  async: 1000
  poll: 0
  register: yum_sleeper

- name: 'YUM - check on fire and forget task'
  async_status:
    jid: "{{ yum_sleeper.ansible_job_id }}"
  register: job_result
  until: job_result.finished
  retries: 30
10
Camilo Santana

私はほぼ同様の問題を抱えていましたが、-vvvではあまり情報がありませんでした。しかし、ゲストのsyslogを確認すると、ansibleスクリプトを実行しているときにメモリが不足していることがわかりました。 syslogエントリを参照して、ansibleスクリプトを実行するときにゲストに問題があるかどうかを確認できれば便利です。

0
IndikaM