この記事では、Ansibleを使用してLinuxまたはWindowsマシンを効率的に再起動する方法について説明します。 Ansible再起動
モジュールはAnsible2.7(2018)で導入され、現在このモジュールは ansible-base
の一部です。 すべてのAnsibleインストールに含まれています。 再起動
に注意してください モジュールはAnsibleコントローラーノードから実行する必要があり、localhostなどのノードでは機能しません。
管理対象ノードを再起動する必要があるのはなぜですか?
Linuxオペレーティングシステムを再起動することは非常にまれです。ほとんどの場合、構成の変更またはパッケージの更新後に個々のサービスを再起動または再ロードすることで、目的の結果を得ることができます。ただし、パッチ適用やシステムアップグレードなど、ワークフローと効果を完全に完了するには、再起動操作が必要な場合があります。管理にAnsibleを使用している場合、完全な自動化を実現するには、この再起動タスクを含める必要があります。
Ansibleでは、システムの再起動タスクを実行するための複数の方法があるため、自動再起動は非常に簡単です。
前提条件
remote_user—を確認します Ansibleが管理対象ノードにログインするために使用しているもの— sudo
があります ノードにアクセスして再起動する権限。
古き良き方法–コマンドを再起動して待機
以前は、Ansibleを使用して2段階の方法で管理対象ノードを再起動していました。 (多くの方法がありますが、この方法は一般的な方法です):
シェル
を使用して再起動コマンドをトリガーします モジュール。-
wait_for_connection
を使用します 再起動後にノードがオンラインに戻ることを確認するモジュール。
例を示しましょう。
最初のタスクは単純な<code>shell モジュールを再起動してマシンを再起動すると、Ansibleはノードから切断されます。次のタスクでは、Ansibleはノードがオンラインに戻るのを待ちますが、タイムアウトは300秒または5分です。
- name: Reboot the machine
shell: "sleep 5 && reboot"
async: 1
poll: 0
- name: Wait for the machine to come back online
wait_for_connection:
connect_timeout: 60
sleep: 5
delay: 5
timeout: 300
とても簡単ですよね?ちょっと待ってください。Ansibleのreboot
を使用したより優れた効率的な方法があります。 モジュールを使用すると、1つのタスクで目標を達成できます。
[読むこともお楽しみいただけます:新しいAnsibleAutomationHubの紹介]
新しく効率的な方法–Ansible再起動モジュールを使用して再起動します
Ansible再起動
モジュールはAnsible2.7(2018年)で導入され、現在このモジュールは ansible-base
の一部です。 すべてのAnsibleインストールに含まれています。前提条件は同じですが、必要なのは restart
を使用した簡単なタスクだけです。 モジュール。 Ansible再起動
モジュールは、システムまたは管理対象ノードの再起動を処理し、システムがダウンするのを待って、オンラインに戻り、コマンドに応答します。
追加のオプションなしで、マシンを再起動するだけです。
- name: Reboot the machine with all defaults options
reboot:
restart_timeoutのようなオプションがあります タイムアウトまたはpre_reboot_delayを待機するため 、再起動する前に指定された秒数まで待機します。詳細については、AnsibleRebootModuleのドキュメントを参照してください。
これが再起動タスクのあるプレイブックです。非常にシンプルで管理が簡単であることがわかります。
---
- name: Linux Reboot Demo
hosts: rhel7-base
gather_facts: no
remote_user: devops
become: true
tasks:
- name: Reboot the machine (Wait for 5 min)
reboot:
reboot_timeout: 300
重要な注意事項
remote_userの場合 sudo
で構成されています パスワード、必ず -K
を追加してください 引数を入力し、 sudo
を入力します パスワード。次に例を示します:
$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
Ansible Towerを使用している場合は、 sudo
を追加します 次に示すように、資格情報インターフェイスのパスワード:
プレイブックをテストしてみましょう。
$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
BECOME password:
PLAY [Linux Reboot Demo] ************************************************************************************
TASK [Reboot the machine (Wait for 5 min)] ******************************************************************
changed: [rhel7-base.lab.local]
PLAY RECAP **************************************************************************************************
rhel7-base.lab.local : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Windowsマシンの再起動
Windowsマシンの再起動はどうですか?ご存知のように、Ansibleを使用してWindowsマシンを管理できます。この再起動タスクは、自動化ワークフローの一部として必要になります。
幸いなことに、他のWindowsの代替手段と同様に、専用のAnsible win_reboot
があります。 このタスクを処理するモジュール。設定は次のようになります:
- name: Reboot a Windows Machine
ansible.windows.win_reboot:
reboot_timeout: 360
詳細については、Ansiblewin_rebootモジュールのドキュメントを参照してください。
[Red Hatの無料ガイド:ビジネスを自動化するための5つのステップ。 ]
まとめ
restart
を使用する またはwin_reboot
Ansibleのモジュールは非常に簡単で、すでにこれを学びました。必要に応じて、Ansibleプレイブックに適切な再起動前(必要な場合にのみ再起動)および再起動後(再起動後にサービスまたは構成を確認するため)のタスクがあることを確認してください。
参照:
- アンシブルリブート
- Ansible win_reboot