RHEL7.2@Azureで突然yumが使えなくなった。

#事象
以前は使用できていたyumが突然使用できなくなった。

#使用した環境
サーバ：Microsoft Azure（東日本）
OS：Red Hat Enterprise Linux 7.2

#事象が発生したコマンド
```bash
[user@host ~]$ sudo yum install git
Loaded plugins: langpacks, product-id, rhui-lb, search-disabled-repos
rhel-7-server-rpms                                                                                                                                                                    | 3.5 kB  00:00:00
Could not retrieve mirrorlist https://southeastasia-cds2.cloudapp.net/pulp/mirror/PA error was
12: Timeout on https://southeastasia-cds2.cloudapp.net/pulp/mirror/PA: (28, 'Connection timed out after 30001 milliseconds')


 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:
#省略

Cannot find a valid baseurl for repo: rhui-PA
```

#原因
エラー内容から見るに、リポジトリへ到達できていないようです。
ちょうどAWSのS3がダウンしていた日なので、それが原因だと思って寝ましたが、翌日になっても解決しませんでした。
[AWS S3 US-EAST-1がダウン、アメリカは大混乱](http://jp.techcrunch.com/2017/03/01/20170228amazon-aws-s3-outage-is-breaking-things-for-a-lot-of-websites-and-apps/)

繋がっているリポジトリを書き換えることも考えましたが、Azureのドキュメントにそれらしき原因を発見しました。
[Azure のオンデマンド Red Hat Enterprise Linux VM 用 Red Hat Update](https://docs.microsoft.com/ja-jp/azure/virtual-machines/virtual-machines-linux-update-infrastructure-redhat)
通知きちんと読んでなくてごめんなさい。
要はリポジトリ見る先が変わったから更新してね。2017年1月以降は使えなくなるよ。ってことですね。

以下の条件に当てはまるマシンは同じ状況になるっぽいです。
- 2016年9月前にAzure上に作成したRHELのVM
- 2016年9月以降にOSの**更新をしていない**


#解決方法
原因も解決方法もAzureのドキュメントに載っていますので、その通りにやっていきます。

```bash
[user@host ~]$ curl -o RPM-GPG-KEY-microsoft-azure-release https://download.microsoft.com/download/9/D/9/9d945f05-541d-494f-9977-289b3ce8e774/microsoft-sign-public.asc
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   983  100   983    0     0    298      0  0:00:03  0:00:03 --:--:--   298
[user@host ~]$ cat RPM-GPG-KEY-microsoft-azure-release
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (GNU/Linux)

#キーは省略
-----END PGP PUBLIC KEY BLOCK-----

#キーの検証(Azureドキュメントに記載のある内容と同じことを目視確認)
[user@host ~]$ gpg --list-packets --verbose < RPM-GPG-KEY-microsoft-azure-release
gpg: directory `/home/user/.gnupg' created
gpg: new configuration file `/home/user/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/user/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/user/.gnupg/secring.gpg' created
gpg: keyring `/home/user/.gnupg/pubring.gpg' created
Version: GnuPG v1.4.7 (GNU/Linux)
:public key packet:
        version 4, algo 1, created 1446074508, expires 0
        pkey[0]: [2048 bits]
        pkey[1]: [17 bits]
        keyid: EB3E94ADBE1229CF
:user ID packet: "Microsoft (Release signing) <gpgsecurity@microsoft.com>"
:signature packet: algo 1, keyid EB3E94ADBE1229CF
        version 4, created 1446074508, md5len 0, sigclass 0x13
        digest algo 2, begin of digest 1a 9b
        hashed subpkt 2 len 4 (sig created 2015-10-28)
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 11 len 5 (pref-sym-algos: 9 8 7 3 2)
        hashed subpkt 21 len 3 (pref-hash-algos: 2 8 3)
        hashed subpkt 22 len 2 (pref-zip-algos: 2 1)
        hashed subpkt 30 len 1 (features: 01)
        hashed subpkt 23 len 1 (key server preferences: 80)
        subpkt 16 len 8 (issuer key ID EB3E94ADBE1229CF)
        data: [2047 bits]
gpg: armor header:

#公開キーのインストール
[user@host ~]$ sudo install -o root -g root -m 644 RPM-GPG-KEY-microsoft-azure-release /etc/pki/rpm-gpg
[user@host ~]$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release

#クライアントRPMのダウンロード
[user@host ~]$ curl -o azureclient.rpm https://rhui-1.microsoft.com/pulp/repos/microsoft-azure-rhel7/rhui-azure-rhel7-2.0-2.noarch.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12823  100 12823    0     0  11896      0  0:00:01  0:00:01 --:--:-- 11906

#署名の確認
[user@host ~]$ rpm -Kv azureclient.rpm
azureclient.rpm:
    Header V3 RSA/SHA256 Signature, key ID be1229cf: OK
    Header SHA1 digest: OK (38d1535e4c2c55ceb795cfd24334f2030c8d744a)
    V3 RSA/SHA256 Signature, key ID be1229cf: OK
    MD5 digest: OK (38e315e09ded0e0c0c567de117fa9350)

#RPMインストール
[user@host ~]$ sudo rpm -U azureclient.rpm
enabled = 0
```
これでOKなはずです。手順を一つ一つ実行していって最後に「前述したタスクを自動化するスクリプトもあります！」って出してきたのは少し笑いました。
それでやれば良かったです。

yumが動くか確認してみます。

```bash
[user@host ~]$ sudo yum install git
Loaded plugins: langpacks, product-id, search-disabled-repos
rhel-7-server-rpms                                                                                                                                                                    | 3.5 kB  00:00:00
rhui-microsoft-azure-rhel7                                                                                                                                                            | 2.9 kB  00:00:00
rhui-rhel-7-server-rhui-debug-rpms                                                                                                                                                    | 3.3 kB  00:00:00
rhui-rhel-7-server-rhui-extras-debug-rpms

#略
Installed:
  git.x86_64 0:1.8.3.1-6.el7_2.1

Dependency Installed:
  libgnome-keyring.x86_64 0:3.8.0-3.el7               perl-Error.noarch 1:0.17020-2.el7               perl-Git.noarch 0:1.8.3.1-6.el7_2.1               perl-TermReadKey.x86_64 0:2.30-20.el7

Complete!
```

問題なく動きました。

#教訓
- OSのアップデートはこまめにやりましょう。
- ドキュメントはきちんと目を通しましょう。