我在我公司的基于SaaS的产品上工作,该产品托管在私有云上。因此,每当DEV团队提供新的BOM包时。在公共共享文件夹中,我们 - 测试团队在我们的应用程序服务器上安装构建(3个多节点服务器,其中一个是主服务器,另外两个是辅助服务器)。
构建安装完全是手动完成的。在三个应用服务器(linux机器)上,我们遵循的步骤如下所示
问题:我希望自动完成整个过程,这样我只需要安装最新的内部版本号,脚本就可以完成整个安装。
目前我不明白如何做到这一点?我应该从哪里开始?这可行吗?整个过程的shell脚本是解决方案吗?
答案 0 :(得分:0)
有许多构建自动化/持续部署工具可以帮助您获得自动化部署管道的解决方案。一些比较流行的配置自动化工具有puppet,chef,ansible和saltstack。我只有ansible和厨师的经验,但我的解释是厨师是更“用户友好”的选择。我会从那里开始......(厨师使用ruby语言,ansible使用python)。 我可以回答有关这方面的具体问题,但小时原始问题真的是开放式和广泛的。 免费教程:https://learn.chef.io/
编辑:我不建议使用bash脚本配置您的服务器/部署......这通常很麻烦,随着您的自动化程度的增长(可能会这样),您的代码将逐渐变得无法管理。使用像chef这样的东西,您可以设置定期检查存储库中的新代码,并在检测到新代码时(或在满足某些条件时)进行部署。你可以在ruby bock中编写strait bash代码,远程停止/启动这样的服务(例子):bash 'Copying the conf file' do
cwd "current/working/directory"
user 'user_name'
code <<-EOH
nohup ./startservice.sh &
sleep 2m
nohup ./startservice.sh &
sleep 3m
EOH
end
从git复制代码例如...我在这个例子中假设github,因为我不知道你的代码所在的位置:
git "/opt/mysources/couch" do
repository "git://git.apache.org/couchdb.git"
reference "master"
action :sync
ssh_wrapper "/some/path/git_wrapper.sh"
end
让我们说你的代码在其他任何地方..例如竹子或詹金斯......有一个红宝石/厨师资源或某种方式使用海峡红宝石代码来调用它。
这是“你”和你的团队必须为...制定战略的事情。
您可以使用tar资源解压缩文件:
tar_package 'http://pgfoundry.org/frs/download.php/1446/pgpool-3.4.1.tar.gz' do
prefix '/usr/local'
creates '/usr/local/bin/pgpool'
end
或使用通用linux命令:
execute 'extract_some_tar' do
command 'tar xzvf somefile.tar.gz'
cwd '/directory/of/tar/here'
not_if { File.exists?("/file/contained/in/tar/here") }
end
您可以按照我编写第一个代码块的方式启动服务器(假设它们是服务..如果您需要重新启动实际的服务器,那么您可以运行init 6
或其他。< / p>
这只是这些实用程序提供的灵活性的一个例子