Ansible: 接続できないホストからメールを送信する

Ansible: 接続できないホストからメールを送信する

AnsibleのホストにSSH経由でアクセスできなくなった場合は、電子メールを受信したいと思います。

私はその仕事をするために演劇を書こうとしました(下記参照)。事実を収集した後に接続できないホストは削除されるため、電子メールの送信は接続できないホストに対しては実行されません。

-name:ホストアクセシビリティの確認
  スポンサー:みんな
  仕事:
    - local_action: shell ssh デプロイ@{{ansible_hostname}} echo OK
      登録:check_ssh
    - local_action: デバッグメッセージ = "{{check_ssh.stdout}}"
      いつ:check_ssh.stdout! =「わかりました」

ありがとうございます。

ベストアンサー1

これが私の解決策ですansible > 2.0

- name: Check host accessibility
  hosts: all
  user: deploy
  gather_facts: no
  tasks:
    - block:
        - command: echo OK

        - assert:
            that:
              - ansible_play_hosts == ansible_play_hosts_all
      rescue:

        - name: send email when something goes wrong (pe, cannot reach a machine)
          local_action:
            module: mail
            host: localhost
            to: < email here >
            from: < email here >
            subject: 'Host check - {{ (ansible_play_hosts_all | difference(ansible_play_hosts)) | first }}'
            body: 'Cannot login into the machine'
          when: inventory_hostname == "< hostname of main server here >"

これが私が提供できる最高のソリューションです。残念ながら、ホストがだとは思わansibleないので、セクションは呼び出されません。ホストの総数と比較して、最後の操作を実行したホストの数を計算する問題を修正しました。異なる場合は、少なくとも1つのホストがあることを意味するので、アサーションを実行してそのセクションに進みます。 2番目の問題は、アサーションがすべてのホストで機能するため、電子メールを送信するホストを1つだけ選択する必要があることです(この場合はAnsibleがインストールされているサーバーを選択しました)。unreachablefailedrescueunreachablerescue

おすすめ記事