あきろぐ

いろいろめもするよ🐈🐈🐈

codebuildでyum installが失敗する

概要

今日の午後くらいから今まで動作に問題なかったcodebuildの失敗が連続していた。
原因を調査してみると、fedoraproject.orgの名前解決ができなくなっていた。fedraprojectのDNSサーバーが死んでる模様。同じような現象に遭遇している人もちらほらいるみたい。
www.reddit.com

# 起きている現象
[Container] 2020/02/04 13:53:19 Running command yum update -y
Loaded plugins: ovl, priorities


 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:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again

[Container] 2020/02/04 13:54:30 Command did not exit successfully yum update -y exit status 1
[Container] 2020/02/04 13:54:30 Phase complete: INSTALL State: FAILED
[Container] 2020/02/04 13:54:30 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: yum update -y. Reason: exit status 1

curlコマンド結果も以下の通り。

$ curl https://mirrors.fedoraproject.org
curl: (6) Could not resolve host: mirrors.fedoraproject.org

暫定対応

上記の記事にgoogleDNS(8.8.8.8)を使えばキャッシュ経由でなんとか大丈夫らしいので、暫定的に取り込んでみる。
nameserverを/etc/resolv.confに追記。

version: 0.2

phases:
  install:
    runtime-versions:
      docker: 18
    commands:
      - echo "nameserver 8.8.8.8" >> /etc/resolv.conf 
      - yum update -y
  build:
    commands:
      - echo "test"

このようにすれば、暫定的にcodebuildが失敗せずに完了する。
明日には名前解決問題解消されてるといいな。

解決

2/4 23:40頃解決していた!
codebuildも問題なく成功する

以上