SystemUpdater for Ubuntu Server

2022年2月11日

概要

SPO GUILD JAPANのオペレーターが同じSPO GUILD JAPANのオペレーターのために作成したUbuntu OSのシステムパッケージを最新に保つためのスクリプトです。

SPOの皆さんはどうしてもノードの保守にかかりっきりになり、OSやインストールされているパッケージのセキュリティパッチなどは後手後手になりがちかと思います。しかし、現実はほぼ毎日のようにパッチが配布されているような状況です。そこでコマンド1つで簡単に済ませられればそれほど苦にならないのでは?という思いをスクリプトに込めました。

どのような違いが?

Ubuntuのパッチを当てるために最小の構成のコマンドは、

sudo apt update -y && sudo apt upgrade -y

かと思いますが、実はマシンの再起動が必要かどうかをチェックしたり、クリーンアップなど不要なファイルの削除などが抜けています。それを全てしようとすると結構なコマンドを打つ事に…

このスクリプトではそれらを自動で判断し、随時確認を取りながらアップデートを進めていきます。覚えるコマンドは以下だけです。

sudo check-update

インストール方法

sudo wget https://e-frontier.systems/cardano/check-update/check-update.sh -O /usr/local/bin/check-update
sudo chmod +x /usr/local/bin/check-update

※ wgetでエラーになる場合は先に以下を実行してください。

sudo apt install -y wget

オプション

更新後に再起動が必要な際に、再起動をしますか?とインタラクティブに表示するオプションです。

sudo wget https://e-frontier.systems/cardano/check-update/update-reboot -O /usr/local/bin/update-reboot
sudo chmod +x /usr/local/bin/update-reboot

実行方法

sudo check-update

このスクリプトの動作は以下の通りです。

  1. sudo(root) 権限で起動されているか確認
  2. 自スクリプトのアップデート確認
  3. システムアップデートの確認(apt update -y を実行)
  4. アップデート内容の確認(apt-get -s upgrade -V を実行)
  5. アップデートを行うか確認メッセージを表示
  6. アップデートを実行(apt -y upgrade を実行)
  7. クリーンアップ(apt -y autoremove と apt -y clean を実行)
  8. OS再起動が必要かどうかを確認(/var/run/boot-required があるかどうかで判断)
  9. 再起動をおこなうかどうか確認メッセージを表示
  10. 再起動をおこなう場合はノードをストップ(systemctl stop cardano-node を実行)
  11. システム再起動を実行(reboot を実行)