[CICD#0]DockerfileによるCentOS7コンテナの構築 ※現在（2022/11/29時点）作成中

gilab+ansible+gitlab-runnerでITインフラのCI/CDを実現するプロセス
※環境構築も本記事も絶賛作成途中でございます。

# 本稿の目的
DockerコンテナのCentOS上にansible+gitlab-runnerのCI/CD環境を構築するのに
ベースとなるCentOSになんのライブラリを突っ込むのが適切なのかを知ることが目的です。

# 全体構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408313/e12005e3-3e2a-4db2-affb-667f2698fc82.png)

# 本稿で解説する部分（コンテナ１）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408313/11682137-0a5f-69a6-c2ad-86e461f2f220.png)

# 結論
最終的に出来上がったコンテナ１のDockerfileを記載します。
```
# CentOS7
FROM centos:7

# system update
RUN yum -y update && yum clean all

# install sudo
RUN yum -y install sudo

# install ssh clients
RUN yum -y install openssh-clients

# install tools
RUN yum groupinstall "Development Tools" -y && \
yum install openssl-devel libffi-devel bzip2-devel -y && \
yum install wget -y

# install tools for git
RUN yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker autoconf

# download git
WORKDIR /usr/local/src/
RUN wget https://www.kernel.org/pub/software/scm/git/git-2.31.0.tar.gz && \
tar zxvf git-2.31.0.tar.gz && \
rm -rf ./git-2.31.1.tar.gz

# install git
WORKDIR /usr/local/src/git-2.31.0
RUN ./configure --prefix=/usr/local && \
make prefix=/usr/local all && \
make prefix=/usr/local install

# export PATH
ENV PATH $PATH:/usr/local/bin:
RUN git --version

# setup workdir
WORKDIR /root
RUN mkdir -p ./opt/python && \
mkdir -p ./opt/src

# download python3.9
WORKDIR /root/opt/src
RUN wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz && \
tar xvf Python-3.9.2.tgz

# install python3
WORKDIR ./Python-3.9.2/
RUN ./configure && \
make && \
make install

# ロケールを日本語に設定
ENV LANG=en_US.UTF-8

# install pip
WORKDIR /root/opt/src
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
python3 get-pip.py

# install ansible
WORKDIR /root/opt/src
RUN pip install ansible ansible-lint

# setttings
ADD ./ansible.cfg /etc/ansible

# confirm ansible
RUN ansible --version && \
ansible -i localhost, all -m ping -c local

# install gitlab-runner
RUN curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash && \
yum install -y gitlab-runner

# run gitlab-runner
ENV PATH $PATH:/usr/local/bin/ansible-lint
RUN sudo gitlab-runner run &
```

# ベースイメージと基本的なデベロッパーツールのインストール

# gitのインストールにおける経緯と注意点
## 経緯
##### なぜgitをインストールするのか
- CICDを検証するために、リポジトリ（gitlab）にローカルリポジトリからアップロードできる環境を作るため

### なぜ新規にgitをインストールするのか
ベースイメージにもgitは含まれています。それでも新規にgitをインストールするに至った経緯は下記の通り
- ベースイメージのgitが古すぎる
リモートリポジトリ（gitlab）に含まれるgitと、CICDの実行環境（gitlab-runner）のgitのバージョンが違いすぎるとエラーが出てハマりました。gitlabとgitlab-runnerのgitのバージョンは同じか、少なくとも近いものにしておくことをお勧めします。

## 注意点
### gitのインストールにyumはNG。ソースコードからコンパイルがお勧め。

### gitソースコードのバージョンに気を付けて。最新すぎるとバグが含まれます。

### インストール後（コンパイル後）はパスを通さないと使えません

# ansible実行環境の整備（Python3.9のインストール）
## 経緯
git同様、ベースイメージにpythonも含まれています。新規にpythonをインストールする理由は下記の通り
### ansibleの実行環境として使えるのはver3.8以上だから
### 3.8系をインストールするとアップデートせよと警告が出る

## 注意点
### rootレス（ユーザの権限が制限されている）な環境でpythonの実行環境を作る場合
### 3.9系のインストールは現状ソースコードからのコンパイルが主流（著者調べ）

# ansibleのインストール（pipインストール）
## 経緯
### pipインストールの理由
### ansible-lintインストールの理由

## 注意点

# gitlab-runnerのインストール

※随時更新していきます。