linux自动化部署,java自动化部署
各位老铁们,大家好,今天由我来为大家分享linux自动化部署,以及java自动化部署的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
...从安装 Linux 到 GitLab 自动化部署(非常详细)
前言
了解代码管理、测试、上线流程与规范的 IT企业,通常由团队 Leader和运维人员搭建部署流程。而自动化部署作为流程的最后阶段,负责打包项目并部署到测试或生产环境。
对于前端开发者来说,对自动化部署了解有限,常见组合有「Gitea+ Jenkins」和「GitLab+ GitLab CI/CD」。出于好奇,决定自行实践。以下内容将详细介绍 GitLab+ GitLab CI/CD方案的实现步骤,特别针对 Linux新手,涵盖基本 Linux使用和服务器初始化配置。
注意:请将文章中提及的所有服务器 IP更换为您自己的 IP。
Linux系统服务器
在实际开发中,服务器多采用 Linux系统,本例使用 CentOS 7 64位。
服务器选择:对于 Linux初学者,推荐在 B站搜索 Linux基础教程视频,掌握常用命令。
本地虚拟机
对于未接触过虚拟机的读者,可参考网上教程,进行初始化配置。
本地虚拟机系统初始化配置(关键步骤)
确保本地虚拟机可访问网络,设置网络适配器为 NAT模式,编辑网卡配置文件将 ONBOOT=no更改为 ONBOOT=yes,执行命令保存更改并重启。
执行命令以查看服务器 IP。
云主机
在云主机控制台,通常会显示 IP及 SSH连接教程。
XShell连接服务器
推荐使用 XShell等工具管理服务器。
前端项目自动化部署所需环境
确保安装 Node,下载并解压项目文件,编辑配置文件添加部署指令,测试环境变量是否生效。
安装 Git
GitLab自动化部署需要拉取代码,因此需安装 Git,建议使用 Git 2.x.x版本。
安装 Nginx
手动或使用 Yum安装 Nginx,确保安装成功并访问服务器 IP以验证 Nginx正常运行。
防火墙配置
访问失败时,检查防火墙端口设置,通常 80端口已默认开放,根据需求调整防火墙设置。
安装 GitLab
设置 GitLab访问地址,确保 IP、端口正确开放。使用 GitLab命令测试部署。
配置 CI/CD
安装 gitlab-runner,新建 runner,配置项目访问地址,编写.gitlab-ci.yml文件,实现自动化部署。
完成前期准备,进入自动化部署核心阶段。
文章内容涵盖 Linux基础、服务器初始化、环境配置、Git与 Nginx安装、防火墙管理、GitLab实现与 CI/CD部署,旨在为初学者提供从入门到实践的详细指导。
详解Linux下自动化部署工具Puppet 的注册方式与常用命令
三种注册方式
Puppet注册方式基本上有三种:手动注册,自动注册和预签名注册
1.手动注册
手动注册是由Agent端先发起证书申请请求,然后由Puppet server端确认证书方可注册成功,这种注册方式安全系数中等,逐一注册(puppet cert--sign certname)在节点数量较大的情况下是比较麻烦的,效率也低,批量注册(puppet cert--sign--all)效率很高,一次性便可注册所有的Agent的请求,但是这种方式安全系数较低,因为错误的请求也会被注册上。
2.自动注册
这种注册方式简单来讲是通过Puppet master端的ACL列表进行控制的,安全系统较低,也就是说符合预先定义的ACL列表中的所有节点请求不需要确认都会被自动注册上,也就是说你只需要知道ACL列表要求,其次能和PuppetMaster端通信便可轻易注册成功。当然,它的最大优点就是效率非常高.
(1)查询认证情况
代码如下:
root@10.1.1.33:puppet# puppet cert--list--all
+"agent.domain.com" (SHA256) 3F:8E:AE:B8:04:2B:51:9B:7A:B3:1E:86:C0:21:3E:81:D6:2A:55:A4:17:15:CA:5E:7A:8F:95:EC:D3:83:41:C0
+"localhost" (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B
+"puppet.domain.com" (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF(alt names:"DNS:puppet","DNS:puppet.domain.com")
(2)在master上清除客户端已经agent注册信息的证书
代码如下:
root@10.1.1.33:puppet# puppet cert--clean agent.domain.com
Notice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/ca/signed/agent.domain.com.pem'
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/certs/agent.domain.com.pem'
(3)在agent.domain.com端删除注册过的证书
代码如下:
root@10.1.1.33:puppet# puppet cert--clean agent.domain.com
Notice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/ca/signed/agent.domain.com.pem'
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/certs/agent.domain.com.pem'
(4)在Puppet master端编写ACL列表
代码如下:
root@10.1.1.33:puppet# cat autosign.conf
*.domain.com
root@10.1.1.33:puppet#/etc/init.d/puppetmaster restart
Stopping puppetmaster: [ OK ]
Starting puppetmaster: [ OK ]
(5)客户端申请注册证书.
代码如下:
root@10.1.1.34:ssl# puppet agent--test
Info: Creating a new SSL key for agent.domain.com
Info: Caching certificate for ca
Info: csr_attributes file loading from/etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for agent.domain.com
Info: Certificate Request fingerprint(SHA256): FD:70:31:87:C6:44:EC:8D:18:0D:F5:10:E3:CE:5B:DC:EA:31:BD:BC:8C:C7:B2:80:F7:7E:2C:F2:4E:FB:12:90
Info: Caching certificate for agent.domain.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for ca
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version'1418292313'
Notice:/Stage[main]/Test/File[/tmp/agent.txt]/ensure: defined content as'{md5}fc3ff98e8c6a0d3087d515c0473f8677'
Notice: Finished catalog run in 0.13 seconds
(6)服务端查看证书.
代码如下:
root@10.1.1.33:puppet# puppet cert--list--all
+"agent.domain.com" (SHA256) FE:04:96:32:46:A4:54:BF:A9:4F:20:CA:EF:7E:F7:C6:A6:88:34:4A:D9:7E:50:54:FA:C0:10:29:87:F9:1C:6E
+"client.domain.com"(SHA256) E3:B4:46:90:DF:85:37:77:48:BB:F9:FD:9F:13:DE:52:2F:00:1C:71:A3:BC:C2:E2:A5:34:4F:01:DB:27:02:F5
+"localhost" (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B
+"puppet.domain.com"(SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF(alt names:"DNS:puppet","DNS:puppet.domain.com")
3.预签名认证
预签名注册是在agent端未提出申请的情况下,预先在puppet master端生成agent端的证书,然后复制到节点对应的目录下即可注册成功,这种方式安全系数最高,但是操作麻烦,需要提前预知所有节点服务器的certname名称,其次需要将生成的证书逐步copy到所有节点上去。不过,如果你的系统中安装了kickstart或者cobbler这样的自动化工具,倒是可以将证书部分转换成脚本集成到统一自动化部署中.注:生产环境中建议此方式进行注册,既安全又可靠.
(1)查询认证情况
代码如下:
root@10.1.1.33:puppet# puppet cert--list--all
+"agent.domain.com" (SHA256) 3F:8E:AE:B8:04:2B:51:9B:7A:B3:1E:86:C0:21:3E:81:D6:2A:55:A4:17:15:CA:5E:7A:8F:95:EC:D3:83:41:C0
+"localhost" (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B
+"puppet.domain.com" (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF(alt names:"DNS:puppet","DNS:puppet.domain.com")
(2)在master上清除客户端已经agent注册信息的证书
代码如下:
root@10.1.1.33:puppet# puppet cert--clean agent.domain.com
Notice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/ca/signed/agent.domain.com.pem'
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/certs/agent.domain.com.pem'
(3)在agent.domain.com端删除注册过的证书
代码如下:
root@10.1.1.33:puppet# puppet cert--clean agent.domain.com
Notice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/ca/signed/agent.domain.com.pem'
Notice: Removing file Puppet::SSL::Certificate agent.domain.com at'/var/lib/puppet/ssl/certs/agent.domain.com.pem'
(4)puppet server端预先生成agent证书
代码如下:
puppetca--generate agent.domain.com
(5)agent节点生成目录结构
代码如下:
puppet agent--test
(6)puppet master端copy证书到agent.domain.com上
代码如下:
root@10.1.1.33:puppet#scp/var/lib/puppet/ssl/private_keys/agent.domain.com.pem agent.domain.com:/var/lib/puppet/ssl/private_keys/
root@10.1.1.33:puppet#scp/var/lib/puppet/ssl/certs/agent.domain.com.pem agent.domain.com:/var/lib/puppet/ssl/certs/
root@10.1.1.33:puppet#scp/var/lib/puppet/ssl/certs/ca.pem agent.domain.com:/var/lib/puppet/ssl/certs/ca.pem
常用命令
1.puppet master
puppet master默认是以Ruby内建的WEBRick在后台运行的守护进程,同样也可以采用最常用的Web服务器apache和nginx替换WEBRick以提升性能.puppet master主要功能是编译配置文件,文件,模版,节点的自定义插件.
代码如下:
root@10.1.1.33:nodes# puppet master--help
puppet master [-D|--daemonize|--no-daemonize] [-d|--debug] [-h|--help]
[-l|--logdest syslog|FILE|console] [-v|--verbose] [-V|--version]
[--compile NODE-NAME]
*--daemonize:#-D发送到后台守护进程,默认选项
*--no-daemonize:#不发送到后台守护进程
*--debug:#完整调试
*--help:#输出帮助
*--logdest:#日志发送方式,默认是syslog
*--verbose:#显示详细信息
*--version:#打印puppet版本
*--compile:#以JSON的方式输出编译的catalog
使用--getconfig输出默认配置文件
代码如下:
root@10.1.1.33:puppet# puppet master--genconfig puppet.conf
puppet不启用后台守护进程的方式运行.
代码如下:
root@10.1.1.33:puppet master--no-daemonize--verbose
2.puppet agent
puppet agent在每个节点以守护进程方式运行,通常每30分钟向master请求一次,以确认新的信息并询问是否有变更.然后负责运行编译好的catalog代码
代码如下:
root@10.1.1.34:tmp# puppet agent--help
puppet agent [--certname NAME] [-D|--daemonize|--no-daemonize]
[-d|--debug] [--detailed-exitcodes] [--digest DIGEST] [--disable [MESSAGE]] [--enable]
[--fingerprint] [-h|--help] [-l|--logdest syslog|eventlog|FILE|console]
[--masterport PORT] [--no-client] [--noop] [-o|--onetime] [-t|--test]
[-v|--verbose] [-V|--version] [-w|--waitforcert SECONDS]
使用--noop参数,puppet运行catelog,但不执行配置
root@10.1.1.34:tmp# puppet agent--noop
3.puppet apply
puppet apply是puppet运行命令,主要在检测manifests时或在没有网络连接的情况下使用.不同于puppet agent,puppet apply在运行时不会连接master
代码如下:
root@10.1.1.34:tmp# puppet apply--help
puppet apply [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]
[-e|--execute] [--detailed-exitcodes] [-L|--loadclasses]
[-l|--logdest syslog|eventlog|FILE|console] [--noop]
[--catalog catalog] [--write-catalog-summary] file
(1)将输出信息输出到日志文件
代码如下:
root@10.1.1.33:manifests# puppet apply-l/tmp/init.pp init.pp
root@10.1.1.33:manifests# cat/tmp/init.pp
Fri Dec 12 16:17:46+0800 2014 Puppet(notice): Compiled catalog for puppet.domain.com in environment production in 0.04 seconds
Fri Dec 12 16:17:47+0800 2014 Puppet(notice): Finished catalog run in 0.04 seconds
4.puppet cert
它用于管理本地证书,查看未签名证书,签署证书,废除证书,清除证书.
代码如下:
puppet cert action [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]
[--digest digest] [host]
常用操作:
clean#清除证书
fingerprint#打印证书指纹
generate#生成客户端证书
list#查看认证客户端列表
print#打印主机证书的全文信息
revoke#废除已认证的主机
sign#签署认证
verify#验证本地指定的认证
命令参数:
--all#执行所有操作,包括'sign','clean','list', and'fingerprint'
--digest#设置证书指纹加密的方式
--debug#启用完整调试模式|
--verbose#显示详细信息
--version#显示版本
(1)查看请求认证的客户端列表
代码如下:
root@10.1.1.33:nodes# puppet cert list
(2)为主机agent.domin.com签署验证
代码如下:
root@10.1.1.33:nodes# puppet cert sign agent.domain.com
(3)列出所有签名和未签名的证书
代码如下:
root@10.1.1.33:nodes# puppet cert list--all
+"agent.domain.com" (SHA256) 3C:82:6A:E2:9B:8B:8F:8A:ED:C9:83:EB:64:47:6C:91:E5:8E:86:A6:B3:D7:1D:E5:4E:39:4D:04:5A:21:C5:86 #符号+表示已经签署过认证
"client.domain.com"(SHA256) E3:B4:46:90:DF:85:37:77:48:BB:F9:FD:9F:13:DE:52:2F:00:1C:71:A3:BC:C2:E2:A5:34:4F:01:DB:27:02:F5
(4)给所有未签署认证的请求颁发认证:
代码如下:
root@10.1.1.33:nodes# puppet cert sign--all
(5)查看所有已签署认证的客户端列表
代码如下:
root@10.1.1.33:nodes# puppet cert list--all
+"agent.domain.com" (SHA256) 3C:82:6A:E2:9B:8B:8F:8A:ED:C9:83:EB:64:47:6C:91:E5:8E:86:A6:B3:D7:1D:E5:4E:39:4D:04:5A:21:C5:86
5.puppet kick
它用于连接到agent客户端主动运行puppet agent--test命令.类似主动触发配置
Linux里面自动化部署工具有哪些
1. Puppet
Puppet是一款开源工具,旨在为系统管理员大大简化自动化和报告工作。它基本上是款配置管理软件,有助于配置和维护企业网络中的服务器及其他系统。系统管理员通常每天要花大量时间重复做同样的任务。他们总是想要使这些任务实现自动化,以便有更多的时间来处理其他项目或学习新的概念和脚本语言。管理员可以通过编写脚本使任务实现自动化,但是在拥有大型网络的公司,脚本不是很方便。这时候,Puppet就大有用场,因为借助Puppet,你可以:
为网络上的每个主机定义独特的配置设置;
不断监测网络,查找任何变动;
帮助高效地创建和管理用户;
帮助管理每个开源工具的配置设置。
2. CHEF
Chef是另一款可供Linux系统管理员使用的流行的自动化工具。它用Ruby和Erlang编写,对于配置和维护公司的服务器大有帮助,无论贵公司拥有十台服务器还是上百台。它还可以帮助你将云端服务器与亚马逊EC2、OpenStack、RackSpace或谷歌云整合起来。Chef可以将你的基础设施转变成代码,那样借助代码,你只要更改几行代码,就能轻松撤下一台服务器,从而让你轻松管理服务器。物理节点还意味着:将变更内容部署到生产环境之前,可以对它轻松进行测试,你还可以轻松控制针对代码的每次更新的版本。Chef DK为你提供了测试和管理配置的所有工具,Chef Server充当你所有“菜谱”(recipe)的存储库,可以管理与服务器连接的每个节点。Chef客户软件在每个客户端上运行,时不时收到服务器方面的信息,从而更新其配置设置。
3. CFEngine
面向Linux系统管理员的下一款自动化工具是CFEngine,这是另一个领先的自动化系统,可帮助你轻松管理整套基础设施,并使之实现自动化。一旦你使用CFEngine为网络中的系统定义了配置,那么CF Engine就会自动确保配置符合规范。不用说,如果你的网络中有10个或100个节点,可以在短短几秒内更新或改动任何一个节点或所有节点。CFEngine之所以受到许多Linux系统管理员的青睐,是由于它运行成本低、响应速度快、具有自愈合功能。
4. Ansible
Ansible是Red Hat提供的一款开源配置管理和IT企业自动化软件,随带一种简单的编程语言,让系统管理员能够高效地处理自动化和配置过程。Ansible由控制机器和控制机器控制的节点组成。节点是通过SSH来加以控制的。Ansible的主要特点之一是代理并不是部署到节点,但是完全借助SSH来进行通信。易学易用、具有一致性、高可靠性和安全性是让Ansible脱颖而出的其他特性。Ansible的唯一局限就是无法配置裸机和虚拟机。
5. Foreman
Foreman是另一种用于取证分析的开源配置管理工具。Foreman提供了仪表板,我们可以通过仪表板来配置裸机服务器和虚拟机。默认情况下,无论我们何时安装Foreman,它都使用Puppet作为配置工具。不过借助插件,Foreman还支持与其他配置管理工具整合起来,比如Chef、Puppet、Ansible、Salt及其他众多工具。Foreman自动化工具还随带各种各样的接口,包括命令行接口、Web前端以及REST API。Foreman的其他一些显著功能包括如下:
通过仪表板,管理Puppet模块和puppet类方面的改动;
很容易从Foreman仪表板来管理Puppet环境;
由于仪表板,创建主机群(Hosts Group)以及为主机群添加puppet模块变得很轻松;
可以从Foreman仪表板,轻松添加Puppet模块或推送到节点。
6. Katello
Katello是另一种开源自动化工具。换而言之,我们可以说Katello是一种开源版的Red Hat satellite Server;如果我们不想花钱在企业产品及其支持上,就可以用它来代替Red Hat satellite Server。Katello已被Foreman收购,Foreman中的大部分功能在Katello中也得到了支持。Katello Server的主要功能如下:
给基于Linux的服务器(RHEL和CentOS)打补丁;
使用Pulp Service来同步代码库;
使用Foreman进行各种配置;
它还可以处理订阅内容管理,并审计所有已部署的软件包;
借助Katello,你可以为所有主机创建主机群,另外还可以在单一主机或一群主机上批量执行操作。
7. Nagios
Nagios现在名为Nagios Core,它是一种开源自动化和监控工具,可以管理基础设施中的所有系统。它还提供警报服务,一旦察觉到你的网络中哪里有问题,就会提醒系统管理员。借助SNMP以及Nagios,系统管理员还可以控制并管理打印机、路由器和交换机。Nagios让我们得以创建事件处理工具,一旦某个应用程序及其服务停运,就可以自动重启出现故障的那个应用程序及其服务。