出来るだけ最短で Jenkins 環境を試したい(jenkins container + docker CE + CentOS7 + vagrant)
- Install jenkins container on vagrant centos7 box
目的
- jenkins を取り急ぎ使ってみたい
- できるだけ楽に構築したい
- OS は vagrant でデプロイする(CentOS7)
- jenkins は公式で docker コンテナを出してくれているので利用する
前提
- vagrant + CentOS7 Box が利用できる
- Unix ホストもしくはそれと同等のホスト環境
- ssh クライアントツール類がある
既知の問題への対応 (2017/03/10 時点)
制限: 公式 jenkins 配布コンテナは UID 1000 の jenkins ユーザーで動作する
- https://github.com/jenkinsci/docker/issues/177
- http://stackoverflow.com/questions/34706077/starting-jenkins-in-docker-container
問題: CentOS7 公式 Box の vagrant ユーザーの UID が 1000 で衝突する
[vagrant@localhost ~]$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
対応方法1: 別ユーザーを作成してから vagrant ユーザーの UID を変更してからコンテナを起動する
- 手順の中で記載します
対応方法2: 力技で vagrant ユーザーの UID を変更する
- 今回は詳細には記載しませんが以下のような方法でも可能かと思います
sudo vi /etc/passwd
sudo chown -R 1001:1000 /home/vagrant
cd /home/vagrant/
find . -user 1000 -exec chown -h vagrant {} \;
リファレンス
事前準備
- On Host OS
- Vagrant File
% cat Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
config.vm.network "private_network", type: "dhcp"
end
% vagrant up
% vagrant ssh
- On CentOS7 Box
あとでHostとの通信に使います
[vagrant@localhost ~]$ ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:1c:5f:47 brd ff:ff:ff:ff:ff:ff
inet 172.28.128.6/24 brd 172.28.128.255 scope global dynamic eth1
valid_lft 1078sec preferred_lft 1078sec
inet6 fe80::a00:27ff:fe1c:5f47/64 scope link
valid_lft forever preferred_lft forever
BOX_DCHP_IP_ADDR としてメモ
USERNAME1=hirofumi
sudo useradd -m -u 1001 -g vagrant $USERNAME1
sudo su - $USERNAME1
mkdir .ssh
chmod 700 .ssh/
exit
sudo passwd $USERNAME1
exit
- On Host OS
% ssh-keygen -t rsa -f ./id_rsa
Box上の.ssh/authorized_keysに貼り付け用コピー
% cat id_rsa.pub
- On CentOS7 Box
id_rsa.pubの内容を貼り付け
USERNAME1=hirofumi
sudo su - $USERNAME1
cd .ssh
vi authorized_keys
chmod 600 authorized_keys
exit
exit
- On Host OS
% USERNAME1=hirofumi
% ssh -i ./id_rsa $USERNAME1@<BOX_DCHP_IP_ADDR>
ここまでで別ユーザーでの接続が完了
- On CentOS7 box
sudo id vagrant
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
sudo usermod -u 1002 vagrant
sudo id vagrant
uid=1002(vagrant) gid=1000(vagrant) groups=1000(vagrant)
grep 1000 /etc/passwd
vagrant:x:1002:1000:vagrant:/home/vagrant:/bin/bash
hirofumi:x:1001:1000::/home/hirofumi:/bin/bash
UID 1000 のユーザーがいなければ準備完了です
exit
手順
1. Docker CE のインストール
- On Host OS
vagrantユーザーで再ログイン
vagrant ssh
- On CentOS7 Box
ref. https://docs.docker.com/engine/installation/linux/centos/#install-using-the-repository
sudo yum -y update
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce
sudo systemctl status docker
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
sudo docker run hello-world
sudo docker --version
Docker version 17.03.0-ce, build 3a232c8
2. jenkins ユーザーの追加
sudo useradd -u 1000 jenkins
mkdir jenkins
sudo chown jenkins: jenkins/
3. jenkins コンテナ起動
sudo docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home:z -t jenkins
コンテナID確認
[vagrant@localhost ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b676e38e4d66 jenkins "/bin/tini -- /usr..." 37 seconds ago Up 34 seconds 50000/tcp, 0.0.0.0:49001->8080/tcp gifted_fermi
CONTAINER_ID=b676e38e4d66
jenkinsパスワードの確認
$ sudo docker exec $CONTAINER_ID cat /var/jenkins_home/secrets/initialAdminPassword
コピペ出来るように準備
4. ブラウザ確認
- On Host OS
メモっておいた BOX_DCHP_IP_ADDR に 49001 ポートでアクセスします。
http://BOX_DCHP_IP_ADDR:49001
以下の画面が表示されていれば成功です
手順 3. で準備しておいたパスワードをコピペ