AnsibleがCentOS7でsshdを変更するたびに、将来のランダムゲームはリンクされません。

AnsibleがCentOS7でsshdを変更するたびに、将来のランダムゲームはリンクされません。

これは、考えられる解決策が何であるか、コミュニティ全体に尋ねるのと同じくらい迷惑な問題です。さらに迷惑なのは、この問題を経験している人が私だけのようだということだ。

デフォルトでは、CentOS 7.xでは、いつでもsshd設定またはsshdの一部が変更され、デーモンは次の3分以内に「ランダムポイント」から再起動/再ロードされ、ssh接続はすべてリセットされ、sshを介してサーバーに接続できません。数秒間。

これは時々sshdを変更してそれ自身を再ロードする必要があるため(たとえば、新しいCentOS 7xサーバーリリースで)、ansibleの場合に特に問題になります。ただし、今後のゲームではランダムにssh接続に失敗し、接続できないホストの残りのプレイ/ゲームが爆発します。いくつかはランダムに完了しますが、他のものはsshdが操作された後にプレイブックのさまざまな段階で失敗するため、これは大規模なホストモードでは特に悪いことです。 CentOS 5x、6x、さらにはSolarisではこれが起こらないことは注目に値します。

これを防ぐために私ができる最善の方法は、sshdを変更して90秒間待つことです。この方法も完全に安全ではありません。 7〜8回呼び出されると、これらのプレイブックの実行には20分以上かかります。

この環境に関するいくつかの事実は次のとおりです。

すべての新しいインストールは公式ISO DVDで行われます。すべてのサーバーはHyper-V 2012ゲストです。この問題のあるすべてのサーバーはCentOS 7.xです。

以下は、問題の実際の結果といくつかのハッキングされたソリューションです。

失敗する:

fatal: [voltron]: UNREACHABLE! => {"changed": false, "msg": "All items         completed", "results": [{"_ansible_item_result": true, "item": ["rsync", "iotop", "bind-utils", "sysstat.x86_64", "lsof"], "msg": "Failed to connect to the host via ssh: Shared connection to voltron closed.\r\n", "unreachable": true}]}

SSHDの変更の1つの例:

- name: Configure sshd to disallow root logins for security purposes on CentOS and Redhat 7x servers.
    lineinfile:
      backup: yes
      dest: /etc/ssh/sshd_config
      regexp: '^(#PermitRootLogin)'
      line: "PermitRootLogin no"
      state: present
    when: (ansible_distribution == "CentOS" or "RedHat") and (ansible_distribution_major_version == "7")
    notify: sshd reload Linux 7x

次のハンドラ:

- name: sshd reload Linux 7x
   systemd:
     state: restarted
     daemon_reload: yes
     name: sshd

最後に、問題を解決するためのスラム街を修正する試みは次のとおりです。

- name: Wait a bit on CentOS/Redhat 7x servers to ensure changes don't mess up ssh and screw up further plays.
    pause:
      seconds: 90
    when: (ansible_distribution == "CentOS" or "RedHat") and (ansible_distribution_major_version == "7")

私が思いついたよりも良い解決策が必要です。他の人も皆、このような状況にあって、彼と一緒に住んでいたと信じるのは難しいです。これを防ぐには、CentOS 7.xサーバーで何かを構成する必要がありますか?最初のSSHが失敗するたびに複数のSSHを試すなど、これを処理するために必要なものはありますか?

よろしくお願いします!

答え1

これは一般的な問題のようです。 2016年以降のAnsible SSH再試行パッチ

より良い解決策は、sshdが接続する準備ができるまで待つことです。 オリジナルライン次のAnsibleコードソリューションを使用してください。

[VM作成タスク...]

  - name:Kickstartのインストールが完了し、VMが再起動されるのを待ちます。 local_action: wait_for ホスト={{ vm_hostname }} port=22 遅延=30 timeout=1200 state=started

  - 名前:今、仮想マシンを構成します。

答え2

このモジュールを使用する代わりに、systemd以下を試してくださいservice

- name: Restart secure shell daemon post configuration
  service: 
    name: sshd
    state: restarted

関連情報