实战-terrrform方式安装jenkins-2022.4.17-测试成功
实战:terrrform方式安装jenkins-泽阳-2022.4.17(测试成功)
目录
[toc]
实验环境
win10笔记本
1台虚机 centos7.9 vmworkstation
jenkins/jenkins:2.332.2-centos7-jdk8
docker 20.10.11
Terraform v1.1.8
实验软件
链接:https://pan.baidu.com/s/15VlZHrinn9kiy8kf9nZkDw?pwd=caih
提取码:caih
2022.4.13-实验 软件-使用TF来起一个jenkins容器
前置条件
- docker环境已安装(本次版本:20.10.11)
0、安装jdk环境
⚠️ 我们测试环境,是在一台虚机上跑了一个jenkins容器。但后面添加一个jenkins agent时,是将这个虚机作为其agent使用,因此这个虚机也要安装java环境的!!!
(1)下载jdk软件
[root@devops ~]#wget https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz --no-check-certificate
(2)配置jdk环境
[root@devops ~]#tar zxf OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz -C /usr/local/
[root@devops ~]#cd /usr/local/jdk8u322-b06/
[root@devops jdk8u322-b06]#pwd
/usr/local/jdk8u322-b06
[root@devops jdk8u322-b06]#vim /etc/profile
export JAVA_HOME=/usr/local/jdk8u322-b06
export PATH=$JAVA_HOME/bin:$PATH
[root@devops jdk8u322-b06]#source /etc/profile
(3)验证
[root@devops jdk8u322-b06]#java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.322-b06, mixed mode)
1、安装Terraform
1、下载二进制包
https://www.terraform.io/downloads
2、安装步骤
(1)上传下载好的二进制包到服务器
[root@devops ~]#ll -h terraform_1.1.8_linux_amd64.zip
-rw-r--r-- 1 root root 18M Apr 12 19:59 terraform_1.1.8_linux_amd64.zip
[root@devops ~]#unzip terraform_1.1.8_linux_amd64.zip
Archive: terraform_1.1.8_linux_amd64.zip
inflating: terraform
[root@devops ~]#ll -h terraform
(2)移动二进制文件到PATH路径
-rwxr-xr-x 1 root root 61M Apr 8 00:54 terraform
[root@devops ~]#mv terraform /usr/local/bin/
(3)验证
[root@devops ~]#terraform version
Terraform v1.1.8
on linux_amd64
3、vscode想要对.tf文件语法的话,这里需要安装Terraform
插件:
2、定义Jenkins容器的资源tf文件
1️⃣ 创建Jenkins数据目录
[root@devops ~]#mkdir -p /data/devops4/jenkins_home
[root@devops ~]#chmod -R 777 /data/devops4/jenkins_home/
2️⃣ 定义Jenkins容器的资源tf文件
在devops目录下创建如下2个文件:
jenkins.tf
### 定义docker镜像(jenkins.tf)
resource "docker_image" "jenkins" {
name = "jenkins/jenkins:2.332.2-centos7-jdk8"
keep_locally = true //资源销毁后不会删除本地镜像
}
resource "docker_container" "jenkins" {
image = docker_image.jenkins.name
name = "devops_tutorial"
ports {
internal = 8080
external = 8080
}
ports {
internal = 50000
external = 50000
}
volumes{
container_path = "/var/jenkins_home"
host_path = "/data/devops4/jenkins_home" //这个目录要提前在主机里进行创建
}
}
main.tf
:
# 定义provider(main.tf)
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.13.0"
}
}
}
provider "docker" {}
3、terraform init 初始化
[root@devops remote-vscode]#terraform init
4、terraform plan 预览
[root@devops remote-vscode]#terraform plan
5、terraform apply 部署
[root@devops remote-vscode]#terraform apply
6、验证
[root@devops remote-vscode]#docker ps |grep jenkins
注意事项
📍 什么是Terraform?
Teffraform:基础设施即代码!
IaC:基础设施即代码。
现在,基本什么都代码,配置即代码,基础设置即代码;
管理docker容器
- docker命令
- docker-compose
- 本地用tf来管理docker环境: tf有一个provider,一个插件,它是支持管docker的。所以,我们后面一个tf模板就把整个实验环境就跑起来了,最终可以一键拉起来。
但是TF比较厉害,它的插件支持k8s,就是你不想使用yaml来管理k8s里的资源,那么TF也是可以通过插件来管理k8s里的资源的。此时,就行就需要你来写Tf的provider插件来着,但是还是yaml好使。
这个TF太牛了!!(tf:管理你的基础设施的。)
但这个工具也存在一定的危险性,我可以一键去创建,也可以一键去销毁。
老师大力推荐!
📍 ansible和terraform的区别?
答:ansible和TF他们不是一个级别的东西: TF它管理的是你的服务器,其实TF主要是针对这个云供应商的,创建这些机器、网络、vpc…… ansible是实现基础设置之上的,应用部署这块的; 他两之间可以结合去用;
📍 待提问:provider "docker" {……} 2375
端口问题
如果是本机的话,provider "docker" {……}这里可以省略!
🍀 老师这里有监听到这个包2375端口,但是为什么我自己的没有呢?但是可以可以成功部署jenkins容器。
老师说是docker服务默认监听的端口。。。。;😥
老师现象:
自己现象: