Articles of 木偶

在应用所有资源之前重新启动服务

我想通过Puppet设置和configurationApache,并通过acme_tiny.py申请一个SSL证书。 我的Puppet类和资源用于Web服务器,并且在大多数情况下,除了第一次启动之外,还可以用于极其微小的工作。 不幸的是,acme_tiny需要一个正在运行的web服务器,这个服务器在acme_tiny资源成功完成之后才会启动。 我想这个stream程应该是这样的: 安装Apache – >启动Apache – >configurationHTTP虚拟主机 – >重新加载Apache – >运行acme_tiny – >configurationHTTPS虚拟主机 – >重新加载Apache 问题是资源“apache2 reload”只能在Puppet中存在一次,如果我在两者之间订购了acme_tiny资源,我会得到一个依赖周期。 此外,资源也由puppetlabs / apache模块pipe理,每次创build一个新的虚拟主机时,只有最后一个应用。 目前,stream程是这样的: 安装Apache – >启动Apache – >configurationHTTP虚拟主机 – >运行acme_tiny(失败) – >configurationHTTPS虚拟主机(跳过由于失败的依赖项) – >configuration其他所有 – >重新加载Apache(跳过由于失败的依赖项) 如果我在第一次运行后手动启动Apache2,则一切正常:检索证书,创buildHTTPS虚拟主机并重新加载Web服务器。 不幸的是,没有人工干预就无法工作。 我最小的资源看起来像这样: exec { "${url}.crt": command => "acme_tiny.py –quiet –account-key ./${url}_account.key –csr ./${url}.csr –acme-dir /home/web/${url}/www > ${url}.crt", path […]

木偶:合并哈希列表?

如果我有一个接收哈希variables的puppet类,并且我想为哈希variables中的某些键提供默认值,我可以简单地使用哈希合并( $hash1 + $hash2 )来生成一个新的类默认值。 即,给定: defaults: field1: default1 field2: default2 field3: defaul3 myconfig: field1: val1 field3: val3 然后$defaults + $myconfig给我: finalconfig: field1: val1 field2: default2 field3: val3 但是如果我想用哈希列表完成同样的事情,我该怎么做? 也就是说,如果我的input是: myconfig: – field1: custom1 field2: custom2 – field1: custom1 field3: custom3 我有默认的看起来像: defaults: field1: default1 field2: default2 field3: default3 我想最终: finalconfig: – field1: custom1 field2: […]

通过Python web服务更新Hiera

我现在有一个木偶大师和2个代理的设置。 需求是能够基于从REST Web服务接收到的请求,在需要时在两个代理的tomcats上部署简单的web-app。 以下是步骤: 用户在Orchestration Layer上调用REST服务,并提供诸如web-apppath,nexuspath等信息。 请求来到基于Python的Orchestration层。 编排层用步骤1中传递的信息更新Hiera。 networking应用程序部署在代理上。 现在我有一些问题: 这个架构看起来是可行的还是错过了? 哪个Python web框架最适合编排层 – Django,Flask,web.py还是别的? 请指教。

傀儡证书validation即使在证书重新生成后也失败

概要 我不得不重build一个服务器,并遇到一个有趣的问题。 木偶拒绝validation证书,甚至在删除/ var / lib / puppet / ssl并清除主证书之后。 服务器 主: 操作系统:Ubuntu 14.04 木偶大师版本:3.4.3-1(使用Webrick) 代理: 操作系统:Ubuntu 12.04 木偶版本:2.7.11 (请注意,我在下面的输出中用“agent-server.com”replace了主机名) 复制步骤 删除代理服务器上的SSL目录: rm -fr / var / lib / puppet / ssl 清理木偶大师的证书: puppet cert clean agent-server.com 重新启动木偶大师: /etc/init.d/puppetmaster重启 润木偶代理: 傀儡代理人 错误消息: 代理: root@agent-server:~# puppet agent -t info: Creating a new SSL key for agent-server.com […]

依赖关系User (失败)在Puppet清单中出现

以下Puppet清单用于安装二进制文件和systemd服务描述文件,用于启动作为服务的二进制文件,以及在二进制文件或服务描述更改时重新启动服务。 class my_module::my_service { file { '/usr/local/bin/my_service': notify => Service['my_service'], owner => root, group => root, mode => '500', ensure => present, source => 'puppet:///modules/my_module/my_service', } file { '/lib/systemd/system/my_service.service': notify => Service['my_service'], owner => root, group => root, mode => '400', ensure => present, source => 'puppet:///modules/my_module/my_service.service', } service { 'my_service': require => [ File['/usr/local/bin/my_service'], […]

木偶模块安装忽略要求

我正在安装一个puppet模块: puppet module install puppetlabs/apt 我目前的木偶版本是3.7.2 。 此时下载的puppetlabs/apt模块版本为4.1.0 。 这个模块的metadata.json表示如下: "requirements": [ { "name": "puppet", "version_requirement": ">= 4.7.0 < 5.0.0" } ] 我的问题:这是一个错误还是我在这里没有看到,这使得木偶无视木偶版本的要求? 或者它根本不在意,因为puppet模块安装不能检查符合特定要求的特定版本吗?

木偶:从清单目录安装文件

我的雇主习惯从清单安装相同的目录下的文件(我知道这不是一个好的做法,但它在这里无处不在,在它们返回并改变一切之前,它们将转换为Ansible)。 要做到这一点,他们正在使用这个function: Puppet::Parser::Functions.newfunction(:copy_from_manifests, :type => :rvalue) do |args| manifest_path = lookupvar("manifest_path") content = function_file([manifest_path + "/" + args[0]]) formatted_content = function_inline_template([content]) formatted_content end 这适用于他们,但没有提供设置权限,我不认为它可能做的function运行的依赖。 所以我的问题是,我可以使用标准的文件资源完成相同的事情吗?

木偶不拉Hiera价值

学习木偶和Hiera,我遇到了障碍。 如果这是简单的事,我提前道歉。 在我的GitLab中为PuppetClass es_strat提供以下文件: hiera.yaml — version: 5 defaults: data_hash: yaml_data datadir: data hierarchy: – name: Hostname path: "hosts/%{facts.fqdn}.yaml" – name: hostgroup and environments path: "hostgroups/%{::hostgroup}/environments/%{facts.env}%{facts.env_num}.yaml" – name: hostgroup and tier path: "hostgroups/%{::hostgroup}/tiers/%{facts.tier}.yaml" – name: hostgroup path: "hostgroups/%{::hostgroup}.yaml" – name: tier path: "tiers/%{facts.tier}.yaml" – name: Common path: common.yaml common.yaml — es_strat::es_heap : 16g es_strat::es_version : […]

Ubuntu上的stream氓性能迅速降低,包括目录列表和Web应用程序

我们有两个相同的硬件笔记本电脑运行的Ubuntu 16:04,stream浪1.8.1,virtualbox 5.0.40,木偶5.3.1,图书pipe理员傀儡2.2.3。 vagrant / puppet的configuration来自共享的git仓库,所以两者都是相同的。 它们之间的唯一区别是其中一个被擦除并安装在安装程序的默认encryption的LUKS分区configuration中,而另一个最初是在具有encryption的主文件夹的窗口10的同时安装的双启动。 双启动机器可以访问源宿主机上的Web应用程序,并使用vboxsf装载共享给vm,并且完全正常运行。 LUKS机工作正常~10分钟(不确定,因为我们不计算)然后是非常慢,非常多,Nginx返回504s。 SSH到有问题的机器上,并在安装的文件夹上做任何事情都是可怕的; 大概4秒钟就可以find一个类似20个文件的文件夹。 重新启动主机和/或VM不会恢复性能。 重新安装Ubuntu主机系统并完成全部安装,从远程仓库克隆相同的configuration,并启动新的和机器运行良好,只是在很短的时间后开始窒息。 search已经复杂的事实,即vboxsf是缓慢的,大多数结果表明切换到NFS,而其中一台机器performance绝对好。 将另一个切换到NFS不会提高性能。 不知道是什么原因导致这个速度变慢了,有什么build议可以在步骤中弄清楚,我们将不胜感激。

木偶如何访问/ etc / puppetlabs / code中的文件

我有一些文件想让所有R10K分支机构都可以访问。 我把它们放在/etc/puppetlabs/code包含我的environments文件夹的文件夹中: -/etc/puppetlabs/code – environments/ – modules/ – files/ – file 我试图从这样的环境中访问它: $file = file('puppet:///files/file') 但是我收到一条消息,说找不到: Error while evaluating a Function Call, Could not find any files from puppet:///.. 更新: 还试着将文件夹移动到一个新的files模块,并将其添加到我的Puppetfile : mod "files", local: true 然后引用该文件,如: file('puppet:///modules/files/file')