※ 個人blogに投稿した記事(投稿日:2019/6/5)をQiitaに移行しました
概要
Jenkinsに一度触れてみたくて、現在udemyでJenkinsの講座を受講しています。
先日Dockerの講座も受講完了したのと、今後Azureの勉強も始めたいことを踏まえ、
Azure Container Instances上にJenkinsを立ち上げて見たいと思います。
※Azureには「Azure Devops」というCI/CDサービスが存在していますが・・・
手順
Azureの操作はほぼ初めて。
今回はAzureのポータル上からCLIでリソースの操作が行えるAzure Cloud Shellで実行していきます。
1. リソースグループの作成
今回は「jenkinsResource」という名前のリソースグループを作成します。
az group create --name jenkinsResource --location eastus
成功すると以下のような結果が表示されます。
"id": "/subscriptions/d7eb1cd7-6516-4492-9006-6a138b4dfaae/resourceGroups/jenkinsResource",
"location": "eastus",
"managedBy": null,
"name": "jenkinsResource",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": null
}
2. Azureファイル共有の作成
Jenkinsコンテナのデータを永続化させるため、ストレージ アカウントとファイル共有を作成します。
2-1. 環境変数STORAGE_ACCOUNT_NAMEのセット
ストレージアカウント名をRANDOMを付けて適当に設定します。
$ STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
2-2. ストレージ アカウントを作成
az storage account create \
--resource-group jenkinsResource \
--name $STORAGE_ACCOUNT_NAME \
--sku Standard_LRS \
--location eastus
2-3. 環境変数AZURE_STORAGE_CONNECTION_STRING のセット
続いてストレージ アカウントの接続文字列をセットします。
$ export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string \
--resource-group jenkinsResource \
--name $STORAGE_ACCOUNT_NAME \
--output tsv)
2-4. ファイル共有の作成
今回は「aci-jenkins」という名前でファイル共有を作成します。
az storage share create --name aci-jenkins
2-5. 環境変数STORAGE_KEY のセット
コンテナにAzure ファイル共有をマウントするために、ストレージ アカウント アクセス キーを取得し、
環境変数にセットします。
$ STORAGE_KEY=$(az storage account keys list \
--resource-group jenkinsResource \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" \
--output tsv)
$STORAGE_KEYの値の確認。
$ echo $STORAGE_KEY
3. コンテナの作成と起動確認
3-1. コンテナの作成
準備ができたのでコンテナの作成をします。
今回は「aci-jenkins」という名前のコンテナとします。
(ファイル共有と同じ名前にしてしまって紛らわしい)
portsはJenkinsの設定値である8080にしておきます。
以下コマンドを実行後、しばらく待つとコンテナが起動します。
az container create \
--resource-group jenkinsResource \
--name aci-jenkins \
--image jenkinsci/blueocean \
--location eastus \
--ports 8080 \
--ip-address Public \
--azure-file-volume-account-name $STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name aci-jenkins \
--azure-file-volume-mount-path /var/jenkins_home/
3-2. ストレージのマウントの確認
前項でAzureファイル共有にマウントした「/var/jenkins_home/」の内容が表示されます。
$ az storage file list -s aci-jenkins -o table
Name Content Length Type Last Modified
------------------------ ---------------- ------ ---------------
.cache/ dir
.java/ dir
copy_reference_file.log 3926 file
failed-boot-attempts.txt 29 file
jobs/ dir
plugins/ dir
secret.key 64 file
secret.key.not-so-secret 0 file
war/ dir
3-3. IPアドレスの確認
az container show \
--resource-group jenkinsResource \
--name aci-jenkins \
--query ipAddress.ip \
--output tsv
3-4. 起動の確認
前項で出力されたIPアドレスとポート8080をブラウザに入力すると・・・
Jenkinsの画面が表示されました!
4. Jenkinsの設定
4-1. Unlock Jenkins
前項の画面の後、初期パスワードを入力する画面が表示されます。
解除するには画面に表示されている通り「var/jenkins_home/secrets/initialAdminPassword」に記載されている値を入力します。
Cloud Shell セッションにファイルをダウンロードします。
az storage file download -s aci-jenkins -p secrets/initialAdminPassword
ダウンロード後、catコマンドを実行するとパスワードの値が出力されます。
$ cat initialAdminPassword
Jenkinsに戻ってパスワードを入力すると、初期設定画面に進みます。
※上記画面で「Install suggested plugins」を入力したあと、
「No valid crumb was included in the request」というエラーが表示されましたが、
Retryボタンを押すと次に進みました。
以上、Azure Container InstancesでJenkinsを立ち上げるでした。