エンジニア見習いの覚え書き

エンジニア見習いの@tanakaxaが気になること書いたりいろいろ

「インフラCI 実践ガイド」うまく動かないところメモ書き

本当は著者のサンプルプログラムにプルリクエストすればよいのだけれど、ちょっと自信が無いので読み終わってから再確認する。

新しく見つかったものがあれば随時追加する。

書籍

www.shoeisha.co.jp

演習環境

# 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から書き換える。

  • ketchup-vagrant-ansible/Dockerfile
  • ketchup-vagrant-ansible/flexible_artifacts/locust/Dockerfile
- ENV ANSIBLE_LINT_VERSION 3.4.21
+ ENV ANSIBLE_LINT_VERSION 3.5.1

更新日

2019/5/1 Chapter 3 / Chapter 4を追加