Articles of 木偶

如何在清单文件中使用Puppet python模块

我正在写一个puppet清单文件来安装python和pymongo。 这个python模块安装在服务器上,链接如下https://forge.puppetlabs.com/stankevich/python 这是我创build的清单文件。 但是它说的是未知的阶级和资源。 请提示语法错误。 class { 'python' : version => 'system', pip => 'present' } python::pip { 'pymongo' : pkgname => 'pymongo', ensure => '2.7', } 它说Unknown class: 'python和Unknown resource type: 'python::pip' 谢谢,

工头的hiera_hash / hiera_array?

工头有办法让父主机组追加puppetvariables吗? 所需function的例子: AllHosts: ssh_allow[10.1.1.0/32] AllHosts/publicHosts: ssh_allow[71.0.0.0/8] A host in the publicHost groups would have: ssh_allow[10.1.1.0/32, 71.0.0.0/8]

木偶:如何添加一行到现有的文件

编辑: 下面的例子是正确的,完美的作品。 但由于某种原因,第一次没有为我工作,然后我做了vagrant provision ,然后一切都很完美。 我试图添加一行到现有的文件/etc/fuse.conf。 我试过这个 在modules目录下添加一个文件夹两个文件夹 sudo mkdir /etc/puppet/modules/test sudo mkdir /etc/puppet/modules/test/manifests 然后创build一个test.pp文件并添加以下几行 sudo vim /etc/puppet/modules/test/manifests/test.pp file { '/etc/fuse.conf': ensure => present, }-> file_line { 'Append a line to /etc/fuse.conf': path => '/etc/fuse.conf', line => 'Want to add this line as a test', } 之后,我跑了这个命令 puppet apply /etc/puppet/modules/test/manifests/test.pp 然后我打开这个文件/etc/fuse.conf文件没有改变。 该行没有被添加到文件中。 我不明白我在这里错过了什么。 我怎样才能做到这一点? 我正在学习木偶。 […]

如何通过Puppetrecursion地维护空目录

我们有一个包含s类的puppet模块,它在Linux文件系统上创build一堆目录: class dim_dcm::dirstruct::workflow () { file { "/opt/dirstruct/etc": ensure => 'directory', owner => 'use', group => 'group', mode => '0640', recurse => true, purge => true, source => "puppet:///modules/dirstruct/etc", } } 我们在模块的files/目录下有一个目录结构。 它只在我创build一个包含$module/file/dirstruct内容的目录$module/file/dirstruct 。 当目录为空时,Puppet不会在目标服务器上创build目录。 当我在空目录中碰到一个虚拟文件时,Puppet很乐意这样做。 我如何创build与recurse => true空目录? 是的,我知道我可以用这个名字创build一个目录资源,但是目录结构是相当复杂的。 此外,是不是创build目录(不论是否为空)的recurse => true原因recurse => true ?

如何pipe理与领class/傀儡集群

我需要部署三个不同的Zookeeper集群。 集群中的每个服务器都应该被configuration为知道它的ID是什么(并创build一个myid文件)。 另外,每个Zookeeper服务器都需要知道群集中所有服务器的列表及其相应的ID。 有没有办法只configuration这个在每个集群点? 定义一个服务器应该运行Zookeeper,在集群“QA”,并有ID 4.这个信息将被用来 确定服务器是否需要运行zookeeper类 将正确的编号写入myid文件 添加正确的ID到所有其他动物园pipe理员节点的服务器,并更新它们/重新启动它们 工头对我来说很新,也没有看到如何做到这一点。 工头是这个错误的工具,我应该使用简单的木偶和代码类似于自动群集成员与木偶 ?

如何使用Puppet为非默认的Ruby安装gems?

RedHat / CentOS-6中包含的ruby版本是1.8.7,对许多应用程序来说太旧了。 虽然简单地使用定制的RPM进行更新是可能的,但是我的同事们回避这个想法,并希望使用SCL-repo提供的rh-ruby22软件包。 安装ruby-2.2,这很好,但在/opt/rh/rh-ruby22 。 我现在需要安装几个gem,并且很想使用Puppet: package {'example': ensure => '0.25', provider => 'gem' } 不幸的是,gem-provider会调用/usr/bin/gem而不是/opt/rh/rh-ruby22/root/usr/bin/gem 。 有没有其他的方法? 谢谢!

使用puppet在同一文件夹中复制多个文件夹文件

我试图想出一个傀儡模块sensu_client在一个实例中安装和configurationsensu客户端。 模块目录结构如下所示: . |– examples |– files | |– client-ssl | |– custom_plugins | | |– common | | `– <env> | `– default_plugins |– manifests |– spec | `– classes `– templates `– custom_plugins |– common `– <env> 文件夹和他们的描述是这样的: files/default_plugins/ :来自互联网的默认插件 files/custom_plugins/common :我们编写的插件,与环境files/custom_plugins/common files/custom_plugins/<env> :我们编写的特定于环境的插件 和模板目录相同的想法。 如果可能的话,我想将所有这些插件复制到客户端的/etc/sensu/plugins文件夹中,因为在我们的其他环境中(我们使用ansiblepipe理),我们已经将sensu插件位置标准化为/etc/sensu/plugins夹。 当我运行我写的清单时,出现以下错误消息: Error: Could not retrieve catalog from […]

木偶模块puppetlabs-apache默认运行具有依赖性循环

我试图在我的部署中包含puppetlabs-apache模块(v1.10.0),我只是通过运行默认configuration puppet apply -e 'include apache' 要么 puppet apply -e 'class { 'apache': default_vhost => false, default_ssl_vhost => false, }' 我有依赖周期如下: Error: Failed to apply catalog: Found 2 dependency cycles: (File[15-default-ssl.conf symlink] => File[15-default-ssl.conf symlink]) (File[15-default.conf symlink] => File[15-default.conf symlink]) Try the '–graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz 任何帮助将不胜感激 […]

firewalld傀儡模块无法添加多个来源错误:第二个来源的无效区域

我们有一个木偶模块(v3.6.2,因为我们正在使用它的卫星6) 除了将多个源添加到区域时,该模块按预期工作。 它将添加该区域,然后添加一个源,然后错误地尝试将第二个源添加到区域与消息: INVALID_ZONE: backup 第二次运行模块成功添加源2和3。 该区域正在成功创build,并且正在触发firewalld重新加载,但几乎没有完成重新加载,因为它不会将新添加的“备份”区域视为对第二个和第三个源有效。 模块代码: class firewalld( $enabled = true, $package_name = 'firewalld', $service_name = 'firewalld', $config_dir = '/etc/firewalld', $zone_create = [], $zone_remove = [], $zone_set_default = '', $zone_add_source = hiera_hash('firewalld::zone_add_source', { }), $zone_add_service = hiera_hash('firewalld::zone_add_service', { })) { if $enabled { $service_ensure = 'running' $service_enable = true $package_ensure = 'present' $config_ensure […]

一个Puppet自定义types的munge方法如何访问整个数组参数?

这个属性是一个数组,其顺序无关紧要。 这真的是一套,但木偶没有集AFAICT。 所以我试图用munge对值进行sorting: newproperty(:things, :array_matching => :all) do munge do |value| value.sort end end 这失败了,因为munge应用于数组中的每个值而不是整个事物。 有什么办法可以做这个工作吗?