文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Terraform在AWS上部署Jenkins

2024-04-02 19:55

关注

这篇文章主要介绍“如何使用Terraform在AWS上部署Jenkins”,在日常操作中,相信很多人在如何使用Terraform在AWS上部署Jenkins问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Terraform在AWS上部署Jenkins”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

先决条件

安装Jenkins及其工作
首先,我们需要观看本节,因为这是我们可以找到如何通过脚本bash安装Jenkins的过程,该bash脚本是作为通用脚本制作的,可在不同的CentOS Linux上使用。此安装分为5部分,首先我们将安装并启动Jenkins,然后我们将注册一个默认用户并安装基本插件,最后,注册我们最好的朋友HelloWorld job,这将是一个很好的例子一个好的开始。

jenkins_user=$1 jenkins_password=$2 jenkins_address=http://localhost:8080  set -x  function installing() {     #Installing some necessary dependencies      sudo yum -y update     sudo yum -y install wget java-1.8.0 nano nc          #Installing jenkins, instructions located in http://pkg.jenkins-ci.org/redhat/     sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo     sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key     sudo yum install -y jenkins          sleep 1     echo "[INFO]  Jenkins was installed" }

请注意,bash脚本中的plugins函数对于首次安装登录Jenkins时建议的所有插件是必需的,这是自定义此工具的一部分,并且是注册默认用户所必需的。循环以检查Jenkins服务器是否正在运行,您可以在启动和插件功能时观看。

function plugins() {     #Installing jenkins plugins      java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin trilead-api     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin cloudbees-folder          ... many more plugins ...          java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin pam-auth      java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin ldap     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin email-ext           # Restart     sudo systemctl restart jenkins &     while (( 1 )); do       echo "[INFO]   waiting for restart Jenkins on port [8080] ..."              java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  list-jobs       if (( $? == 0 )); then           break       fi            sleep 20     done          echo "[INFO]   Jenkins was restarted"

您还记得启动Jenkins服务器的公告吗?如果您不想再看到它,则应该实现插件功能。

如何使用Terraform在AWS上部署Jenkins

下面是一个简单的任务,介绍了如何通过Jenkins CLI在Jenkins中添加作业,这是带有字符串参数的Pipeline作业。

<?xml version='1.1' encoding='UTF-8'?> <flow-definition plugin="workflow-job@2.40">   <description></description>   <keepDependencies>false</keepDependencies>   <properties>     <hudson.model.ParametersDefinitionProperty>       <parameterDefinitions>         <hudson.model.StringParameterDefinition>           <name>par_name</name>           <description></description>           <defaultValue>HelloWorld</defaultValue>           <trim>false</trim>         </hudson.model.StringParameterDefinition>       </parameterDefinitions>     </hudson.model.ParametersDefinitionProperty>   </properties>   <definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.83">     <script>pipeline {     agent { label 'master' }     stages {         stage('build') {             steps {                 echo "Hello World!"             }         }     } }</script>     <sandbox>true</sandbox>   </definition>   <triggers/>   <disabled>false</disabled> </flow-definition>

将Jenkins部署为服务器
该文件中提供了常规变量,请注意一些属性,这些属性需要由您配置的AWS CLI变量替换。请参阅《AWS CLI命令参考》中的更多信息。

variable "region" {   default  = "us-east-1"   description = "AWS region" }  variable "access_key" {   default  = "HEREYOURACCESSKEY"   description = "AWS credentials file path" }  variable "secret_key" {   default  = "HEREYOURSECRETKEY"   description = "AWS credentials file path" }  variable "jenkins_user_name" {   description = "jenkins"   default = "jenkins" }  variable "jenkins_user_password" {   description = "jenkins"   default = "jenkins" }  variable "jenkins_name" {   description = "Jenkins name"   default = "jenkins" }  variable "jenkins_instance_type" {   default = "t2.micro" }  variable "jenkins_key_name" {   default = "key-pair"   description = "SSH key located in tyour AWS account." }  variable "amis" {   description = "ami to spawn."   default = {      us-east-1 = "ami-0c94855ba95c71c99"   } }

有几个属性需要设置:

access_key和secret_key:用作访问密钥,用于验证命令请求。

jenkins_key_name:密钥对文件的名称,将有助于通过ssh连接到我们的实例。如果您需要创建密钥对,请通过我的安全凭证部分中的处理程序进入您的AWS账户。注意,在此示例中,我们使用了位于该项目的Template文件夹中的key-pair.pem,用您的凭据替换此文件及其在项目中的名称。

amis:此属性可以是一个列表,并具有可以在Amazon Machine Instances中轻松找到的AMI实例ID,如果您想更改此AMI实例,请注意是否已安装AMI已安装systemctl,因为Amazon Linux不支持systemclt或服务命令基于其基于CentOS / RHEL的版本,因此为了避免花费大量时间搜索已经配置了他的systemctl的AMI实例,请尝试使用在此项目中配置的AMI实例。

resource "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}"    # Add jenkins server startup   provisioner "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"   }      # Add jenkins job   provisioner "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}"     ]   } }

一旦配置了所有属性,请执行命令行terraform init初始化工作文件夹,执行terraform计划以监视所有部署计划,一旦检查完成,请执行命令行terraform申请部署基础架构。

进入詹金斯
可以在AWS管理控制台中找到,单击“实例”部分,然后应如下创建一个新实例。

如何使用Terraform在AWS上部署Jenkins

复制公共DNS,并在浏览器上键入此值,然后键入端口8080(如镜像所示),记住所有可用端口在main.tf文件的安全组部分中。用户和密码被配置为variables.tf文件中的属性,因此在这种情况下,我们的用户和密码为“ Jenkins”。

如何使用Terraform在AWS上部署Jenkins

到此,关于“如何使用Terraform在AWS上部署Jenkins”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯