我在标准位置的puppet服务器上有一些自定义事实:
[module_dir]/lib/puppet/facter/[fact_name].rb
以下是一个例子:
require 'facter'
Facter.add("fact_name") do
setcode do
"fact_name_value"
end
end
我看到它们正在下载到puppet客户端上的预期位置:
C:\ProgramData\PuppetLabs\puppet\var\lib\puppet\
我正在通过服务器上的puppet配置syslog ng。版本2.x、3.1和3.3之间的配置文件非常不同。在我的主机上,根据操作系统(centos5、centos6、debian 7、ubuntu),可用的syslog ng版本会有所不同
我有两个想法将syslog ng的配置调整到正确的版本:
自定义事实:编写自定义事实来测试已安装的syslog ng版本很容易。但如果尚未安装syslog ng,这一事实将是无用的
清单中的条件:我发现在清单中定义一个“case”有点难看,它将决定opera
我有以下错误:
piousbox@piousbox-laptop:~$ puppet resource service
Error: Could not run: Execution of '/sbin/status bridge-network-interface' returned 1:
status: Unknown parameter: INTERFACE
运行/sbin/status bridge network interface会出错,但运行/sbin/status bridg
我的代码块是--
当我运行puppet代理时——test它正在退出,错误代码为6,我收到的错误代码为
一,;31mError:无法在Sure:无效参数-ruby_setenv的13:/etc/puppet/modules/module_name/manifests/test.pp上设置'present'
不知道这个ruby_setenv错误。有人能帮忙吗 所示舱单第13行及其周围有什么?这是包裹的末尾。一个以大括号结尾的包。你能在你的问题中添加该包资源的完整声明吗?
package {'Micr
我对puppet非常陌生,我一直在研究如何用参数通知类。我正在尝试通知我找到的一个类,该类使用一个参数运行update rc.d:
define myclass::update-rc {
exec { "update-rc_${title}":
command => "update-rc.d ${title} defaults",
cwd => "/tmp",
path => "/usr/local/sbin:/usr/l
如果我想使用Puppet将文件添加到特定目录,我可以使用:
file { "/folder/file_name":
ensure => present,
source => [puppet///file_name],
}
有没有办法将文件添加到每个用户的主目录
比如:
file { "/home/$USER/filename":
ensure => present,
source => [puppet///filename],
}
只要
我在学习木偶的过程中,我遇到了我认为是一个非常基本的问题。为了保持简单,我使用了一个puppet forge模块,而不是任何自定义编写的模块。以下是我正在使用的版本:
傀儡服务器:5.1.3
傀儡代理:5.3.2
puppetlabsjava:2.1.0
安装puppetlabs java模块时,我使用的是--modulepath/etc/puppetlabs/code/modules/
目前,我已将代理配置为指向我的puppet服务器和我命名为示例的环境
当前的环境如下所示:
├── envi
标签: Puppet
keep-alivetcp-keepalive
我有两个虚拟机。
我正在使用Keepalive将它们作为主/备份,与同一VIP共享。()
我想使用Puppet逐个部署这些机器
我想先部署备份,然后在备份完成后部署主服务器
使用Puppet的最佳方法是什么?我相信您可以使用subscribe来实现这一点。可能是的副本。结果是Puppet不会在节点之间进行编排:-(
标签: Puppet
logrotatepuppet-enterprise
我正在尝试使用puppet为logrotate创建一个测试配置。但我似乎遗漏了一些东西,因为它没有创建旋转的文件。
我的要求是,如果日志文件的大小超过x,它应该旋转日志
下面是puppet代码片段
$conf_params = {
dateext => true,
compress => true,
ifempty => false,
mail => false,
olddir
我正在尝试使用puppet模块puppetlabs/postgresql。我很困惑如何使用它。谁能给我举个例子?文档告诉我如何使用设置创建类,但我不确定在哪里创建类,我的印象是使用site.pp,但当我在site.pp中创建类时。安装模块后,我在site.pp中放置了以下块
node default {
# This is where you can declare classes for all nodes.
# Example:
# class { 'my_class': }
我正在两个不同的节点上安装两个不同的应用程序。但这两个应用程序之间存在依赖关系。仅当部署了节点2上的应用程序2时,才应启动应用程序1的服务
有谁能帮助我在puppet清单中解决这个问题吗?也许puppet不是分布式部署的合适工具
您可以编写一个自定义事实来检测节点2是否已部署,然后将此事实用作sure=>的值,或者使用exec资源而不是服务资源
无论如何,这将是一个有点手工艺品。考虑使用织物< /强>或任何其他工具来进行分布式部署造林,并使用木偶保持集中配置完整性。你好,劳尔,谢谢您的输入。Mc
我正在努力实现以下目标我在hiera yaml中为a.yaml定义了某些变量-我想从外部事实中读取的一些变量。-然而,每当一个外部事实没有定义时,我想使用一些默认值
比如说
---
key1: value1
key2: %{value2_from_facts} | value2
在这种情况下,如果未定义自定义事实“value2fromfacts”,我希望key2具有value2。这可能吗
如果所使用的事实没有得到解决,除了将默认值指定给hiera变量之外,还有什么更好的选择吗?我认为hiera
我看到有人在运行下面指定的内容之前检查代理的MAC地址是否位于特定的正则表达式上。例如:
if $is_virtual == "true" and $kernel == "Linux" and $macaddress =~ /^02:00:0A/ {
include nmonitor
include rootsh
include checkmk-agent
include backuppcacc
include onecontext
include
标签: Puppet
configuration-fileshiera
我有这样的等级制度:
- "nodes/%{::certname}"
- (what's here is my question)
- common
我想在hiera中为我的节点分配一个组,如节点/hostname.yaml中的配置:
---
group: alpha
现在,我想要一个文件alpha.yaml,其中我陈述了特定于组的设置
因此,我的问题是如何编写层次结构来向hiera询问组定义的文件名
有没有其他方法可以做到这一点?你可以。确保在事实中定义了该组
- "nodes/%{::c
我对木偶有一个非常简单的用法;我从测试服务器创建和删除学生。我想在另一个文件中存储一些配置变量,然后在清单文件的顶部执行一个简单的操作:include'variables.pp'。有没有一个简单的方法可以做到这一点?我曾咨询:
没有一个能给出简单的解决方案。如果我只能使用上面的解决方案,我将在清单中对其进行硬编码。Puppet 3有一个import语句,应该可以满足您的需要。它已被弃用(并从Puppet 4中删除),但它将在Puppet 3中为您完成任务:
变量。pp
# top-scop
我不熟悉puppet,并计划在我们的环境中实施它
我有在不同版本的Redhat上运行的傀儡代理
现在,我计划从puppet master推送回购文件,我需要您的指导来实现同样的操作
我有以下清单
file { 'local_repo':
ensure => file,
path => '/etc/yum.repos.d/local.repo',
mode => "600",
source => 'puppet:///modules/repo/rhe
我在hieradata中有这个数据结构
server:
host: 'foo.bar.baz'
public_host:
common:
host: 'foo.bar.baz'
internal:
host: 'some.internal.name'
partition:
name: 'int'
service_port:
8443:
nonvs:
partitio
我正在创建一个虚拟机来模拟我们的生产web服务器,这样我就可以与新开发人员共享它,让他们尽快跟上进度。我已经阅读了Vagrant文档,但是我不理解使用通用基本框并使用Puppet配置所有内容与使用已安装和配置的所有内容打包自定义框相比的优势。我所能想到的就是
使用木偶与定制包装盒的优势
易于让每个人保持最新-能够将清单置于
版本控制和共享repo,以便其他开发人员可以
只需拉动新的更新并重新运行puppet,即“流浪者条款”
环境记录在清单中
能够使用生产环境中定义的puppet模块
确保相同
假设您有一个运行puppet模块必须满足的任意要求。
如何使木偶模块优雅地退出
例如,假设我的模块需要puppet 3.2或更新版本才能成功运行。如果模块尝试在3.1.x上运行,它将失败(不正常)
我可以做一个通知,或者
由于无法使用普通的puppet比较运算符将字符串与整数进行比较,因此需要使用versioncmp()
我喜欢这样,但我想知道如果安装了puppet 3.3.0会发生什么?它会降级到3.2吗?这取决于您的包管理器。例如,如果您正在使用yum,则可以使用/etc/yum/plugi
我需要确保puppet使用带有“-with xsl”标志的LibXML安装Php
对于php的所有内容,我有以下类:
class php {
package { "php5-cli": ensure => present }
package { "php5-dev": ensure => present }
package { "php5-mysql": ensure => present }
package { "php-pear": ensure =
当我在puppet GUI中添加一个类时,它显示了连接错误。我查了木偶仪表板的制作日志,我猜它是在扔东西
连接到database.yml指定的数据库
加载控制台身份验证中间件时出现问题:无法加载此类文件--控制台身份验证中间件
加载控制台时出现问题:无法加载此类文件--控制台\中间件
加载控制台身份验证时出现问题:无法加载这样的文件--console\u auth\u app\u中间件
加载事件检查器时出现问题:无法加载此类文件--event\u inspector\u中间件
加载实时管理时出现
背景:
我们正在用木偶黄瓜广泛地测试目录。我知道这个项目不再由最初的实现者维护,但是它帮助我们覆盖了一个完整的清单,集成了几个模块。对于单个模块,我们使用puppet rspec。对于我们开发的(rails)应用程序,我们使用jenkins来运行整个测试套件。我开始对puppet测试套件使用相同的方法。在我们添加存储配置并将资源导出到清单之前,一切都很好。我们在生产中使用了PuppetDB。到目前为止一切都很好
问题:
在运行我的测试时,puppet抱怨说,如果没有打开storeconfigs,
我吊销puppet中某个节点的证书:
puppet revoke node1.example.com
证书按预期被吊销
- "node1.example.com" (SHA1) 05:88:D6:73:C0:35:3C:25:89:0C:7E:CE:DC:A6:39:76:13:C4:46:C3 (certificate revoked)
运行后:
puppet cert clean node2.example.com
节点2的证书已被吊销并正确删除,但节点1的证书再次处于活动状态
我试图在facter中查找这个,但在那里找不到它。如果您想找到Hiera的版本,并使其成为可以在清单中使用的事实,您可以执行以下操作:
Facter.add(:hiera_version) do
setcode do
require 'hiera/version'
Hiera.version.to_s
end
end
如果您想找出Hiera的版本并使其成为可以在清单中使用的事实,您可以执行以下操作:
Facter.add(:hiera_version) do
set
如何将参数传递给puppet类。
例如,我有以下代码:
class testlogging {
file { '/home/amo/testloggingfile':
ensure => 'present',
source => 'puppet:///modules/testlogging/testlogging',
}
}
我想做的是将一个文件名/路径数组作为参数传递给这个类。您确实应该熟悉文档,尤其是。它讨论了如何定义类以使其接受参数,以及如何指定所需的
我使用puppet对postgresql安装应用增量更改
sudo puppet apply --modulepath=/vagrant/puppet/modules -e "include iwd-postgresql"
这将导致以下错误:
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class postgresql::globals at /vag
我知道这是与目录有关的问题,我只是不知道如何解决它
我有以下代码,我得到以下错误:
class test1 {
file { '/tmp/test.txt':
ensure => present,
content => 'name=joe',
}
}
class test2 {
$test = file('/tmp/test.txt')
notify { $test: }
}
class test3 {
class { 'test1': }
我是ruby新手,正在编写一个傀儡模块,可以通过Foreman访问
我编写它供Foreman的智能类参数使用,以便可以从Foreman web控制台配置它
我想看看如何为一台设备可能拥有的48个端口创建一个参数。我不想手动输入端口,而是想知道是否可以动态输入端口
例如,与此相反:
class ciscobaseconfig (
$interface_description_lan = 'A LAN interface'
) {
interface {
'FastEthernet 0
我正在使用一个第三部分的木偶模块,我不想改变它(Tomcat)。它创建了一个mode=644的目录,我希望将其更改为664(递归)
当我尝试此操作时,puppet不高兴,因为此资源已在另一个模块中定义
file { '/var/lib/tomcat' :
ensure => directory,
mode => 0664,
recurse => true,
}
有什么办法可以解决这个问题吗?在bash中,您可以使用
cd/var/lib
c
我有一个木偶模块
class base (
$someBoolean=false,
)
{
exec { 'Do something':
command => '/usr/bin/someStuff',
timeout => (someBoolean) ? 100000000 : 300
}
}
timeout=>()?:本质上是我想要做的,但是正确的语法是什么呢?有可能吗?木偶版的三元运算符是更通用的“”。您案例的语法如下所示:
exe
我的木偶清单是这样的
$abrt_config = [ 'abrt.conf','abrt-action-save-package-data.conf' ]
file { $abrt_config:
ensure => present,
path => "/etc/abrt/${abrt_config}",
owner => 'root',
group => 'root',
mode => '0644',
s
如何开发一个脚本,自动运行并从puppetdb获取详细信息?我是puppet的新手。基本上我想根据“web服务器”、“应用服务器”等因子值从puppetdb收集库存。我使用开源puppet。查询puppetdb就像运行curl一样简单
例如,如果您有一个名为$role的事实,并且某些节点具有“web服务器”角色,则可以获得运行该角色的所有节点的清单转储:
curl -G -H "Accept: application/json" 'http://localhost:8080/pdb/quer
如果通过添加modulepath/manifestdir设置将Puppet模块配置外部化到Puppet外部的目录:
[main]
pluginsync=true
modulepath=/home/user/project/etc/puppet/modules
manifestdir=/home/user/project/etc/puppet/manifests
代理记录以下错误:
“无法评估:无法从源检索信息”puppet://my-dns-name/plugins"
看
尝试运行Puppet Enterprise for Windows时出现以下错误
Faulting application name: ruby.exe, version: 1.8.7.370, time stamp: 0x4fede15f
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17514, time stamp: 0x4ce7afc9
Exception code: 0x80000003
Fault offset: 0x
我的傀儡主人和代理人在同一台机器上。master node.pp文件包含以下内容:
node 'pear.myserver.com' {
include ntp
}
class ntp {
package { "ntp":
ensure => installed
}
service { "ntp":
ensure => running,
}
}
ntp.pp文件包含以下内容:
node 'pear.mys
我想知道是否有人知道一种很好的方法来获取傀儡清单中的一部分代码实际执行的日期和时间。有时,我的清单需要很长时间才能运行,我需要安排一个任务在运行结束后很快发生,无论何时发生
我尝试了time()函数,使用generate()(在Puppet master上使用date函数)设置变量,甚至创建了一个自定义事实,但我尝试过的一切都是在服务器上解析清单时进行计算的,而不是在客户端上实际执行清单时进行计算的
有什么想法吗?客户端都是Windows,FWIW
提前谢谢 我不确定我是否理解您的意思,但您在目
我是Puppet Enterprise的新手,在为简单代理节点编译目录时遇到了一个问题。主机运行在rhel6盒上,代理运行在主机通过vagrant启动的centos6.5盒上。从代理VM运行以下操作时发生问题:
bash-4.1$ sudo puppet agent --waitforcert 60 --test --certname agent.example.com
Warning: Unable to fetch my node definition, but the agent run
我已经让傀儡主人和工头在节点vdc1上设置好了ip为10.200.201.191。我有一个傀儡代理在vdc2上运行,ip为10.200.201.192。vdc2可以使用vdc1及其ip ping vdc1
在vdc2的auth.conf中,我有以下内容:
# added to enable puppetrun
path /run
method save
auth any
allow vdc1
# this one is not stricly necessary, but it has the
我想使用CLI修改puppet类的参数。我尝试过这个,但它定义了一个“全局”参数,而不是类参数
hammer host update --id 10 --parameters foo=0,bar="blah"
设置类参数的命令行是什么?要设置智能类参数。不幸的是,我认为您需要等待in才能通过CLI执行此操作
我们已经设置了傀儡大师在常规8140上收听,但出于某些原因,我们必须在443和8140上运行它
所以,是的,两个端口
这有可能吗?我们应该看看哪里?假设您的puppet master在Linux上运行,您可以使用一些来将一个端口转发到另一个端口。如果您使用Apache+乘客堆栈,您可以将puppetmaster VHost修改为:
<VirtualHost *:8140 *:443>
[...]
</VirtualHost>
[...]
不要忘记在不卸载SSL模
我用木偶搭建了一个简单的环境。在我的主人身上
[root@ak-puppetm develop]# pwd
/etc/puppet/environments/develop
[root@ak-puppetm develop]# puppet config print modulepath --section master --environment develop
/etc/puppet/modules:/usr/share/puppet/modules
[root@ak-puppetm d
我正在设置Ansible以接管木偶安装
我看到木偶清单正在设置一个ypbind文件,它根据主机名推出了一个稍微不同的yp.conf文件版本
因此,我有以下木偶定义:
class ypbind {
file {'yp.conf':
ensure => file,
content => template("ypbind/yp.conf.erb"),
owner => 'root',
group => 'root',
m
我在应用自定义类型时遇到以下错误
Error: /Stage[main]/Main/login[new]: Could not evaluate: No ability to determine if login exist`s
登录是自定义类型。
放置文件的路径为
/etc/puppet/modules/demo/lib/puppet/type
有人能帮忙解决吗?puppet找不到您的文件。可能它不在模块路径中,或者权限错误文件放置在前面提到的路径中。您在谈论哪些文件权限?
我正在努力让我的头围绕木偶,更糟糕的是,我使用红帽卫星6号,这增加了额外的复杂性
我目前正在构建一个grpahite图形解决方案。有三种类型的服务器(中继-接收数据,缓存-存储数据,图形-运行Grafana并与缓存对话)
我有两个不同的同事告诉我用两种不同的方法来做。我的第一个可用方法是创建一个“角色\图形”,然后创建“子角色”,如角色\图形::中继,等等。我的第二个可用方法是每个服务器只拥有一个角色
我目前使用了第一种方法,我的init.pp如下所示:
class role_graphing
请查找我用于克隆git repo的代码:
package { 'git':
ensure => 'latest',
}
vcsrepo { "/nodejs-helloworld":
ensure => latest,
provider => git,
require => [ Package["git"] ],
source => "git@gitlab.dev.abc.net:hello-world/n
我试图将选项nosgid附加到/dev/shm文件中的/etc/fstab挂载。如何将此值附加到文件中的现有选项?我尝试运行以下代码时出错
class osharden {
mount { "/dev/shm" :
device => 'tmpfs',
options +> 'nosgid',
fstype => tmpfs,
}
}
错误:无法从远程服务器检索目录:服务器上的错误400:“+>”处的语法错误;节点上的/etc/puppet
我正在使用Hiera设置我的Puppet代码,这样,如果在Hiera中找不到值,它就会为它指定一个默认值。我没有得到预期的结果,我想知道其他人是如何做到的:
lookup( <NAME>, [<VALUE TYPE>], [<MERGE BEHAVIOR>], [<DEFAULT VALUE>] )
通常,如果值logpath是在hiera中声明的。Puppet manifest将自动获取该值。如果在Hiera中找不到该值,则Puppet代理将出
我正在尝试使用以下链接创建具有中央证书颁发机构的多个puppet主服务器:
但是这个文档是根据puppet版本3编写的,在puppet版本4中有一个puppet服务器,它运行在JVM和jetty上,为请求提供服务。在上面的文档中,apache将所有证书URI转发给中央服务器,我如何使用puppet 4创建相同的体系结构 似乎只有企业傀儡才有可能。
我认为,与开源相比,您可以继续使用Apache/Nginx和代理请求来CA,或者在所有代理puppet.conf上配置webserver.conf和
运行我得到的rake规范测试:
Warning: The function 'hiera' is deprecated in favor of using 'lookup'. See
https://docs.puppet.com/puppet/4.10/reference/deprecated_language.html
(file & line not available)
所以我决定改为使用查找。但是,我的hiera查找现在不起作用
v1 = lookup('key') # d
你好,我正在Hiera/Puppet中构建一个用于创建mysql/config文件的数据结构。我的目标是有一些默认值,可以通过合并覆盖。它一直工作到这一点。
因为我们在许多主机上有不同的mysql实例,所以我想自动为每个实例配置一些唯一的路径。我将实例名称作为名称空间中散列的散列(名称):我们的_mysql::configure_db::dbs:
在我的例子中,我想在datadir这样的路径中查找“sales_db”或“hr_db”这样的实例名,但我找不到查找高级关键字名的方法
来自“我们的_m
1 2 3 4 5 6 ...
下一页 最后一页 共 21 页