ryandaniels.server_update_reboot

ansible-role-server-update-reboot

サーバーを最新のパッケージに更新し、再起動を行い、サーバーが起動するまで待つためのAnsibleロールです。この後にさらなるロールを追加し、サーバーをインストール・設定することができます。
パッケージの更新を除外したり、特定のパッケージのみ更新したり、特定のパッケージをインストールすることも可能です。
Redhat/CentOSおよびUbuntuで動作します。

Redhat/CentOS 7およびUbuntu 16.04のMeltdown/Spectre Mitigationのためにパッケージを更新するために使用できます。

より詳細な例はブログ投稿にあります:Ansibleを使用してUbuntu、CentOS、Redhatを更新する

必要条件: Ansible 2.7.1(rebootモジュールを使用し、2.7.1でreboot_timeoutが修正されています)

注意:
このロールはカーネルの更新がある場合、かつreboot変数がtrueの場合にサーバーを再起動することがあります(再起動はデフォルトの設定です)。

テストしたディストリビューション

  • Ubuntu 18.04 / 16.04
  • CentOS & RHEL 7.x

グループ変数

./group_vars/centos-dev/proxy.yml
プロキシを使用する場合:

proxy_env:
  http_proxy: http://my.internal.proxy:80
  https_proxy: https://my.internal.proxy:80

プロキシを使用しない場合:

proxy_env: []

デフォルト設定

  • debug_enabled_default: true|false(デフォルトはfalse)
  • update_default: true|false(デフォルトはtrue)
  • reboot_default: true|false(デフォルトはtrue)
  • server_update_reboot_pre_delay: タスク実行前に待機する時間(秒単位)
  • server_update_reboot_pre_reboot_delay: 再起動前に待機する時間(秒単位)
  • server_update_reboot_post_reboot_delay: 再起動後に待機する時間(秒単位)
  • server_update_reboot_reboot_timeout: サーバーが再起動するのを待つ最大時間(秒単位)

RHEL/CentOS用の変数:

  • server_update_yum_exclude_pkgs: 更新を除外するパッケージのカンマ区切り文字列。ワイルドカードを使用できます。(デフォルトは[])
  • server_update_yum_install_pkgs: 限定的に更新するパッケージのカンマ区切り文字列。ワイルドカードを使用できます。(デフォルトは'*'で全パッケージを意味します)

Ubuntu用の変数:

  • server_update_apt_exclude_default: true|false。下にある除外リストを使用する場合はtrueに設定(デフォルトはfalse)
  • server_update_apt_exclude_pkgs: 更新しないパッケージのリスト(各項目は改行で区切る)。ワイルドカードを含めて複数のパッケージを一致させることもできます(ただし、マッチを開始するためには^を使用すること)。(デフォルトは未定義)
  • server_update_apt_default: full|update_specific|install(デフォルトはfull)
    • full: "apt-get dist-upgrade"を使用して全パッケージを更新
    • update_specific: server_update_apt_install_pkgs変数のリストからのみ更新
    • install: server_update_apt_install_pkgs変数のリストからのみインストール
  • server_update_apt_install_pkgs: 限定的に更新またはインストールするパッケージのリスト(各項目は改行で区切る)。ワイルドカードを含めて複数のパッケージを一致させることもできます。(デフォルトは未定義)

例のプレイブック server-update-reboot.yml

以下のプレイブックの例は、1回に1台のサーバーを更新/再起動します(max_fail_percentageおよびserial変数を使用)。すべてのサーバーを一度に更新/再起動したい場合は、それらの行のコメントを外してください。

---
- hosts: '{{inventory}}'
  max_fail_percentage: 0
  serial: 1
  become: yes
  roles:
#  - stop-applications
  - server-update-reboot
#  - server-config-xyz
#  - start-applications

準備

  • Ansibleをインストール
  • キーを作成
  • クライアントにssh接続してknown_hostsファイルにエントリーを追加
  • クライアントサーバーのauthorized_keysを設定
  • ansibleコマンドを実行

使用法

Redhat/CentOS/Ubuntuの場合

すべてのデフォルトを使用して: サーバーを更新し、再起動し、サーバーが起動するまで待機します:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev" -i hosts-dev

上記と同じですが、サーバーは再起動しません:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev reboot_default=false" -i hosts-dev

Redhat/CentOSの場合

指定されたパッケージを除いてすべてのパッケージを更新します(RHEL用):

ansible-playbook server-update-reboot.yml --extra-vars 'inventory=centos-dev server_update_yum_exclude_pkgs="mysql*, bash, openssh*"' -i hosts-dev

特定のパッケージのみを更新(またはインストール)します(RHEL用):

ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev

Ubuntuの場合

指定されたパッケージを除いてすべてのパッケージを更新します(Ubuntu用):

ansible-playbook server-update-reboot.yml --extra-vars 'inventory=ubuntu-dev server_update_apt_exclude_default=true' --extra-vars '{"server_update_apt_exclude_pkgs": [bash, openssl, ^mysql*, ^openssh*]}' -i hosts-dev

特定のパッケージのみを更新します(Ubuntu用):

ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode, openssh*]}" -i hosts-dev

特定のパッケージのみをインストールします(Ubuntu用)。ワイルドカードには注意が必要です:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=install" --extra-vars "{'server_update_apt_install_pkgs': [bash, openssh-server]}" -i hosts-dev

Spectre/Meltdownの緩和策

Redhat/CentOS 7およびUbuntu 16.04のために、SpectreおよびMeltdown(CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)をパッチするためのコマンドです。
Ubuntuからの情報
Redhatからの情報

または、最初のコマンドを使用してすべてをパッチすることもできます。

Redhat/CentOS 7の場合(Spectre/Meltdownの緩和策)

ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev

Ubuntu 16.04の場合(Spectre/Meltdownの緩和策)

ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode]}" -i hosts-dev

注意事項

RHEL5

RHEL/CentOS 5には、インストールが必要な依存関係があります:python-simplejson
このコマンドはrawモジュールを使用してインストールします:

ansible centos5 -m raw -a "yum install -y python-simplejson" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev

SELinux

SELinuxが有効または許可モードの場合、依存関係が必要です:libselinux-python
このコマンドはrawモジュールを使用してインストールします:

ansible centos5 -m raw -a "yum install -y libselinux-python" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev
プロジェクトについて

Role to update packages on linux and optionally reboot

インストール
ansible-galaxy install ryandaniels.server_update_reboot
ライセンス
mit
ダウンロード
15.9k
所有者
Ansible all the things