我正在调查Puppet作为我们未来的部署和配置工具,但现在我仍然坚持如何通过Puppet部署一个聪明的持续集成/交付工具链。
在我们的任何环境(dev,test,qa,demo,prod)中,我们都有一系列组件。我们需要能够单独部署每个组件,甚至可能同时部署。
我想要一种方法来启动(通过脚本)部署单个组件包(= Puppet模块)并收集其输出和成功状态。 只是等待预定的代理程序拉动,或者在环境中的每个节点上执行“puppet agent --test”都不够好,因为它可能会接收其他待处理的更改(我不知道是否还有其他组件被部署的过程。)
在我的工具链中,我希望组件A和组件B的部署输出和状态能够单独记录而不会混淆。
所以我的问题是:我可以一次使用puppet部署一个命名包(模块)吗?
如果没有,当我开车沿着这条路走的时候,我在哪里走错了路?
我意识到一个没有主人的Puppet设置,模块和清单复制到每个节点也许可以做到,但恕我直言,一个无主人的Puppet设置类型击败了Puppet的目的。
PS:我认为我想要实现的目标在Damon Edwards的Integrating DevOps tools into a Service Delivery Platform非常有启发性的视频中被称为'Directed Orchestration'(在22:30左右的时间戳)。答案 0 :(得分:3)
是的,你可以通过puppet apply
。首先,您需要创建一个moduledir和一个包含清单的模块。例如:
/scratch/user/puppet/local/ # This is your modulepath for local deployment
# Following contains the manifests for a module name "localmod"
/scratch/user/puppet/local/localmod/manifests/init.pp
# example content of init.pp
class localmod {
notify{"I am in in local module....":}
}
在本地计算机上,您可以通过puppet apply
:
puppet apply -v --modulepath=/scratch/user/puppet/local -e "include localmod"
echo $? # Get the exit status of the above command
答案 1 :(得分:2)
我在视频点看了视频。您可以执行两种类型的自动化。
应用程序构建/部署自动化,可以通过maven / ant(Build)和ant / capistrano / chrome / bash / msdeploy(Deploy)或在幻灯片“Installer”上查看。
系统/基础设施自动化可以通过Chef / Puppet / CFEngine实现。
这个问题似乎是......“我如何使用puppet构建应用程序(暗示为系统自动化工具)”
非常简单,椭圆形工具在圆孔中。 (我没说广场)
在我的公司,我们使用Jenkins和Build Pipeline Integration插件来构建大规模的多组件项目。例如,Java应用程序将在构建作业中使用ant,下一个链接作业将是使用Capistrano部署应用程序的“部署到开发”作业,然后链中的下一个作业是“Configure Dev”调用Chef更新DEV环境中的系统配置。 Chef用于配置应用程序。这些作业中的每一个都可以设置为自动和顺序运行。
答案 2 :(得分:1)
一个没有主人的Puppet设置类型违背了Puppet的目的。
仅限折扣
否则,这样的事情会为您提供远程定向编排。
#update manifests etc (version control is the source of truth)
ssh user@host git pull
#run puppet
ssh user@host sudo puppet-apply