当前位置: 首页 > 科技观察

使用Terraform在AWS上部署Jenkins

时间:2023-03-13 01:25:00 科技观察

持续集成、持续交付和持续部署这些概念和术语共同作用使应用程序生命周期自动化,在这方面,如果您正在实施CI/CD,Jenkins可能是设置的主要工具建立一个服务器来自动化这个过程。本文是使用AWSAmazonasIaaS部署Jenkins的简单任务。为了全面了解,我们将安装Jenkins及其插件、注册用户、设置基本安全规则,最后插入一个作业作为示例,所以让我们稍微扩展一下这个想法。先决条件Amazon中的AWSEC2实例以测试此技术说明。将Terraform安装为“基础架构即代码”工具。安装Jenkins及其工作首先,我们需要观看这一部分,因为在这里我们可以找到如何通过脚本bash安装Jenkins,该脚本作为通用脚本在不同的CentOSLinux上使用。这个安装分为5个部分,首先我们将安装并启动Jenkins,然后我们将注册一个默认用户并安装基本插件,最后,注册我们最好的朋友HelloWorld作业,这将是一个很好的例子。jenkins_user=$1jenkins_password=$2jenkins_address=http://localhost:8080set-xfunctioninstalling(){#Installingsomenecessarydependenciessudoyum-yinstallwgetjava-1.8.0nanonc#Installingjenkins,instructionslocatedinudgethttp://pkg.jenkins/red-hat/cis/etc/yum.repos.d/jenkins.repohttp://pkg.jenkins-ci.org/redhat/jenkins.reposudorpm--importhttps://pkg.jenkins.io/redhat/jenkins.io.keysudoyuminstall-yjenkinssleep1echo"[信息]Jenkinswasinstalled"}请注意,bash脚本中的插件功能需要首先安装登录Jenkins时建议的所有插件,作为自定义此工具的一部分,并且需要注册默认用户。循环检查Jenkins服务器是否正在运行,您可以观察它的启动和插件功能。functionplugins(){#Installingjenkinspluginsjava-jarjenkins-cli.jar-s"$jenkins_address"-auth$jenkins_user:$jenkins_passwordinstall-plugintrilead-apijava-jarjenkins-cli.jar-s"$jenkins_address"-auth$jenkins_user:$jenkins_pass-文件夹...manymoreplugins...java-jarjenkins-cli.jar-s"$jenkins_address"-auth$jenkins_user:$jenkins_passwordinstall-pluginpam-authjava-jarjenkins-cli.jar-s"$jenkins_address"-auth$jenkins_user:$jenkins_passwordinstall-pluginldapjava-jarjenkins-cli.jar-s"$jenkins_address"-auth$jenkins_user:$jenkins_passwordinstall-pluginmail-ext#Restartsudosystemctlrestartjenkins&while((1));doecho"[INFO]waitingforrestartJenkinsonport[8080]..."jarjenkins-cli.jar-s"$jenkins_address"-auth$jenkins_user:$jenkins_passwordlist-jobsif(($?==0));然后breakfisleep20doneecho"[INFO]Jenkinswasrestarted"你还记得启动Jenkins服务器的公告吗?如果你不想再看到它,你应该实现插件功能。下面是一个简单的任务,描述了如何通过JenkinsCLI在Jenkins中添加作业,这是一个带有字符串参数的管道作业。falsepar_nameHelloWorldfalsetrueDeployJenkinsasaserver此文件中提供了一般变量,请注意一些属性,这些属性需要替换为您配置的AWSCLI变量参见《AWS CLI命令参考》信息。变量“region”{default="us-east-1"description="AWSregion"}variable"access_key"{default="HEREYOURACCESSKEY"description="AWScredentialsfilepath"}variable"secret_key"{default="HEREYOURSECRETKEY"description="AWScredentialsfilepath"}变量"jenkins_user_name"{description="jenkins"default="jenkins"}变量"jenkins_user_password"{description="jenkins"default="jenkins"}变量"jenkins_name"{description="Jenkinsname"default="jenkins"}变量"jenkins_instance_type"{default="t2.micro"}变量"jenkins_key_name"{default="key-pair"description="SSHkeylocatedintyourAWSaccount."}变量"amis"{description="amitospawn."default={us-east-1="ami-0c94855ba95c71c99"}}有几个属性需要设置:access_key和secret_key:使用访问密码,使用身份验证命令请求jenkins_key_name:将有助于通过ssh连接到我们的实例的密钥对文件的名称。如果您需要创建密钥对,请通过“我的安全凭证”部分中的处理程序转到您的AWS账户。请注意,在此示例中,我们使用了位于项目模板文件夹中的key-pair.pem,将此文件及其在项目中的名称替换为您的凭据。amis:这个属性可以是一个列表,并且有AMI实例id,可以在AmazonMachineInstances中很容易找到,如果你想改变这个AMI实例,请注意AMI是否安装了systemctl,因为AmazonLinux不支持systemclt或services命令是基于其基于CentOS/RHEL的版本,因此为了避免花费大量时间搜索已经配置了他的systemctl的AMI实例,请尝试使用本项目中配置的AMI实例。资源“aws_instance”“jenkins”{instance_type="${var.jenkins_instance_type}"security_groups=["${aws_security_group.security_group_jenkins.name}"]ami="${lookup(var.amis,var.region)}"key_name="${var.jenkins_key_name}"#Addjenkinsserverstartupprovisioner"file"{connection{user="ec2-user"host="${aws_instance.jenkins.public_ip}"timeout="1m"private_key="${file("templates/${var.jenkins_key_name}.pem")}"}source="templates/jenkins_startup.sh"destination="/home/ec2-user/jenkins_startup.sh"}#Addjenkinsjobprovisioner"file"{connection{user="ec2-user"host="${aws_instance.jenkins.public_ip}"timeout="1m"private_key="${file("templates/${var.jenkins_key_name}.pem")}"}source="templates/jobmaster.xml"destination="/home/ec2-user/jobmaster.xml"}provisioner"remote-exec"{connection{user="ec2-user"host="${aws_instance.jenkins.public_ip}"timeout="1m"private_key="${file("templates/${var.jenkins_key_name}.pem")}"}inline=["chmod+x/home/ec2-user/jenkins*.sh","/home/ec2-user/jenkins_startup.sh${var.jenkins_user_name}${var.jenkins_user_password}"]}}所有属性配置完成后,执行命令行terraforminit初始化工作文件夹,执行terraformplan监控所有部署计划,检查完成后,执行命令行terraformapplydeploymentinfrastructureintoJenkins可以找到在AWS管理控制台找到,点击“Instances”部分,应该会创建一个新的实例,如下图。如图所示,复制公共DNS并在浏览器中键入此值,然后键入端口8080,请记住所有可用端口都位于main.tf文件的安全组部分。用户和密码在variables.tf文件中配置为属性,因此在本例中我们的用户和密码是“Jenkins”。结论简单实用,如果您想浏览此代码,请单击此存储库。也许,您已经看过Jenkins的许多安装,但我已经在许多安装中使用了这种bash和安装风格,它使这些基本活动变得容易:注册用户、注册基本作业和安装插件。希望这篇文章对你有所帮助。脚本库地址:https://github.com/moballiachi/cicd-jenkins.git关于我们泽阳,DevOps领域的从业者。专注于企业级DevOps运维开发技术的实践分享,主要以Linux运维新技术和DevOps技术课程为主。丰富的一线实践经验,对课程实用性的追求得到了大多数学生的认可。课程内容全部来源于企业应用。你可以在这里学习技术,掌握热门技能。欢迎!(微信号:devopsvip)