🛠️
Jenkins 環境構築メモ (Virtual Box - RedHat Base OS)
準備
1.Javaのインストール
sudo wget https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.rpm
[root@control-plane ~]# wget https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.rpm
--2024-11-18 05:07:21-- https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.rpm
corretto.aws (corretto.aws) をDNSに問いあわせています... 3.166.244.104, 3.166.244.10, 3.166.244.42, ...
corretto.aws (corretto.aws)|3.166.244.104|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Moved Temporarily
場所: /downloads/resources/17.0.13.11.1/java-17-amazon-corretto-devel-17.0.13.11-1.x86_64.rpm [続く]
--2024-11-18 05:07:26-- https://corretto.aws/downloads/resources/17.0.13.11.1/java-17-amazon-corretto-devel-17.0.13.11-1.x86_64.rpm
corretto.aws:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 193458218 (184M) [binary/octet-stream]
`amazon-corretto-17-x64-linux-jdk.rpm' に保存中
100%[==============================================================================>] 193,458,218 9.18MB/s 時間 21s
2024-11-18 05:07:47 (8.86 MB/s) - `amazon-corretto-17-x64-linux-jdk.rpm' へ保存完了 [193458218/193458218]
sudo rpm -ihv amazon-corretto-17-x64-linux-jdk.rpm
[root@control-plane ~]# sudo rpm -ihv amazon-corretto-17-x64-linux-jdk.rpm
警告: amazon-corretto-17-x64-linux-jdk.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID b04f24e3: NOKEY
準備しています... ################################# [100%]
更新中 / インストール中...
1:java-17-amazon-corretto-devel-1:1################################# [100%]
2.リポジトリファイルの作成
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
[root@control-plane ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
--2024-11-18 05:27:47-- https://pkg.jenkins.io/redhat-stable/jenkins.repo
pkg.jenkins.io (pkg.jenkins.io) をDNSに問いあわせています... 151.101.110.133, 2a04:4e42:1a::645
pkg.jenkins.io (pkg.jenkins.io)|151.101.110.133|:443 に接続しています... 接続しました。
警告: pkg.jenkins.io の証明書(発行者: `/C=US/O=Let\'s Encrypt/CN=R11')の検証に失敗しました:
発行された証明書はまだ有効ではありません。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 85
`/etc/yum.repos.d/jenkins.repo' に保存中
100%[==============================================================================>] 85 --.-K/s 時間 0s
2024-11-18 05:27:52 (4.76 MB/s) - `/etc/yum.repos.d/jenkins.repo' へ保存完了 [85/85]
3.公開鍵のインポート
URLは頻繁に変更されるため、検索で確認するなど都度対応必要です
curl -L --insecure -o jenkins.key https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
[root@control-plane ~]# curl -L --insecure -o jenkins.key https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0sudo rpm --import jenkins.key
100 3175 100 3175 0 0 575 0 0:00:05 0:00:05 --:--:-- 906
sudo rpm --import jenkins.key
[root@control-plane ~]# sudo rpm --import jenkins.key
4.Jenkinsのインストール
sudo yum install jenkins
[root@control-plane ~]# sudo yum install jenkins
インストールがうまくいかない場合の対応例
以下のようなログが出た場合、いくつか対応が必要な場合があります。
[root@control-plane ~]# sudo yum install jenkins
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
http://pkg.jenkins.io/redhat-stable/repodata/repomd.xml: [Errno 14] HTTPS Error 301 - Moved Permanently
他のミラーを試します。
One of the configured repositories failed (Jenkins-stable),
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=jenkins ...
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 jenkins
or
subscription-manager repos --disable=jenkins
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=jenkins.skip_if_unavailable=true
failure: repodata/repomd.xml from jenkins: [Errno 256] No more mirrors to try.
http://pkg.jenkins.io/redhat-stable/repodata/repomd.xml: [Errno 14] HTTPS Error 301 - Moved Permanently
[root@control-plane ~]# curl -I https://pkg.jenkins.io/redhat-stable/repodata/repomd.xml
curl: (60) Peer's Certificate has expired.
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
リポジトリファイルの確認
/etc/yum.repos.d/jenkins.repo を確認する。
[root@control-plane ~]# cat /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
主に、デフォルトであるケースではbaseurlの修正がある。
baseurl=http://pkg.jenkins.io/redhat-stable
https通信を利用する必要があるため、以下のように修正
[jenkins]
name=Jenkins-stable
baseurl=https://pkg.jenkins.io/redhat-stable
gpgcheck=1
gpgkey=https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
リポジトリの変更に伴い、キャッシュのクリアをする必要があるため以下を実施
[root@control-plane ~]# sudo yum clean all
読み込んだプラグイン:fastestmirror
リポジトリーを清掃しています: base docker-ce-stable epel extras jenkins kubernetes updates zabbix zabbix-agent2-plugins
: zabbix-non-supported
Cleaning up list of fastest mirrors
リポジトリの読み込みが成功するかを確認
sudo yum repolist
[root@control-plane ~]# sudo yum repolist
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 5.1 kB 00:00:00
* epel: repo.jing.rocks
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
https://pkg.jenkins.io/redhat-stable/repodata/repomd.xml: [Errno 14] curl#60 - "Peer's Certificate has expired."
他のミラーを試します。
It was impossible to connect to the CentOS servers.
This could mean a connectivity issue in your environment, such as the requirement to configure a proxy,
or a transparent proxy that tampers with TLS security, or an incorrect system clock.
You can try to solve this issue by using the instructions on https://wiki.centos.org/yum-errors
If above article doesn't help to resolve this issue please use https://bugs.centos.org/.
base/7/x86_64/primary_db | 6.1 MB 00:00:13
docker-ce-stable/7/x86_64/primary_db | 152 kB 00:00:05
epel/x86_64/primary_db | 8.7 MB 00:00:07
extras/7/x86_64/primary_db | 253 kB 00:00:12
https://pkg.jenkins.io/redhat-stable/repodata/repomd.xml: [Errno 14] curl#60 - "Peer's Certificate has expired."
他のミラーを試します。
kubernetes | 1.7 kB 00:00:00
kubernetes/primary | 19 kB 00:00:00
kubernetes 190/190
updates/7/x86_64 | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 27 MB 00:00:03
zabbix/x86_64 | 2.9 kB 00:00:00
zabbix/x86_64/primary_db | 214 kB 00:00:00
zabbix-agent2-plugins/x86_64 | 2.9 kB 00:00:00
zabbix-agent2-plugins/x86_64/primary_db | 2.9 kB 00:00:00
zabbix-non-supported/x86_64 | 2.9 kB 00:00:00
zabbix-non-supported/x86_64/primary_db | 3.9 kB 00:00:00
リポジトリー ID リポジトリー名 状態
base/7/x86_64 CentOS-7 - Base 10,072
docker-ce-stable/7/x86_64 Docker CE Stable - x86_64 337
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,791
extras/7/x86_64 CentOS-7 - Extras 526
jenkins Jenkins-stable 0
kubernetes Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/ 190
updates/7/x86_64 CentOS-7 - Updates 6,173
zabbix/x86_64 Zabbix Official Repository - x86_64 485
zabbix-agent2-plugins/x86_64 Zabbix Official Repository (Agent2 Plugins) - x86_64 4
zabbix-non-supported/x86_64 Zabbix Official Repository (non-supported) - x86_64 6
repolist: 31,584
以上を試したら、再度インストールを試みる
システム時間の確認
自分の環境では、システム時間が
・2024/11/18 09:04:05 JST
となっており、実際の時間
・2024/11/28 22:37:26 JST
と異なっていたため、「chrony」コマンドでシステム時間を正しい時間に同期した。
[root@control-plane ~]# date
2024年 11月 18日 月曜日 09:04:05 JST
[root@control-plane ~]# sudo chronyc -a makestep
200 OK
[root@control-plane ~]# date
2024年 11月 28日 木曜日 22:37:26 JST
もろもろ修正完了後、再度Jenkinsのインストールを実施
sudo yum clean all
sudo yum install jenkins
成功!
[root@control-plane ~]# sudo yum install jenkins
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 5.1 kB 00:00:00
* epel: repo.jing.rocks
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
jenkins | 2.9 kB 00:00:00
kubernetes | 1.7 kB 00:00:00
updates | 2.9 kB 00:00:00
zabbix | 2.9 kB 00:00:00
zabbix-agent2-plugins | 2.9 kB 00:00:00
zabbix-non-supported | 2.9 kB 00:00:00
(1/14): docker-ce-stable/7/x86_64/primary_db | 152 kB 00:00:06
(2/14): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:06
(3/14): epel/x86_64/group | 399 kB 00:00:06
(4/14): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(5/14): epel/x86_64/primary_db | 8.7 MB 00:00:01
(6/14): base/7/x86_64/group_gz | 153 kB 00:00:12
(7/14): jenkins/primary_db | 52 kB 00:00:06
(8/14): base/7/x86_64/primary_db | 6.1 MB 00:00:15
(9/14): updates/7/x86_64/primary_db | 27 MB 00:00:03
(10/14): extras/7/x86_64/primary_db | 253 kB 00:00:11
(11/14): kubernetes/primary | 19 kB 00:00:13
(12/14): zabbix/x86_64/primary_db | 214 kB 00:00:07
(13/14): zabbix-agent2-plugins/x86_64/primary_db | 2.9 kB 00:00:06
(14/14): zabbix-non-supported/x86_64/primary_db | 3.9 kB 00:00:07
kubernetes 190/190
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ jenkins.noarch 0:2.479.2-1.1 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
========================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
========================================================================================================================
インストール中:
jenkins noarch 2.479.2-1.1 jenkins 91 M
トランザクションの要約
========================================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 91 M
インストール容量: 92 M
Is this ok [y/d/N]: y
Downloading packages:
jenkins-2.479.2-1.1.noarch.rpm | 91 MB 00:00:29
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
インストール中 : jenkins-2.479.2-1.1.noarch 1/1
検証中 : jenkins-2.479.2-1.1.noarch 1/1
インストール:
jenkins.noarch 0:2.479.2-1.1
完了しました!
EC2 インスタンスでの起動失敗時
以下のようなメッセージが出る場合
[ec2-user@ip-10-0-0-85 ~]$ sudo systemctl start jenkins
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
1./var/lib/jenkins/以下を確認
ll /var/lib/jenkins
37 yum install -y jenkins
38 sudo yum install -y jenkins
39 sudo yum upgrade
40 ll
41 sudo systemctl start jenkins
42 sudo systemctl status jenkins
43 sudo /etc/yum.repos.d/
44 vi /etc/yum.repos.d/jenkins.repo
45 systemctl status jenkins
46 sudo systemctl start jenkins
47 cat /var/lib/jenkins/secrets/initialAdminPassword
48 sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Discussion