标签: puppet

Puppet:如何执行单个类?

我在主 -> 代理模型中使用 Puppet。我的清单存储在主服务器上,作为快速测试,我puppet agent -t在代理上执行以触发 Puppet 运行。

随着时间的推移,我的清单已经变得相当大,我正在寻找只执行单个类的能力mycompany.someclass.class

我尝试了一些基于谷歌搜索的变体,但没有一个有效

傀儡代理--标签 mycompany.someclass.class
傀儡代理--标签“mycompany.someclass.class”

傀儡代理--tags Mycompany.Someclass.Class
傀儡代理-t --tags“Mycompany.Someclass.Class”

傀儡代理-t --tags Mycompany.Someclass.Class
傀儡代理--tags Mycompany.Someclass.Class

puppet apply --tags mycompany.someclass.class
傀儡应用--标签Mycompany.Someclass.Class

puppet

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

傀儡习俗的事实

尝试编写自定义facter模块:

Facter.add("something_status") do
  setcode do
    $string_to_parse = Facter::Util::Resolution.exec('somecommand --print ')
    ... do something to string
    return something-new
  end
end
Run Code Online (Sandbox Code Playgroud)

对ruby来说很新...用这个做什么的正确语法是什么?

ruby puppet facter

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

为什么木偶不能找到我的班级?

我正在尝试实现这里找到的配方https://github.com/puppetlabs/puppetlabs-firewall#readme,我似乎正在制造一个我看不到的新手木偶错误.我有一个名为mwsettings的模块本身可以找到(mwsettings/init.pp存储一个帮助程序,用于加载一些模板并且可以正常工作),但是我的site.pp中的以下代码

Firewall {
  notify  => Exec['persist-firewall'],
  before  => Class['mwsettings::postfirewall'],
  require => Class['mwsettings::prefirewall'],
}
Run Code Online (Sandbox Code Playgroud)

爆发了

Error: Failed to apply catalog: Could not find dependency Class[Mwsettings::Prefirewall] for Firewall[100 accept mysql - XXXXXXXX]
Run Code Online (Sandbox Code Playgroud)

当我的代码稍后在site.pp调用时

firewall { "100 accept mysql - $name":
    proto => 'tcp',
    action => 'accept',
    dport => 3306,
    source => $name,
}
Run Code Online (Sandbox Code Playgroud)

但是,看起来我已经为prefirewall正确设置了清单:

# cat modules/mwsettings/manifests/prefirewall.pp 
class mwsettings::prefirewall {
  Firewall {
    require => undef,
  }
<snip>
Run Code Online (Sandbox Code Playgroud)

我在这里错过了一些非常微不足道的东西吗?因为这是我的第一个有木偶的牛仔竞技表演,所以我甚至都不确定如何调试它.

谢谢!

puppet

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

Vagrant,VirtualBox,Supervisord:何时安装同步文件夹?

我正在使用Supervisord运行虚拟机来启动和维护几个重要的后台进程.我使用vagrant和virtualbox创建虚拟机,并使用puppet进行配置.当机器启动时,supervisord会抓取/etc/supervisor/conf.d中的所有.conf文件并尝试运行它们.不幸的是,当我跑

Vagrant up
Run Code Online (Sandbox Code Playgroud)

在共享同步文件夹之前,supervisord立即开始尝试在conf.d中运行文件.因此,启动一些像Xvfb这样的后台进程运行得很好,但启动我的统计跟踪器(位于同步文件夹中)是不可能的.事实上,我在supervisord日志中看到多次尝试启动该进程,抱怨它无法找到该文件,最后放弃了.然后,一旦机器完全运行,我可以SSH并在.conf文件中运行完全相同的命令并自己启动该过程.

我创建了一个中间脚本来连续循环,等待同步文件夹变为可用,然后启动我想要的进程.但在这种情况下,主管没有办法确保流程继续运行,而且感觉就像是黑客攻击.

有更清洁的方法吗?也许来自傀儡或流浪汉?

virtualbox puppet supervisord vagrant

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

合并不起作用

我正在尝试实现hiera合并.希尔是我的hiera.yaml

---
:hierarchy:
 - fqdn/%{fqdn}
 - roles/%{role}
 - os/%{osfamily}
 - common
:backends:
 - yaml
# options are native, deep, deeper
:merge_behavior: deeper
:yaml:
 :datadir: /etc/puppet/environments/%{environment}/data
Run Code Online (Sandbox Code Playgroud)

然后我有:common.yaml

---
classes: 
 - a
 - b 
Run Code Online (Sandbox Code Playgroud)

和fqdn/some.host.yaml

---
classes: 
 - c
 - d
Run Code Online (Sandbox Code Playgroud)

赛跑

hiera --debug -c /etc/puppet/hiera.yaml classes fqdn=some.host environment=development
["c", "d"]
Run Code Online (Sandbox Code Playgroud)

hiera --debug -c /etc/puppet/hiera.yaml classes fqdn=blablahost environment=development
["a", "b"]
Run Code Online (Sandbox Code Playgroud)

所以"blablahost"采取common.yaml并应用"a"和"b"类..但是fqdn = some.host应该应用a,b,c,d ..而不仅仅是c,d ...什么是我做错了?

问候

puppet hiera

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

Puppet中的通知功能和通知资源有什么区别?

我可以通过两种方式在Puppet中显示自定义消息

notice("My extra information as a function")
Run Code Online (Sandbox Code Playgroud)

或者

notify{"My extra information as a resource":}
Run Code Online (Sandbox Code Playgroud)

共通的地方:

  • 两者都在Puppet Master上得到评估.
  • 两者都可以获得事实.
  • 如果消息由变量组成,则两者都将显示相同的字符串.

不同的事情:

  • 执行顺序.在编译阶段,首先评估函数.只有这样才能实现资源.
  • notify可以设置为虚拟或出口资源,具有重要的意义,这是不可用notice
  • notice无法显示主叫路(没有withpath => true)
  • notice有一个姐妹功能fail,它有能力使清单编译失败.notify不能那样做,因为它在编译完成后就开始工作了.

我有一种感觉,我错过了重要方面,或者在某些方面我错了.Puppet比我更好的人会填写更多细节吗?

puppet

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

在Puppet中将变量转换为字符串

是否有可能转换Boolean变量StringPuppet?我想在替换字符串时使用它.我可以使用条件语句,但也许没有必要.

$variable = true
$my_string = "status _"
$string = regsubst($my_string, '_', $variable)
Run Code Online (Sandbox Code Playgroud)

像这样的东西

ruby puppet

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

如何使用Puppet需要另一个自定义类

如果我在自己的木偶模块中有两个类,而'b'类依赖于类'a'.我怎样才能在require声明中表达这一点:

# a.pp
class rehan::a {
    package { 'javaruntime':
        ensure   => latest,
        provider => chocolatey
    }
}

# b.pp
class rehan::b {
    file { 'C:\foo':
        ensure  => present,
        require => Package['?????']
    }
}

# site.pp
node default {
    include rehan::a
    include rehan::b
}
Run Code Online (Sandbox Code Playgroud)

puppet

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

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
查看次数

不能为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
查看次数