如何用Jenkins实现自动化部署svn更新代码
Jenkins 配置svn自动部署
Jenkins 环境搭建好之后,就需要配置项目了,这里也介绍一下。
新建一个项目
这里写描述
点击新建
输入项目名称
选择:构建一个自由风格的软件项目
点击 OK
这里写描述
输入项目描述
配置构建保留天数和最大个数
这里写描述
输入svn 项目地址
选择用户名&密码 #如果没有就,点击add 自己添加一个
这里写描述
配置每天 1:15AM 构建
配置每次 SCM 版本变更,构建
这里写描述
配置每次构建前,删除目录,放置构建产生的文件导致,svn 不能正常更新
这里写描述
添加构建:
这里写描述
cd /home/xxx/jenkins/workspace/fft-bill-web/ && ant #打开工作目录,项目会被更新到这个目录下, 执行ant 命令进行打包
cd /home/xxx/jenkins/workspace/fft-bill-web/release/ #打开war 目录,打好的包会被放到这个目录下
mv xxxx-1000war xxxwar #给war包重新命名
scp xxxwar user@192xxxxxxxxx:/opt/tomcat-xxxx/webapps #把war包发送到指定服务器目录
ssh user@192xxxxxxxxx "cd /xxx/xxx/tomcat-xxxx/bin && sh shutdownsh" #远程关闭 tomcat
ssh user@192xxxxxxxxx "cd /xxx/xxx/tomcat-xxxx/bin && sh startupsh" #远程命令启动 tomcat
1
2
3
4
5
6
1
2
3
4
5
6
到这里基本就配置完成了,点击立即构建,试一下。
后面还可以添加一些构建后的操作步骤,例如发送邮件等等。
云主机有什么好处
随着互联网的发展,云计算作为一种新型计算模式得到了广泛的应用。其中,云主机作为云计算的基础设施之一,受到了越来越多企业和个人的关注。那么,云主机到底有哪些好处呢?本文将从几个方面详细介绍云主机的好处。
良好的稳定性
相比传统的物理主机,云主机提供商将用户的数据和资源分布在不同的物理服务器上。若某一物理服务器故障,云主机服务商会自动将用户的数据和资源迁移到其他物理服务器上,从而保证用户的业务不会受到影响。此外,云主机服务商还可以通过负载均衡等技术,将用户的业务均衡地分配到不同的物理服务器上,进一步提高云主机的稳定性。
强大的灵活性
云主机的灵活性是它最大的优势之一。在传统的物理主机中,用户需要在购买服务器时就提前规划好服务器的配置和资源。但是,在实际应用中,很难预计到业务的实际需求,这就导致了很多资源的浪费。而云主机则可以根据用户的实际需求动态调整其配置和资源,从而实现了资源的有效利用。另外,云主机还支持自动化部署,用户可以通过脚本自动化地完成应用程序的部署和升级,从而提高了效率。
低廉的维护成本
云主机的另一个优势是其维护成本相对较低。在传统的物理主机中,用户需要自己独立完成服务器的维护和管理工作,包括软件和硬件的维护、安全防护和备份恢复等等。这不仅需要高超的技术水平,还需要花费大量的时间和精力。而云主机则由云服务商提供一体化的服务,用户只需要支付相应的费用,就可以享受到完整的服务,从而将大量的维护工作交给服务商处理,将自己的精力聚焦到业务本身上。
总结
综上所述,云主机作为云计算的基础设施之一,具有良好的稳定性、强大的灵活性和低廉的维护成本等优势。这些优势不仅可以帮助企业实现业务数字化转型,还可以帮助个人更快捷、更高效地建立自己的网站和互联网应用。相信随着云计算和云主机技术的不断成熟,其应用场景和应用效果也将越来越完善和广泛。
三种注册方式
Puppet注册方式基本上有三种:手动注册,自动注册和预签名注册
1手动注册
手动注册是由Agent端先发起证书申请请求,然后由Puppet server端确认证书方可注册成功,这种注册方式安全系数中等,逐一注册(puppet cert --sign certname)在节点数量较大的情况下是比较麻烦的,效率也低,批量注册(puppet cert --sign --all)效率很高,一次性便可注册所有的Agent的请求,但是这种方式安全系数较低,因为错误的请求也会被注册上。
2自动注册
这种注册方式简单来讲是通过Puppet master端的ACL列表进行控制的,安全系统较低,也就是说符合预先定义的ACL列表中的所有节点请求不需要确认都会被自动注册上,也就是说你只需要知道ACL列表要求,其次能和PuppetMaster端通信便可轻易注册成功。当然,它的最大优点就是效率非常高
(1)查询认证情况
代码如下:
root@101133:puppet# puppet cert --list --all+ "agentdomaincom" (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
+ "puppetdomaincom" (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:puppetdomaincom")
(2)在master上清除客户端已经agent注册信息的证书
代码如下:
root@101133:puppet# puppet cert --clean agentdomaincomNotice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'
(3)在agentdomaincom端删除注册过的证书
代码如下:
root@101133:puppet# puppet cert --clean agentdomaincomNotice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'
(4)在Puppet master端编写ACL列表
代码如下:
root@101133:puppet# cat autosignconfdomaincom
root@101133:puppet# /etc/initd/puppetmaster restart
Stopping puppetmaster: [ OK ]
Starting puppetmaster: [ OK ]
(5)客户端申请注册证书
代码如下:
root@101134:ssl# puppet agent --testInfo: Creating a new SSL key for agentdomaincom
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributesyaml
Info: Creating a new SSL certificate request for agentdomaincom
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 agentdomaincom
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for ca
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agentdomaincom
Info: Applying configuration version '1418292313'
Notice: /Stage[main]/Test/File[/tmp/agenttxt]/ensure: defined content as '{md5}fc3ff98e8c6a0d3087d515c0473f8677'
Notice: Finished catalog run in 013 seconds
(6)服务端查看证书
代码如下:
root@101133:puppet# puppet cert --list --all+ "agentdomaincom" (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
+ "clientdomaincom" (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
+ "puppetdomaincom" (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:puppetdomaincom")
3预签名认证
预签名注册是在agent端未提出申请的情况下,预先在puppet master端生成agent端的证书,然后复制到节点对应的目录下即可注册成功,这种方式安全系数最高,但是操作麻烦,需要提前预知所有节点服务器的certname名称,其次需要将生成的证书逐步copy到所有节点上去。不过,如果你的系统中安装了kickstart或者cobbler这样的自动化工具,倒是可以将证书部分转换成脚本集成到统一自动化部署中注:生产环境中建议此方式进行注册,既安全又可靠
(1)查询认证情况
代码如下:
root@101133:puppet# puppet cert --list --all+ "agentdomaincom" (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
+ "puppetdomaincom" (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:puppetdomaincom")
(2)在master上清除客户端已经agent注册信息的证书
代码如下:
root@101133:puppet# puppet cert --clean agentdomaincomNotice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'
(3)在agentdomaincom端删除注册过的证书
代码如下:
root@101133:puppet# puppet cert --clean agentdomaincomNotice: Revoked certificate with serial 7
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'
Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'
(4)puppet server端预先生成agent证书
代码如下:
puppetca --generate agentdomaincom(5)agent节点生成目录结构
代码如下:
puppet agent --test(6)puppet master端copy证书到agentdomaincom上
代码如下:
root@101133:puppet#scp /var/lib/puppet/ssl/private_keys/agentdomaincompem agentdomaincom:/var/lib/puppet/ssl/private_keys/root@101133:puppet#scp /var/lib/puppet/ssl/certs/agentdomaincompem agentdomaincom:/var/lib/puppet/ssl/certs/
root@101133:puppet#scp /var/lib/puppet/ssl/certs/capem agentdomaincom:/var/lib/puppet/ssl/certs/capem
常用命令
1puppet master
puppet master 默认是以Ruby内建的WEBRick在后台运行的守护进程,同样也可以采用最常用的Web服务器apache和nginx替换WEBRick以提升性能puppet master主要功能是编译配置文件,文件,模版,节点的自定义插件
代码如下:
root@101133:nodes# puppet master --helppuppet 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@101133:puppet# puppet master --genconfig puppetconfpuppet不启用后台守护进程的方式运行
代码如下:
root@101133:puppet master --no-daemonize --verbose2puppet agent
puppet agent 在每个节点以守护进程方式运行,通常每30分钟向master请求一次,以确认新的信息并询问是否有变更然后负责运行编译好的catalog代码
代码如下:
root@101134:tmp# puppet agent --helppuppet 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@101134:tmp# puppet agent --noop
3puppet apply
puppet apply 是puppet运行命令,主要在检测manifests时或在没有网络连接的情况下使用不同于puppet agent,puppet apply在运行时不会连接master
代码如下:
root@101134:tmp# puppet apply --helppuppet 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@101133:manifests# puppet apply -l /tmp/initpp initpproot@101133:manifests# cat /tmp/initpp
Fri Dec 12 16:17:46 +0800 2014 Puppet (notice): Compiled catalog for puppetdomaincom in environment production in 004 seconds
Fri Dec 12 16:17:47 +0800 2014 Puppet (notice): Finished catalog run in 004 seconds
4puppet 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@101133:nodes# puppet cert list(2)为主机agentdomincom签署验证
代码如下:
root@101133:nodes# puppet cert sign agentdomaincom(3)列出所有签名和未签名的证书
代码如下:
root@101133:nodes# puppet cert list --all+ "agentdomaincom" (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 #符号+表示已经签署过认证
"clientdomaincom" (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@101133:nodes# puppet cert sign --all(5)查看所有已签署认证的客户端列表
代码如下:
root@101133:nodes# puppet cert list --all+ "agentdomaincom" (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
5puppet kick
它用于连接到agent客户端主动运行puppet agent --test命令类似主动触发配置
1 在Ubuntu中安装Java8 以下是一个简单的安装方法。 $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer $ java -version java version "180_60" Java(TM) SE Runtime En
上一章: 运维部署自动化实践(一)利用PXE远程自动化安装Ubuntu1604 server
在上文中,尝试利用Kickstart工具实现PXE远程安装的自动化,但是安装过程中出现了一个分区报错需要人工确认,导致自动化过程中断。查阅了一些技术博客和官方文档,发现Kickstart主要用于Redhat系的linux系统安装,而对于Debian系的支持可能不太好。Debian系Linux采用了特有的debian-installer作为系统安装工具,而运维人员可以通过一个 preseedcfg 配置文件,写入安装各个阶段需要的参数或指令,这样就可以避免安装过程中的人机交互,实现无人值守的自动化安装。
事实上上一文的过程也利用了preseed配置文件(在上文中ubuntu-serverseed文件),只不过大部分安装指令都写在了kickstart配置里。本文在没有kickstart工具的情况下,完全采用preseed配置实现ubuntu系统安装。
这一步可以直接复制上一章的操作,本文尝试用dnsmasq来代替isc-dhcp-server和tftpd-hpa,提供集成的dhcp和tftp服务
安装dnsmasq
sudo apt-get install dnsmasq
编辑/etc/dnsmasqconf,将以下的配置配置激活(去掉注释)
创建tftp目录
sudo mkdir /var/ftpd
启动dnsmasq
sudo service dnsmasq start
注意该步骤配置文件中没有再指定kscfg,后面的安装过程完全通过preseedcfg控制
Dell服务器进入PXE模式,安装过程无需再人工介入。
下一步继续实践在Preseed里添加后处理,执行自动安装软件和配置系统环境。
0条评论