Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Continuous integration 木偶如何适应连续交付工具链?_Continuous Integration_Puppet_Continuous Deployment - Fatal编程技术网

Continuous integration 木偶如何适应连续交付工具链?

Continuous integration 木偶如何适应连续交付工具链?,continuous-integration,puppet,continuous-deployment,Continuous Integration,Puppet,Continuous Deployment,我正在研究Puppet作为我们商店中未来的部署和资源调配工具,但现在我一直在研究如何通过Puppet进行部署,构建一个智能的持续集成/交付工具链 在我们的任何环境(开发、测试、qa、演示、产品)中,我们都有一系列组件。我们需要能够单独甚至并发地部署每个组件 我想要一种方法来启动(通过脚本)单个组件包(=Puppet模块)的部署,并收集该组件包的输出和成功状态。 简单地等待计划的代理拉取,或者在环境中的每个节点上执行“puppet-agent--test”是不够的,因为它可能会获取其他挂起的更改(

我正在研究Puppet作为我们商店中未来的部署和资源调配工具,但现在我一直在研究如何通过Puppet进行部署,构建一个智能的持续集成/交付工具链

在我们的任何环境(开发、测试、qa、演示、产品)中,我们都有一系列组件。我们需要能够单独甚至并发地部署每个组件

我想要一种方法来启动(通过脚本)单个组件包(=Puppet模块)的部署,并收集该组件包的输出和成功状态。 简单地等待计划的代理拉取,或者在环境中的每个节点上执行“puppet-agent--test”是不够的,因为它可能会获取其他挂起的更改(我不知道是否还有另一个组件也在部署过程中)

在我的工具链中,我希望组件A和组件B的部署输出和状态能够单独记录,而不是混淆

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

如果不是的话,当我沿着这条路行驶时,我在哪里拐错了弯

我意识到一个无主的傀儡设置和复制到每个节点的模块和清单也许可以做到这一点,但我认为一个无主的傀儡设置有点违背了傀儡的目的

PS:我想我正在努力实现的是Damon Edwards的非常有启发性的视频中的“定向配器”(时间戳约为22:30)

一个没有大师的木偶设置有点违背了木偶的目的

除非你打折

  • 丰富的DSL傀儡必须提供
  • 这么多同行评审的社区模块
  • 否则,类似这样的内容将为您提供远程定向编排

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

    我在你的视频播放点观看了视频。您可以实现两种类型的自动化

    应用程序构建/部署自动化,可通过maven/ant(构建)和ant/capistrano/chrome/bash/msdeploy(部署)实现,或如幻灯片“安装程序”中所述

    系统/基础设施自动化可通过Chef/Puppet/CFEngine实现

    这个问题似乎是。。。“如何使用puppet(暗示为系统自动化工具)构建应用程序”

    所以很简单,椭圆工具在圆孔里。(我没说正方形)

    在我的公司,我们使用Jenkins和Build Pipeline集成插件来构建大规模的多组件项目。例如,Java应用程序将在构建作业中使用ant,下一个链接作业将是“部署到开发人员”作业,它使用Capistrano部署应用程序,然后链中的下一个作业是“配置开发人员”,它调用Chef更新开发人员环境中的系统配置。Chef用于配置应用程序。每个作业都可以设置为自动顺序运行。

    • 所以我的问题是:我可以使用puppet一次部署一个命名包(模块)吗
    是的,您可以通过
    应用
    。首先,您需要创建一个moduledir和一个包含清单的模块。e、 g:

      /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
    

    是的,我认为你的观点很有道理。目前,我们有太多不同的构建/部署工具(有些工具比其他工具更不成熟),我的任务是围绕单个(或几个)工具链整合所有这些工具。我需要重新考虑是否我的目标是太多的整合和对Puppet的过度拉伸。我同意您提到的子弹是使用Puppet的关键好处,但如果可能的话,我仍然希望设置master agent。尽管我从来没有接近过Puppet GUI控制台来进行系统的任何配置或操作(“如果它不能自动化,它就不存在”),但我仍然希望有一个中央仪表板,提供某种概述和状态来查看。然而,这也可以通过其他方式实现,所以我现在考虑将无主设置作为我的“计划B”。