IaC with Terraform 23

Complete CI/CD with Terraform — Part 1

ZONGRU Li
Oct 25, 2023

這個階段內容就是要讓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

所以實際整理進行的步驟其實是:

  1. create ssh key-pair
  2. install TF inside jenkins container(執行terraform指令前要先安裝terraform工具)
  3. TF configuration to provision server(寫建置EC2機台的main.tf等)

到最後集中建置改造以下兩個Stages:

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet