我在标准的客户端 – 服务器模式下使用Puppet 3.7,使用环境,并使用Hiera来获取数据。 我使用Vagrant来直接从我的Puppet仓库testingPuppet清单。 我最近开始使用Hiera,并更改了我的Vagrantfile(和Vagrant目录)以使用它。 现在似乎和Hiera一起工作了,但另外一个问题出现了:Vagrant认为我的虚拟机在实验环境中生产。 (这之前工作正常) Puppet存储库看起来像 ~/code/puppet └── environments ├── experimental │ ├── manifests │ │ └── site.pp │ ├── modules │ └── Puppetfile ├── production │ ├── manifests │ │ └── site.pp │ ├── modules │ └── Puppetfile └── testing ├── manifests │ └── site.pp ├── modules └── Puppetfile 我的Vagrant设置存储在另一个目录中。 我在这个目录下创build了一个名为puppet的〜/ […]
我正在尝试在Puppet中创build一个letsencrypt模块。 基本上,我想实现的是以下几点: 添加一个新节点并导入我的模块: class { "letsencrypt": url => "example.com" } 然后,木偶大师将检查他的文件夹,如果已经有一个私人密钥和给定的URL的CSR,然后: 将私钥和CSR复制到节点,或者 运行openssl openssl genrsa 4096 > example.com.key (还有一个用于letsencrypt帐户和证书签名请求的密钥),将其保存到puppet文件夹并再次运行第2步。 在节点上设置一个cron作业,每三个月运行一次acme-tiny 。 在节点上运行一次acme-tiny并获取第一个证书并重新加载/启动Web服务器。 基本上我的问题是如何在木偶大师上运行命令。 我想在puppet master上运行密钥生成,并在那里有私钥,只有证书请求在节点上运行。 这是甚至可能与木偶? 或者我应该完整地将完整的过程传递给节点,而不是跟踪Puppet中的任何内容(只需设置cronjob等)? 谢谢!
我正在学习如何使用r10k来部署我的puppet代码,并且在试图从我的控制库中进行部署时遇到了麻烦。 我得到的错误消息是: Failed to authenticate SSH session: Unable to extract public key from private key file: Method unimplemented in libgcrypt backend 我已经validation,直接连接到服务器时,我的SSH密钥工作。 r10k的文档有点令人困惑,但从我可以告诉唯一的方法来指定一个SSH密钥是通过使用坚固的gem,并从我所了解的libssh2(这坚固依赖通过libgit2)在Ubuntu链接到libgcrypt而不是openssl。 'shellgit'提供程序似乎没有任何指定ssh密钥的方法。 什么是最简单的方法解决这个问题? 编辑:我没有真正解决了试图configuration“坚固”的提供者的问题,但我搞清楚为什么'shellgit'不工作 – 我使用sudo运行r10k和git服务器不在root的known_hosts文件,导致密钥validation失败。 一旦我将主机添加到文件,一切运行顺利使用shellgit。
我试图让puppet构build一个如下所示的configuration文件: [All] Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc…) 基本上,这个文件需要包含apt-dater类的每个节点的条目。 我一直在试验导出的资源,但我找不到把它放在一起的干净方式。 我应该如何去创build这个文件?
如何让puppet在清单目录中加载其他策略文件? 它加载site.pp罚款,但我想加载一些其他我在目录中,并没有加载它们的默认安装。 我意识到模块可能是一个更好的方法,我可能最终这样做,但现在我只是想在逻辑上将configuration分离成单独的文件。 这些信息在文档中很难find。
我正在尝试使用PuppetconfigurationApache虚拟主机,并尝试不同的方式,取得了一些成功。 我已经定义了一个节点如下: node 'test1.cob' inherits serveurClient { $smcvhost = 'all' } serveurClient类包含apache类。 这可以正常工作Apache安装和所有的configuration得到正确应用,除了虚拟主机。 有关虚拟主机的configuration如下: class apache::config { File{ require => Class["apache::install"], notify => Class["apache::service"], ensure => present, owner => "www-data", group => "www-data", mode => 755 } … if ( $smcvhost == 'belleville' ) or ( $smcvhost == 'all' ) { apache::smcvhost{'belleville': client => 'belleville', […]
我正在尝试为我的模块写一些rspectesting。 他们中的大多数现在使用hiera。 我有一个.fixures.yml: fixtures: repositories: stdlib: https://github.com/puppetlabs/puppetlabs-stdlib.git hiera-puppet: https://github.com/puppetlabs/hiera-puppet.git symlinks: mongodb: "#{source_dir}" 和一个spec / classes / mongodb_spec.rb: require 'spec_helper' describe 'mongodb', :type => 'class' do context "On an Ubuntu install, admin and single user" do let :facts do { :osfamily => 'Debian', :operatingsystem => 'Ubuntu', :operatingsystemrelease => '12.04' } end it { should contain_user('XXXX').with( { […]
我想用木偶来创build邮箱。 基本上,我只需要在新用户到达时创build一个目录。 但是,用户列表非常庞大,为每个用户创build一个文件节点是毫无疑问的。 我已经find了一个方法来传递一个数组与这个节: file { [ "user1", "user2", … ]: ensure => directory, owner => $user, group => 'mail', mode => 0660, } 有两个问题:首先,没有办法从外部资源(例如可能是CSV文件)中检索用户列表。 其次,我看不出如何实现所有者价值。 我曾经想过定义函数,但同样的问题依然存在。 有人find解决scheme来解决这个问题吗?
我只是混淆了mysql,遇到了一个奇怪的问题,dev上的mysql组的gid与生产不同。 显然在生产中,我有一个用户,不存在于开发环境,目前声称我希望用于MySQL组的gid。 我的问题是,不pipe环境如何,确保用户/组排队的最佳方法是什么? 我已经阅读了一些文章,这是通常的做法,开始uid / gid @ 1000.如果我强制这种做法,并改变现有的uid / gid,这会破坏我的服务器破坏? 我也在考虑改变那些声称我希望使用gid的用户的gid,但是想看看是否有解决这种情况的最佳做法。 – 更新 – 呃,可以告诉它是星期一。 这不是冲突的gid,它是uid: class user::mysql inherits user { include group::logger include group::mysql user { 'mysql': gid => 'mysql', groups => [ 'logger' ], managehome => false, membership => 'inclusive', require => Class['group::mysql'], shell => '/sbin/nologin', uid => '498' } Class['group::logger']->Class['user::mysql'] } 上述问题仍然相关: […]
我正在为ocfs2编写一个puppet模块,并使用导出的资源填充每个集群上configuration文件中所有集群节点的定义。 这一切运作良好。 簇类只是ocfs::cluster ,成员类是ocfs::clustermember 但是,在configuration文件中的集群定义中,我需要列出集群中的节点数。 但是,我不能找出一种方法将导出的资源数组的大小添加到模板中。 本质上,我希望能够在模板中做这样的事情: cluster: name = <%= clustername %> nodecount = <%= clustername %> node_count = <%= @ocfs::cluster.length %> 显然这不起作用,因为ocfs::cluster不是一个数组。 这可能吗?