小编Mat*_*ard的帖子

Jenkins Pipeline - 使用参数构建

我正在尝试使用jenkins管道的构建方法执行已定义的作业.这是一个简单的例子:

 build('jenkins-test-project-build', param1 : 'some-value')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行它时,我收到一个错误:

java.lang.IllegalArgumentException: Expected named arguments but got [{param1=some-value}, jenkins-test-project-build]
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:442)
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:380)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:156)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126)
...............
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

4
推荐指数
2
解决办法
3万
查看次数

在puppet清单中迭代深度嵌套的hiera哈希

我正在为我的网络服务器构建一个结构.我在hiera有我的设置,但我似乎无法让傀儡回馈正确的类型.

在common.yaml

vhosts:
  hostname:
    sitename:
      app_url: value
      app_type: value
Run Code Online (Sandbox Code Playgroud)

我有每个vhost多个站点和多个虚拟主机.在我的清单中,我将创建文件夹结构和其他设置任务,但是现在我甚至无法让它迭代网站.

目前的清单:

define application($app_name, $app_url) {
  notice("App Type: ${app_type}")
  notice("App Url: ${app_url}")
}

$vhosts = hiera('vhosts')

$vhosts.each |$vhost| {
  create_resources(application, $vhost)
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是create_resources需要哈希.但是,如果我输入演员,$vhost我知道它不是哈希而是元组.

我怎么从我的yaml哈希中得到一个元组?有没有更好的方法来迭代这个数据集来获得我需要的东西?

puppet hiera

4
推荐指数
1
解决办法
7116
查看次数

将散列附加到 Puppet4 中的一系列嵌套散列

给定的是 hieradata 中的散列值:

profile::jdbc::connections
  connection_name1:
    username: 'user1'
    password: 'pass1'
  connection_name2:
    username: 'user2'
    password: 'pass2'
Run Code Online (Sandbox Code Playgroud)

以及 puppet 代码中的默认值散列:

$jdbc_default = {  
  'testWhileIdle'                => true,
  'testOnBorrow'                 => true,
  'testOnReturn'                 => false,
  'timeBetweenEvictionRunsMillis'=> '30000',
  'maxActive'                    => '20',
  'maxWait'                      => '10000',
  'initialSize'                  => '5',
  'removeAbandonedTimeout'       => '600',
  'removeAbandoned'              => false,
  'logAbandoned'                 => true,
  'minEvictableIdleTimeMillis'   => '30001',
}
Run Code Online (Sandbox Code Playgroud)

如何将默认值添加到连接哈希中的每个哈希?

结果也可以是一个散列数组,但是一个与连接散列中的键相同的散列会很好。

puppet

4
推荐指数
1
解决办法
3774
查看次数

Puppet文件资源需要归档资源

我正在使用Puppet进行我的Vagrant配置.我使用https://forge.puppet.com/puppet/archive/types上的归档模块来下载和提取这样的glassfish:

archive { '/tmp/glassfish-4.1.1.zip':
  ensure        => present,
  extract       => true,
  extract_path  => '/opt/',
  source        => 'http://download.java.net/glassfish/4.1.1/release/glassfish-4.1.1.zip',
  cleanup       => true,
  creates       => '/opt/glassfish4',
}
Run Code Online (Sandbox Code Playgroud)

应用该资源后,我想将文件移动到新创建的glassfish目录中

file { 'domain.xml':
  ensure  => file,
  path    => '/opt/glassfish4/glassfish/domains/domain1/config/domain.xml',
  source  => 'puppet:///modules/glassfish/domain.xml',
}
Run Code Online (Sandbox Code Playgroud)

我想在文件移动资源中要求提取已经完成,因为提取不是创建文件,而是创建目录.就像是

require => FILE['..']
Run Code Online (Sandbox Code Playgroud)

不管用.

puppet vagrant

3
推荐指数
1
解决办法
529
查看次数

如何从人偶中删除 ruby​​ 模板中的多余空格

我想使用 puppet 在文件中放置一些值,但是当我在 ruby​​ 模板中执行以下操作时:

    <% @_zoo_cfgs.each do |zooconfig| -%>
    <%=zooconfig -%>
    <% end -%>
Run Code Online (Sandbox Code Playgroud)

我在生成的文件中得到以下内容:

server.1=a1-dev-mem333.lab.lynx-connected.com:2888:3888(trailing whitespace)
Run Code Online (Sandbox Code Playgroud)

但我想要以下内容:

server.1=a1-dev-mem333.lab.lynx-connected.com:2888:3888(no trailing whitespace)
Run Code Online (Sandbox Code Playgroud)

在值之前或之后的文件中没有额外的空格。任何人都可以让我知道如何做到这一点?

erb puppet

3
推荐指数
1
解决办法
3480
查看次数

puppet在循环中添加数组元素

我想要这样的东西:

$ssl_domains = ['dev.mydomain.com']

['admin', 'api', 'web'].each |$site| {
  ['tom', 'jeff', 'harry'].each |$developer| {
    $ssl_domains << "$site.$developer.dev.mydomain.com"
  }
}

letsencrypt::certonly { 'dev-cert':
  domains     => $ssl_domains,
  plugin      => 'apache',
  manage_cron => true,
}
Run Code Online (Sandbox Code Playgroud)

现在因为Puppet的变量范围而不可能.如何通过嵌套循环收集数组中的某些变量?

arrays loops puppet

3
推荐指数
1
解决办法
4516
查看次数

不能为different代理使用不同的环境

我有一个代理/主设置。我创建了一个新的环境,/etc/puppetlabs/code/environments/所谓master

的内容environment.confmaster目录环境

modulepath = site:modules:$basemodulepath
manifest = manifests/site.pp
Run Code Online (Sandbox Code Playgroud)

当我尝试puppet agent -t --environment master时出现一些错误

Notice: Local environment: 'master' doesn't match server specified node environment 'production', switching agent to 'production'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for node1.localpuppet.com
Info: Applying configuration version '1490712072'
Notice: Applied catalog in 0.67 seconds
Run Code Online (Sandbox Code Playgroud)

我是木偶新手。我需要什么改变?

PE控制台配置

puppet puppet-enterprise

3
推荐指数
1
解决办法
2010
查看次数

在木偶中使用事实事实

我是 puppet 的新手,并计划在我们的环境中实施它。

我有在不同版本的 Redhat 上运行的傀儡代理。

现在,我打算从 puppet master 推送 repo 文件,我需要你的指导来实现它。

我有以下清单。

file { 'local_repo':
  ensure => file,
  path   => '/etc/yum.repos.d/local.repo',
  mode   => "600",
  source => 'puppet:///modules/repo/rhel7.1',
}

file { 'local_repo':
  ensure => file,
  path   => '/etc/yum.repos.d/local.repo',
  mode   => "600",
  source => 'puppet:///modules/repo/rhel6.7',
}
Run Code Online (Sandbox Code Playgroud)

当我执行 Factor CLI 时,我得到以下输出。

[root@dheera ~]# facter os
{
  architecture => "x86_64",
  family => "RedHat",
  hardware => "x86_64",
  name => "RedHat",
  release => {
    full => "7.2",
    major => "7",
    minor => "2"
  }
} …
Run Code Online (Sandbox Code Playgroud)

puppet facter

2
推荐指数
1
解决办法
8911
查看次数

将 puppet 与 terraform 结合使用

我想使用 Terraform 创建一个 AWS 实例并在其中运行 Puppet 模块。我已经尝试了 github 上的许多模块,但似乎没有任何效果。有人试过这个吗?

linux puppet terraform devops

2
推荐指数
1
解决办法
3838
查看次数

使用 PyYaml 解析可能无效的 YAML

我想用 pyyaml 解析与 puppet 相关的 yaml 配置。不幸的是,由于这部分,pyyaml 似乎无法解析某些 YAML 文件:

base::files:

  /var/log/fpm:
    ensure: 'directory'
    mode: '777'

  /etc/nginx/ssl/cert:
   ensure: 'directory'

  /apps:
   ensure: 'directory'
   owner: user
   group: user

  ['/apps/ecert-public', '/apps/ecert-public/config', '/apps/ecert-public/releases']:
    ensure: 'directory'
    owner: 'user'
    group: 'user'

  ['/apps/site-public', '/apps/site-public/config', '/apps/site-public/releases']:
    ensure: 'directory'
    owner: 'user'
    group: 'user'
Run Code Online (Sandbox Code Playgroud)

问题是具有多个值的映射(在方括号内)。尝试使用 pyyaml 解析此部分时收到以下错误消息:

在“/hieradata/node/wc-de.yaml”第 133 行第 3 列中构建映射时,在“/hieradata/node/wc-de.yaml”第 212 行第 3 列中发现不可哈希键

一些 YAML 验证器说这是有效的 YAML(例如:http : //www.yamllint.com/),但我尝试过的大多数验证器在解析这部分时也有问题。有谁知道我如何用 pyyaml 解决这个问题?不幸的是我不能改变 YAML 本身,所以我需要一个解决方案来解析它是如何的。

python yaml puppet pyyaml hiera

2
推荐指数
1
解决办法
541
查看次数

是否可以在 groovy 函数上设置环境变量

我知道我可以有一个关于 jenkins 管道(声明性)的环境部分。像这样:

stage('Name') {
    environment {
        NAME = value
    }   
    steps {
        script {
            Do something using these env vars
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

我想编写一个 groovy 函数,定义一些环境变量,运行一些东西,并从几个管道中调用它。就像是:

def function () {
    environment {
        NAME = value
    }
    sh "do something using these env vars"
}
Run Code Online (Sandbox Code Playgroud)

有可能吗?

(我知道我可以写,sh "ENV=value; some CMD"但我的变量很少,而且可读性较差)。

jenkins-groovy jenkins-pipeline

2
推荐指数
1
解决办法
1万
查看次数

puppet如何向操作系统发送命令?

我是Puppet的新手,但很清楚这些概念.Puppet Manifests调用Puppet Modules,模块执行实际任务.

我试图了解Puppet模块层发生了什么.命令如何实际执行?以下面的例子为例,哪些命令实际传递给操作系统?此外,定义在哪里?

package { 'ntp':
  ensure => installed,
}

puppet

1
推荐指数
1
解决办法
526
查看次数