IaC with Terraform 23
這個階段內容就是要讓Jenkins執行PIPELINE過程中
順便透過Terraform建立EC2機台來佈署PIPELINE前面打包的容器
概念流程圖如下:
這邊初步會延續使用到Jenkins第17篇筆記中完成的PIPELINE,內容如下:
github儲存在SimpleSpringRestful專案內jenkins-job-pipeline這branch內
JenkinsfileEC2compose檔案中
上面Pipeline是包版推到docker hub後
佈署到有安裝docker,docker compose的EC2機台上
執行docker compose的腳本server-cmds.sh做啟動
但是可以看到EC2機台是固定的機台IP位置,也就是事先準備好的機台
我先把該branch內資源抓下來,移除其他課程內容寫出的PIPELINE等
留下必要等待改造的內容:
所以這邊首先問題是要建立一台Jenkins
先搞一台Ubuntu機台
#執行以下建置,先切換到root:
sudo su
#執行以下建置
apt update
apt install docker.io
#如果上面指令是透過root來做的話,可以補充執行以下來擴充User權限:
sudo usermod -G docker -a {這邊填入使用的User帳號}
#建個資料夾
mkdir -p /opt/jenkins_home
chmod 775 /opt/jenkins_home
chown 1000 /opt/jenkins_home
#可以回到普通帳號像是ubuntu帳號下,啟動容器:
docker run -p 8080:8080 -p 50000:50000 -d \
-v /opt/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
#建置這個臨時機台後,帳密就用常用的
並且過程會需要有ssh agent的plugin安裝好
在此會開始需要改造PIPELINE,過程加入Terraform提供機台資源的Stage:
也就是Jenkins Container內要安裝Terraform來執行TF建置EC2的腳本
待Terraform真的把EC2機台建置完成後,要讓Jenkins可以透過ssh agent機制
進入到該機台驅動Container佈署等動作
還會需要ssh key pair
所以實際整理進行的步驟其實是:
- create ssh key-pair
- install TF inside jenkins container(執行terraform指令前要先安裝terraform工具)
- TF configuration to provision server(寫建置EC2機台的main.tf等)
到最後集中建置改造以下兩個Stages: