9

新しくインストールされた Linux インスタンスを取得し、デフォルトのユーザーとしてログインし (user1 と呼びます)、別のユーザーを作成し (user2 と呼びます)、user1 を無効にするセットアップ プレイブックがあります。user1 は、この一連のタスクが実行される前にのみインスタンスにアクセスできるため、タスクは特別な Playbook にあり、新しいインスタンスで実行することを覚えておく必要があります。その後、user1 は存在しないため、すべての一般的なタスクは user2 によって実行されます。

セットアップ プレイブックと一般的なプレイブックを組み合わせて、セットアップ プレイブックを手動で実行する必要がなくなりたいと考えています。インスタンスに存在するユーザーを確認するタスクを作成して、SSH 経由で user1 としてログインしようとすることで、元のセットアップ タスクを条件付きにしようとしました。問題は、いずれかのユーザーに対して SSH ログインを試みると、ログインできないため、ansible が FATAL エラーで終了することです: user2 は新しいインスタンスにまだ存在しないか、セットアップ Playbook の実行後に user1 が無効になっています。

インスタンスの状態を外部から判断する唯一の方法は、SSH 経由でログインをテストすることだと思います。FATAL エラーを発生させずに SSH ログインをテストし、結果に基づいて条件付きでタスクを実行する方法はありますか?

4

2 に答える 2

5

Ansible >= 2.5 では、wait_for_connection_module( https://docs.ansible.com/ansible/2.5/modules/wait_for_connection_module.html ) を使用できます。

- name: Wait 600 seconds for target connection to become reachable/usable
  wait_for_connection:
于 2018-09-23T21:59:00.417 に答える