(メモ)CentOS7 の更新スクリプト作成と試験の巻

#目的
手動アップデートをスケジュールスクリプトで自動化して、ミスを無くす

#目標
１．UTM へIP ベースの穴あけ
　　URL ベースで対応できないソフトだった（怒）

２．アップデートとサーバ再起動のスクリプトを作成して、2~3日動かしてみる
　　CentOS7 で、スクリプト作成＋cron 登録して、実行する
　　・バージョンが上がっていることを確認する
　　・エラー無いことを確認する
　　・正常か異常かを管理者へ通知する

#方式
UTM へCentOS アップデート先のGIP へアクセスする許可を追加する。その後、アップデートと再起動を行い、正常か異常かをメールするスクリプトを作る
![WS000006.JPG](https://qiita-image-store.s3.amazonaws.com/0/184724/ef8d9197-b7e3-75c2-9777-d5b2c0d32454.jpeg)


#作業
まずは、調査系を。。。
##１．の穴あけ用に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`

```ruby:yumupdate.sh
#!/bin/bash
sudo yum -y update
```

試験してみる。

`bash /usr/local/bin/yumupdate.sh`
update の処理がかかれば試験完了

##シェルスクリプトをスケジュール実行する
Windows でいうスケジューラーにあたる
crontab へ記載する
`sudo crontab -e`

vi エディタが開くので、
毎時00分に実行する場合、下のように記載


```ruby:crontab
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`

```ruby: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 が返ってこず、今は存在しないドメインのようだ。
>http://mirror.cisp.com