目的
手動アップデートをスケジュールスクリプトで自動化して、ミスを無くす
目標
1.UTM へIP ベースの穴あけ
URL ベースで対応できないソフトだった(怒)
2.アップデートとサーバ再起動のスクリプトを作成して、2~3日動かしてみる
CentOS7 で、スクリプト作成+cron 登録して、実行する
・バージョンが上がっていることを確認する
・エラー無いことを確認する
・正常か異常かを管理者へ通知する
方式
UTM へCentOS アップデート先のGIP へアクセスする許可を追加する。その後、アップデートと再起動を行い、正常か異常かをメールするスクリプトを作る
作業
まずは、調査系を。。。
1.の穴あけ用にGIP を確認
どこに問合せしてるんだろ?と思い、repo を確認する
cat /etc/yum.repos.d/CentOS-Base.repo
色々でてくるので、下のサイトで項目を確認する。
http://zudoh.com/archives/379
例えば、
released updates の mirrorlist に書いてある下のアドレスぽい。
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
いくつか変数で実行しているから、それらを調査。
調査対象は、下の3つ
$releasever
$basearch
$infra
下のサイトを参照
https://oki2a24.com/2016/09/11/how-to-know-yum-releaserver-basearch-infra/
下のコマンドで情報が表示される。
yum info centos-release
$releasever = 7
$basearch = x86_64
でよさそう
それぞれのIP アドレスを調べる...ための nslookup は、CentOS7 にデフォルトで入っていないようだ。
sudo yum -y install bind-utils
詳細はTips へ置いておくが、結論として、下のドメインとそれに紐づくIP を許可する。
それぞれ、2018年7月11日現在、GCP のCENTOS 7 テンプレートのもの。
ドメイン一覧
mirror.fairway.ne.jp
ftp.tsukuba.wide.ad.jp
ftp.yz.yamagata-u.ac.jp
ftp.riken.jp
ftp-srv2.kddilabs.jp
mirrors.cat.net
ftp.iij.ad.jp
ftp.nara.wide.ad.jp
ftp.jaist.ac.jp
mirror.nus.edu.sg
centos.usonyx.net
mirror.qoxy.com
mirror.0x.sg
mirrorlist.centos.org
centos.mirror.iweb.ca
mirror.team-cymru.com
下のIP を許可する
122.213.199.121/32
203.178.132.80/32
133.24.248.17/32
133.24.248.19/32
133.24.248.16/32
133.24.248.18/32
134.160.38.1/32
202.255.47.226/32
103.88.44.2/32
202.232.140.70/32
203.178.137.175/32
150.65.7.130/32
137.132.84.194/32
116.12.48.100/32
36.255.124.203/32
210.23.25.77/32
67.29.148.138/32
85.236.43.108/32
212.69.166.138/32
216.176.179.218/32
192.175.120.169/32
38.229.66.100/32
シェルスクリプトを作成する
まずは、作業場へ移動
cd /usr/local/bin/
yum-update 用のシェルスクリプトを作成
sudo vi yumupdate.sh
#!/bin/bash
sudo yum -y update
試験してみる。
bash /usr/local/bin/yumupdate.sh
update の処理がかかれば試験完了
シェルスクリプトをスケジュール実行する
Windows でいうスケジューラーにあたる
crontab へ記載する
sudo crontab -e
vi エディタが開くので、
毎時00分に実行する場合、下のように記載
00 * * * * bash /usr/local/bin/yumupdate.sh
書き方は、下のサイトを参照
http://www.server-memo.net/tips/crontab.html
sudo cat /var/log/cron
ログへ下のように実行ログが出ていれば成功。
Jul 11 07:45:01 ホスト名 CROND[24054]: (root) CMD (bash /usr/local/bin/yumupdate.sh)
ちゃんとできているか試験
VM を新たに作り試験してみる。
スクリプト作成とスケジュールをセットして、OS のver が上がることを確認する。
試験前の情報
sudo cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
シェルスクリプトを作成する
まずは、作業場へ移動
cd /usr/local/bin/
yum-update 用のシェルスクリプトを作成
sudo vi yumupdate.sh
#!/bin/bash
sudo yum -y update
crontab でスケジュール設定
sudo crontab -e
スクリプトスケジュールを近々に設定して自動で実行されるのを待つ。
再度、OS ver を表示
sudo cat /etc/redhat-release
????今日は、急遽でかけることになり、更新完了を待てない!すまねぇ。。。bash を実行すると、アップデート中で待ち~っと出たため、アップデートは走っているようだった。
Tips
/etc/yum.repos.d/CentS-Base.repo の base,updates, extras, centosplus 全ての宛先を開けなければいけないことが分かった。やってられねぇ。。。けどやるしかないか。
[base]下のサイトへアクセスして、リストを取得する
http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=
※ここのアクセスは、別端末のブラウザから実施
http://mirror.fairway.ne.jp/centos/7.5.1804/os/x86_64/
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.5.1804/os/x86_64/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.5.1804/os/x86_64/
http://ftp.riken.jp/Linux/centos/7.5.1804/os/x86_64/
http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.5.1804/os/x86_64/
http://mirrors.cat.net/centos/7.5.1804/os/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/7.5.1804/os/x86_64/
http://ftp.nara.wide.ad.jp/pub/Linux/centos/7.5.1804/os/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.5.1804/os/x86_64/
http://mirror.nus.edu.sg/centos/7.5.1804/os/x86_64/
[updates]下のサイトへアクセスして、リストを取得する
http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=
※ここのアクセスは、別端末のブラウザから実施
http://mirrors.cat.net/centos/7.5.1804/updates/x86_64/
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.5.1804/updates/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/7.5.1804/updates/x86_64/
http://ftp.riken.jp/Linux/centos/7.5.1804/updates/x86_64/
http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.5.1804/updates/x86_64/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.5.1804/updates/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.5.1804/updates/x86_64/
http://mirror.fairway.ne.jp/centos/7.5.1804/updates/x86_64/
http://centos.usonyx.net/main/7.5.1804/updates/x86_64/
http://mirror.nus.edu.sg/centos/7.5.1804/updates/x86_64/
[extras]下のサイトへアクセスして、リストを取得する
http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras&infra=
※ここのアクセスは、別端末のブラウザから実施
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.5.1804/extras/x86_64/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.5.1804/extras/x86_64/
http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.5.1804/extras/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/7.5.1804/extras/x86_64/
http://mirror.fairway.ne.jp/centos/7.5.1804/extras/x86_64/
http://ftp.riken.jp/Linux/centos/7.5.1804/extras/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.5.1804/extras/x86_64/
http://mirrors.cat.net/centos/7.5.1804/extras/x86_64/
http://centos.usonyx.net/main/7.5.1804/extras/x86_64/
http://mirror.qoxy.com/centos/7.5.1804/extras/x86_64/
[centosplus]
http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=centosplus&infra=
※ここのアクセスは、別端末のブラウザから実施
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.5.1804/centosplus/x86_64/
http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.5.1804/centosplus/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/7.5.1804/centosplus/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.5.1804/centosplus/x86_64/
http://mirrors.cat.net/centos/7.5.1804/centosplus/x86_64/
http://ftp.riken.jp/Linux/centos/7.5.1804/centosplus/x86_64/
http://mirror.fairway.ne.jp/centos/7.5.1804/centosplus/x86_64/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.5.1804/centosplus/x86_64/
http://centos.usonyx.net/main/7.5.1804/centosplus/x86_64/
http://mirror.0x.sg/centos/7.5.1804/centosplus/x86_64/
URL からIP を正引きするため、ドメインのみに加工して、重複排除したら下の通り。
※重複排除は、エクセルで実施
mirror.fairway.ne.jp
ftp.tsukuba.wide.ad.jp
ftp.yz.yamagata-u.ac.jp
ftp.riken.jp
ftp-srv2.kddilabs.jp
mirrors.cat.net
ftp.iij.ad.jp
ftp.nara.wide.ad.jp
ftp.jaist.ac.jp
mirror.nus.edu.sg
centos.usonyx.net
mirror.qoxy.com
mirror.0x.sg
mirrorlist.centos.org
調査は、下の通り。
"nslookup"
対話モード(> だけの状態)になったら、上のドメインを入れる。
調査結果は、下の通り。(2018/07/11 現在)
122.213.199.121/32
203.178.132.80/32
133.24.248.17/32
133.24.248.19/32
133.24.248.16/32
133.24.248.18/32
134.160.38.1/32
202.255.47.226/32
103.88.44.2/32
202.232.140.70/32
203.178.137.175/32
150.65.7.130/32
137.132.84.194/32
116.12.48.100/32
36.255.124.203/32
210.23.25.77/32
実行すると下のエラーが出る
Failed connect to mirrorlist.centos.org:80
下にあるmirrorlist.centos.org ドメインのIPを追加
67.219.148.138/32
85.236.43.108/32
212.69.166.138/32
216.176.179.218/32
さらにyum update すると下のエラー
(1/10): base/7/x86_64/group_gz | 166 kB 00:00:00
base/7/x86_64/primary_db FAILED
http://centos.mirror.iweb.ca/7/os/x86_64/repodata/03d0a660eb33174331aee3e077e11d4c017412d761b7f2eaa8555e7898e701e0-primary.sqlite.bz2: [Errno 12] Timeout on http://centos.mirror.iweb.ca/7/os/x86_64/repodata/03d0a660eb33174331aee3e077e11d4c017412d761b7f2eaa8555e7898e701e0-primary.sqlite.bz2: (28, 'Connection timed out after 30000 milliseconds')
Trying other mirror.
epel/x86_64/group_gz FAILED
http://mirror.team-cymru.com/epel/7/x86_64/repodata/4aae0a3bd743fb4805be7d7f3c9fdcf76934fcb8f22ce4ea237f57bc85e9243d-comps-Everything.x86_64.xml.gz: [Errno 12] Timeout on http://mirror.team-cymru.com/epel/7/x86_64/repodata/4aae0a3bd743fb4805be7d7f3c9fdcf76934fcb8f22ce4ea237f57bc85e9243d-comps-Everything.x86_64.xml.gz: (28, 'Connection timed out after 30001 milliseconds')
Trying other mirror.
epel/x86_64/updateinfo FAILED
http://mirror.team-cymru.com/epel/7/x86_64/repodata/d51f5143ca1af84a289a105797cbd21b79d354d68842e80454dcbbdc9783db7e-updateinfo.xml.bz2: [Errno 12] Timeout on http://mirror.team-cymru.com/epel/7/x86_64/repodata/d51f5143ca1af84a289a105797cbd21b79d354d68842e80454dcbbdc9783db7e-updateinfo.xml.bz2: (28, 'Connection timed out after 30001 milliseconds')
Trying other mirror.
下のドメインのIP を追加
centos.mirror.iweb.ca
mirror.team-cymru.com
IP
192.175.120.169
38.229.66.100
再度、トライするもエラー。base のサイトが全滅したようだ。
failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try.
http://centos.mirrors.tds.net/pub/linux/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.mirrors.tds.net/pub/linux/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://dallas.tx.mirror.xygenhosting.com/CentOS/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://dallas.tx.mirror.xygenhosting.com/CentOS/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.compevo.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.compevo.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.scalabledns.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.scalabledns.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.steadfast.net/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.steadfast.net/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirror.vcu.edu/pub/gnu_linux/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.vcu.edu/pub/gnu_linux/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirrors.advancedhosters.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.advancedhosters.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirrors.liquidweb.com/CentOS/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.liquidweb.com/CentOS/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirrors.tummy.com/mirrors/CentOS/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.tummy.com/mirrors/CentOS/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://repos.mia.quadranet.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://repos.mia.quadranet.com/centos/7.5.1804/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
下のドメインも追加
centos.mirrors.tds.net
dallas.tx.mirror.xygenhosting.com
mirror.compevo.com
mirror.scalabledns.com
mirror.steadfast.net
mirror.vcu.edu
mirrors.advancedhosters.com
mirrors.liquidweb.com
mirrors.tummy.com
repos.mia.quadranet.com
IP一覧
64.50.236.218/32
69.162.87.178/32
103.25.61.44/32
23.89.0.110/32
208.100.4.53/32
128.172.15.65/32
46.229.166.133/32
69.167.187.144/32
66.35.36.129/32
173.44.32.10/32
まだエラーが出る
http://mirror.chpc.utah.edu/pub/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.chpc.utah.edu/pub/c
entos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://centos.host-engine.com/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.host-engine.com/7.5.1804/upd
ates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://centos.mirror.constant.com/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.mirror.constant.com/7.5.
1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://centos.mirror.lstn.net/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.mirror.lstn.net/7.5.1804/upd
ates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirror.ancl.hawaii.edu/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.ancl.hawaii.edu
/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.san.fastserv.com/pub/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.san.fastse
rv.com/pub/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.vtti.vt.edu/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.vtti.vt.edu/centos/7.5.18
04/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirror.wdc1.us.leaseweb.net/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.wdc1.us.leaseweb
.net/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirrors.seas.harvard.edu/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.seas.harvard.edu/c
entos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirrors.sorengard.com/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.sorengard.com/centos/
7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
まだエラーが出た。
repodata/repomd.xml from updates: [Errno 256] No more mirrors to try.
http://mirror.chpc.utah.edu/pub/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.chpc.utah.edu/pub/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://centos.host-engine.com/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.host-engine.com/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://centos.mirror.constant.com/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.mirror.constant.com/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://centos.mirror.lstn.net/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://centos.mirror.lstn.net/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirror.ancl.hawaii.edu/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.ancl.hawaii.edu/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.san.fastserv.com/pub/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.san.fastserv.com/pub/linux/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30000 milliseconds')
http://mirror.vtti.vt.edu/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.vtti.vt.edu/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirror.wdc1.us.leaseweb.net/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.wdc1.us.leaseweb.net/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirrors.seas.harvard.edu/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.seas.harvard.edu/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
http://mirrors.sorengard.com/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.sorengard.com/centos/7.5.1804/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
下のドメインを追加
mirror.chpc.utah.edu
centos.host-engine.com
centos.mirror.constant.com
centos.mirror.lstn.net
mirror.ancl.hawaii.edu
mirror.san.fastserv.com
mirror.vtti.vt.edu
mirror.wdc1.us.leaseweb.net
mirrors.seas.harvard.edu
mirrors.sorengard.com
IP は下の通り
204.99.128.20/32
198.255.114.50/32
108.61.5.83/32
64.31.0.51/32
128.171.104.147/32
208.85.242.118/32
198.82.152.116/32
207.244.94.80/32
140.247.173.13/32
173.52.41.34/32
なんか、だいぶ違うなぁ。。。と思い、ググったら、
どうもepel が古いようだ。
https://qiita.com/bezeklik/items/6fead3365b0e954f234e
例えば、下のドメインなどは、nslookup でIP が返ってこず、今は存在しないドメインのようだ。