使用Terraform在AWS上部署Jenkins

持续集成,持续交付和持续部署,这些概念和术语可以协同工作以实现应用程序生命周期的自动化,在这方面,如果您要实施CI/ CD,Jenkins可能是建立服务器以自动化该过程的主要工具。

专注于为中小企业提供成都网站设计、网站建设、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业新干免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

这篇文章是部署以AWS Amazon作为IaaS的Jenkins的简单任务。为了全面了解,我们将安装Jenkins及其插件,注册用户,设置基本的安全规则,最后插入一个作业作为示例,因此,让我们进一步阐述一下这个想法。

先决条件

  • AWS Amazon中的EC2实例来测试此技术说明。
  • 安装terraform作为“基础结构即代码”工具。

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

 
 
 
 
  1. jenkins_user=$1 
  2. jenkins_password=$2 
  3. jenkins_address=http://localhost:8080 
  4.  
  5. set -x 
  6.  
  7. function installing() 
  8.     #Installing some necessary dependencies  
  9.     sudo yum -y update 
  10.     sudo yum -y install wget java-1.8.0 nano nc 
  11.      
  12.     #Installing jenkins, instructions located in http://pkg.jenkins-ci.org/redhat/ 
  13.     sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo 
  14.     sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key 
  15.     sudo yum install -y jenkins 
  16.      
  17.     sleep 1 
  18.     echo "[INFO]  Jenkins was installed" 

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

 
 
 
 
  1. function plugins() 
  2.     #Installing jenkins plugins  
  3.     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin trilead-api 
  4.     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin cloudbees-folder 
  5.      
  6.     ... many more plugins ... 
  7.      
  8.     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin pam-auth  
  9.     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin ldap 
  10.     java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  install-plugin email-ext  
  11.      
  12.     # Restart 
  13.     sudo systemctl restart jenkins & 
  14.     while (( 1 )); do 
  15.       echo "[INFO]   waiting for restart Jenkins on port [8080] ..." 
  16.        
  17.       java -jar jenkins-cli.jar -s "$jenkins_address" -auth $jenkins_user:$jenkins_password  list-jobs 
  18.       if (( $? == 0 )); then 
  19.           break 
  20.       fi 
  21.      
  22.       sleep 20 
  23.     done 
  24.      
  25.     echo "[INFO]   Jenkins was restarted" 

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

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

 
 
 
 
  1.  
  2.  
  3.    
  4.   false 
  5.    
  6.      
  7.        
  8.          
  9.           par_name 
  10.            
  11.           HelloWorld 
  12.           false 
  13.          
  14.        
  15.      
  16.    
  17.    
  18.      
  19.     true 
  20.    
  21.    
  22.   false 
  23.  

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

 
 
 
 
  1. variable "region" { 
  2.   default  = "us-east-1" 
  3.   description = "AWS region" 
  4.  
  5. variable "access_key" { 
  6.   default  = "HEREYOURACCESSKEY" 
  7.   description = "AWS credentials file path" 
  8.  
  9. variable "secret_key" { 
  10.   default  = "HEREYOURSECRETKEY" 
  11.   description = "AWS credentials file path" 
  12.  
  13. variable "jenkins_user_name" { 
  14.   description = "jenkins" 
  15.   default = "jenkins" 
  16.  
  17. variable "jenkins_user_password" { 
  18.   description = "jenkins" 
  19.   default = "jenkins" 
  20.  
  21. variable "jenkins_name" { 
  22.   description = "Jenkins name" 
  23.   default = "jenkins" 
  24.  
  25. variable "jenkins_instance_type" { 
  26.   default = "t2.micro" 
  27.  
  28. variable "jenkins_key_name" { 
  29.   default = "key-pair" 
  30.   description = "SSH key located in tyour AWS account." 
  31.  
  32. variable "amis" { 
  33.   description = "ami to spawn." 
  34.   default = {  
  35.     us-east-1 = "ami-0c94855ba95c71c99" 
  36.   } 

有几个属性需要设置:

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实例。

 
 
 
 
  1. resource "aws_instance" "jenkins" { 
  2.   instance_type = "${var.jenkins_instance_type}" 
  3.   security_groups = ["${aws_security_group.security_group_jenkins.name}"] 
  4.   ami = "${lookup(var.amis, var.region)}" 
  5.   key_name = "${var.jenkins_key_name}" 
  6.  
  7.   # Add jenkins server startup 
  8.   provisioner "file" { 
  9.     connection { 
  10.       user = "ec2-user" 
  11.       host = "${aws_instance.jenkins.public_ip}" 
  12.       timeout = "1m" 
  13.       private_key = "${file("templates/${var.jenkins_key_name}.pem")}" 
  14.     } 
  15.     source = "templates/jenkins_startup.sh" 
  16.     destination = "/home/ec2-user/jenkins_startup.sh" 
  17.   } 
  18.    
  19.   # Add jenkins job 
  20.   provisioner "file" { 
  21.     connection { 
  22.       user = "ec2-user" 
  23.       host = "${aws_instance.jenkins.public_ip}" 
  24.       timeout = "1m" 
  25.       private_key = "${file("templates/${var.jenkins_key_name}.pem")}" 
  26.     } 
  27.     source = "templates/jobmaster.xml" 
  28.     destination = "/home/ec2-user/jobmaster.xml" 
  29.   } 
  30.  
  31.   provisioner "remote-exec" { 
  32.     connection { 
  33.       user = "ec2-user" 
  34.       host = "${aws_instance.jenkins.public_ip}" 
  35.       timeout = "1m" 
  36.       private_key = "${file("templates/${var.jenkins_key_name}.pem")}" 
  37.     } 
  38.     inline = [ 
  39.       "chmod +x /home/ec2-user/jenkins*.sh", 
  40.       "/home/ec2-user/jenkins_startup.sh ${var.jenkins_user_name} ${var.jenkins_user_password}" 
  41.     ] 
  42.   } 

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

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

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

结论
简单实用,如果您想浏览此代码,请在此存储库中单击。也许,您已经看过许多有关Jenkins的安装,但是我在许多安装中都使用了这种bash和安装方式,它使这些基本活动变得很轻松:注册用户,注册基本工作和安装插件。希望这项贡献对您有所帮助。

脚本库地址:https://github.com/moballiachi/cicd-jenkins.git

关于我们
泽阳,DevOps领域实践者。专注于企业级DevOps运维开发技术实践分享,主要以新Linux运维技术、DevOps技术课程为主。丰富的一线实战经验,课程追求实用性获得多数学员认可。课程内容均来源于企业应用,在这里既学习技术又能获取热门技能,欢迎您的到来!(微信ID: devopsvip)

网页题目:使用Terraform在AWS上部署Jenkins
分享地址:http://www.hantingmc.com/qtweb/news26/155176.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联