「インフラCI 実践ガイド」うまく動かないところメモ書き
本当は著者のサンプルプログラムにプルリクエストすればよいのだけれど、ちょっと自信が無いので読み終わってから再確認する。
新しく見つかったものがあれば随時追加する。
書籍
演習環境
# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
Chapter 3
3.5.4 GitLab/GitLab Runnerのインストールと設定
事象
PlaybookのInstall GitLab Runner
タスクが失敗する
原因
Package gitlab-runner-10.5.0-1.x86_64.rpm is not signed
対応
Install GitLab Runner タスクで失敗する · Issue #5 · infra-ci-book/gitlab-vagrant-ansible · GitHub
上記IssueどおりにPlaybookを書き換えればOK。
対象ゲストにログインし、--nogpgcheck
オプション付きでインストールする。
# cd ~/vagrant/infraci/ # vagrant ssh gitlab-runner Last login: Wed May 1 06:01:53 2019 from 10.0.2.2 [vagrant@gitlab-runner ~]$ sudo su - Last login: Wed May 1 06:03:17 UTC 2019 on pts/0 [root@gitlab-runner ~]# yum install --nogpgcheck gitlab-runner-10.5.0-1 [root@gitlab-runner ~]# exit logout [vagrant@gitlab-runner ~]$ exit logout Connection to 127.0.0.1 closed.
その後、Playbookを再実行することで構築完了。
Chapter 4
4.1.2 パイプラインの実行
事象
パイプラインUnit_Package
の# docker build . -t ${CONTAINER_IMAGE_PATH}
が失敗する。
$ docker build . -t ${CONTAINER_IMAGE_PATH} Sending build context to Docker daemon 715.8kB Step 1/7 : FROM centos:7 ---> 9f38484d220f Step 2/7 : ENV container docker ---> Using cache ---> acc8b01632ab Step 3/7 : ENV ANSIBLE_VERSION 2.4.2.0 ---> Using cache ---> 702982ebf92d Step 4/7 : ENV ANSIBLE_LINT_VERSION 3.4.21 ---> Using cache ---> a81864d9a447 Step 5/7 : COPY ./ ./ ---> 2c24a9e9b7b0 Step 6/7 : RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); rm -f /lib/systemd/system/multi-user.target.wants/*; rm -f /etc/systemd/system/*.wants/*; rm -f /lib/systemd/system/local-fs.target.wants/*; rm -f /lib/systemd/system/sockets.target.wants/*udev*; rm -f /lib/systemd/system/sockets.target.wants/*initctl*; rm -f /lib/systemd/system/basic.target.wants/*; rm -f /lib/systemd/system/anaconda.target.wants/*; yum install -y epel-release && yum install -y git && yum install -y ansible-${ANSIBLE_VERSION:?} && yum install -y ansible-lint-${ANSIBLE_LINT_VERSION:?} && yum clean all ---> Running in ace833a25437 (中略) Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: ty1.mirror.newmediaexpress.com * epel: www.ftp.ne.jp * extras: ty1.mirror.newmediaexpress.com * updates: ty1.mirror.newmediaexpress.com No package ansible-lint-3.4.21 available. Error: Nothing to do The command '/bin/sh -c (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); rm -f /lib/systemd/system/multi-user.target.wants/*; rm -f /etc/systemd/system/*.wants/*; rm -f /lib/systemd/system/local-fs.target.wants/*; rm -f /lib/systemd/system/sockets.target.wants/*udev*; rm -f /lib/systemd/system/sockets.target.wants/*initctl*; rm -f /lib/systemd/system/basic.target.wants/*; rm -f /lib/systemd/system/anaconda.target.wants/*; yum install -y epel-release && yum install -y git && yum install -y ansible-${ANSIBLE_VERSION:?} && yum install -y ansible-lint-${ANSIBLE_LINT_VERSION:?} && yum clean all' returned a non-zero code: 1 ERROR: Job failed: exit code 1
原因
No package ansible-lint-3.4.21 available.
対応
有効なansible-lint
パッケージバージョンを探し、Dockerfileを書き換える。
# yum --showduplicates search ansible-lint 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ty1.mirror.newmediaexpress.com * epel: www.ftp.ne.jp * extras: ty1.mirror.newmediaexpress.com * updates: ty1.mirror.newmediaexpress.com ========================================================== N/S matched: ansible-lint =========================================================== ansible-lint-3.5.1-1.el7.noarch : Best practices checker for Ansible Name and summary matches only, use "search all" for everything.
現時点では3.5.1が有効なので、下記2ファイルの変数を3.4.21から書き換える。
- ENV ANSIBLE_LINT_VERSION 3.4.21 + ENV ANSIBLE_LINT_VERSION 3.5.1
更新日
2019/5/1 Chapter 3 / Chapter 4を追加