Puppet如何融入持续交付工具链?

时间:2013-10-02 12:56:06

标签: continuous-integration puppet continuous-deployment

我正在调查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左右的时间戳)。

3 个答案:

答案 0 :(得分:3)

  • 所以我的问题是:我可以一次使用puppet部署一个命名包(模块)吗?

是的,你可以通过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的目的。

仅限折扣

  1. 丰富的DSL木偶必须提供
  2. 如此多的同行评审社区模块
  3. 否则,这样的事情会为您提供远程定向编排。

    #update manifests etc (version control is the source of truth)
    ssh user@host git pull
    #run puppet
    ssh user@host sudo puppet-apply