标签: puppet

Puppet - 如何将模块应用于puppet客户端节点?

刚从Puppet开始,对这个世界来说真的很新.

我有

  • CentOS 6 Puppet Master
  • CentOS 6 Puppet客户端

在Master中有一个模块:

 puppet module list
/etc/puppet/modules
âââ mstanislav-yum (v1.0.0)
Run Code Online (Sandbox Code Playgroud)

所以我想将相同的模块应用到我的木偶客户端,但我不能或我不知道为什么

root@puppetclient: puppet agent --test
Info: Retrieving plugin
Info: Caching catalog for puppetclient
Info: Applying configuration version '1355737643'
Finished catalog run in 0.10 seconds
Run Code Online (Sandbox Code Playgroud)

但客户没有任何变化: - /

任何的想法?

puppet

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

我可以通过木偶清单安装木偶模块吗?

主要目标是自动添加所有puppet模块,以便可以使用一个命令启动所有dev-env和prod-env.如何通过木偶清单安装木偶模块?

puppet

15
推荐指数
2
解决办法
7714
查看次数

用python解析puppet-api yaml

我正在创建一个脚本,需要解析puppet输出的yaml输出.

当我再次提出请求示例https:// puppet:8140/production/catalog/my.testserver.no我会得到一些yaml回来看起来像:

--- &id001 !ruby/object:Puppet::Resource::Catalog
  aliases: {}
  applying: false
  classes: 
    - s_baseconfig
    ...
  edges: 
    - &id111 !ruby/object:Puppet::Relationship
      source: &id047 !ruby/object:Puppet::Resource
        catalog: *id001
        exported: 
Run Code Online (Sandbox Code Playgroud)

等等......问题是当我做一个yaml.load(yamlstream)时,我会得到一个错误:

yaml.constructor.ConstructorError: could not determine a constructor for the tag '!ruby/object:Puppet::Resource::Catalog'
 in "<string>", line 1, column 5:
   --- &id001 !ruby/object:Puppet::Reso ... 
       ^
Run Code Online (Sandbox Code Playgroud)

据我所知,这个&id001部分在yaml中得到支持.

有没有办法解决?我可以告诉yaml解析器忽略它们吗?我只需要yaml流中的几行,也许正则表达式是我的朋友在这里?以前做过任何yaml清理正则表达式的人吗?

您可以使用curl获取yaml输出,如:

curl --cert /var/lib/puppet/ssl/certs/$(hostname).pem --key /var/lib/puppet/ssl/private_keys/$(hostname).pem --cacert /var/lib/puppet/ssl/certs/ca.pem -H 'Accept: yaml' https://puppet:8140/production/catalog/$(hostname)
Run Code Online (Sandbox Code Playgroud)

我还在puppet mailinglist @ http://www.mail-archive.com/puppet-users@googlegroups.com/msg24143.html中找到了一些相关信息.但我不能让它正常工作......

python yaml puppet

14
推荐指数
1
解决办法
4450
查看次数

检查是否存在类

如果给定的类存在,是否有办法检入清单文件?

我想做这样的事情:

class foo {
    if exists( Class["foo::${lsbdistcodename}"] ) {
        include foo::${lsbdistcodename}
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以轻松添加distrubution/version特定类,然后自动包含这些类.

puppet

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

Laravel 4使用Puppet的Vagrant盒子的权限

我成功地使用http://www.puphpet.com为许多项目生成了vagrant + puppet环境.然后本周我的任务是使用Laravel 4为一个项目编写一个原型.由于我不打算成为那个全职工作项目的人,我认为最好为下一个项目创建一个VM环境.人只能克隆回购.没有太多使用Laravel 4的经验我在开发环境中运行得很好.然后我尝试运行第一次迁移,这里的问题从app/storage文件权限开始.

1. app/storage必须可由Web用户写入

好的,从同步文件夹配置中取出id:vagrant并将所有者和组设置为www-data,如下所示:

 config.vm.synced_folder "./www", "/var/www", owner: "www-data", group: "www-data"
Run Code Online (Sandbox Code Playgroud)

2.工匠只能从流浪者箱内运行才能进入DB

很好,vagrant ssh并从www文件夹运行工匠.

3. app/storage&app/database必须由vagrant用户写入才能使用迁移

Grrr,好的,将以下可怕的代码添加到vagrant文​​件中(注意,首先尝试在Puppet中执行此操作并且不执行此操作):

config.vm.provision :shell, :inline =>
  "usermod -a -G www-data vagrant"
Run Code Online (Sandbox Code Playgroud)

4. app/storage&app/database不能被组写入

哎呀!好吧,让我们试试这个Puppet指令:

file { "/var/www/app/storage":
  source => "/var/www/app/storage/",
  mode => 0775,
  ensure  => 'directory',
  owner   => 'www-data',
  group   => 'www-data',
  recurse => true
}
Run Code Online (Sandbox Code Playgroud)

不,不行.试图用Puppet exec {}指令做同样的事情没有效果.似乎vagrant synced文件夹的权限由主机设置,而不是guest.

最后,最终手动更改主机中文件夹的权限.有没有更简单的方法来做到这一点?我真的希望能够为下一个开发人员提供一个无忧无虑的环境,他们可以从回购中克隆,而不是让他们在克隆后重新设置一切.

UPDATE

我们已经发现,如果我们更改Apache运行用户,vagrant不会在重新加载时覆盖它.所以我们手动完成了它,它比更改同步文件夹的权限和所有者更好.现在我们只想弄清楚如何在Puppet中手动进行更改.

file-permissions puppet vagrant laravel laravel-4

14
推荐指数
2
解决办法
6918
查看次数

通过wifi从其他计算机访问私有VM

我有一个私人网络虚拟机,可以在我的Mac上进行开发.我希望我的Android设备能够与我的mac上的VM通信.目前我可以在我的Mac上访问我的Vagrantfile 10.10.10.10中定义的IP并且访问它很好但我无法通过我的手机在同一个wifi上访问它.

我需要做些什么才能使其在我的本地网络上可用并通过wifi看到我的手机?

这是我的Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.network :private_network, ip: "10.10.10.10"
    config.ssh.forward_agent = true

  config.vm.provider :virtualbox do |v|
    v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    v.customize ["modifyvm", :id, "--memory", 1024]
    v.customize ["modifyvm", :id, "--name", "PHPBoxWith54"]
  end

  nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
  config.vm.synced_folder "./", "/var/www", id: "vagrant-root" , :nfs => nfs_setting
  config.vm.provision :shell, :inline =>
    "if [[ ! -f /apt-get-run ]]; then sudo apt-get update && sudo touch /apt-get-run; fi"


  config.vm.provision :shell, :inline …
Run Code Online (Sandbox Code Playgroud)

puppet vagrant

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

使用Vagrant来管理开发和生产环境?

人们如何处理具有流浪者的dev/prod环境的简单自动化(使用puppet)(理想情况下来自同一个vagrantfile)?

我试图解决的用例

  • 如果没有创建,我会喜欢用vagrant旋转生产机器.
  • 如果他们在我的开发环境的puppet文件中进行了调整,我很乐意用vagrant重新加载nginx或apache confs.

问题

当您使用AWS或Digital Ocean等提供商调用vagrant时,它将成为活动提供者,您无法切换.你收到这个错误:

找到了与不同提供商的活动计算机.Vagrant目前允许每台机器一次只有一个提供商.未来版本将删除此限制.在此之前,请使用新的提供商销毁现有机器.

它似乎是破坏它的答案,但我只需要切换.我不想破坏.

我很乐意能说

vagrant up prod
Run Code Online (Sandbox Code Playgroud)

要么

vagrant reload prod
Run Code Online (Sandbox Code Playgroud)

然后一个简单的流浪汉将回落到默认机器.

这种语法类似于多台机器的工作方式,但是当我只调用vagrant up时,我不想启动开发和生产环境(这是默认行为).

作为工作流程的一部分,我应该关注打包机吗?我在2013年的puppetconf上观看了Mitchell关于Multi-Provider的演讲http://puppetlabs.com/presentations/multi-provider-vagrant-aws-vmware-and-more

我仍然没有看到我的问题的解决方案.


更新9/27/13

如果其他人正在反对这个想法,这篇文章清理了我的很多问题. http://pretengineer.com/post/packer-vagrant-infra

puppet vagrant

14
推荐指数
1
解决办法
4428
查看次数

如何使用puppet删除所有/etc/*.txt文件

/etc/file.txt如果文件存在,这个木偶清单将删除该文件:

  file { "/etc/file.txt":
    ensure  => absent,
  }
Run Code Online (Sandbox Code Playgroud)

如何告诉木偶删除所有文件/etc/*.txt

根据参考资料,似乎puppet file不允许使用通配符. http://docs.puppetlabs.com/references/latest/type.html#file

ps:我知道我可以从puppet执行一个脚本,但我更喜欢另一种更优雅的方式.

puppet

14
推荐指数
2
解决办法
2万
查看次数

如何使用puppet安装本地rpm

我正在尝试使用puppet安装特定的rpm,我的init.pp是:

class nmap {
  package {'nmap':
    provider => 'rpm',
    source => "<Local PATH to the RPM>",
  }
}
Run Code Online (Sandbox Code Playgroud)

并且rpm在 ...modules/nmap/files

如果我将rpm移动到清单,并在source =>''中提供rpm名称

class nmap {
  package {'nmap':
    provider => 'rpm',
    source => "rpm-name.rpm",
  }
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我如何指定源路径../files/和成功应用木偶

当我使用:

source => 'puppet:///files/nmap-6.45-1.x86_64.rpm',

我收到一个错误:

Debug: Executing '/bin/rpm -i puppet:///files/nmap-6.45-1.x86_64.rpm' Error: Execution of '/bin/rpm -i puppet:///files/nmap-6.45-1.x86_64.rpm' returned 1: error: open of puppet:///files/nmap-6.45-1.x86_64.rpm failed: No such file or directory

Error: /Stage[main]/Nmap/Package[nmap]/ensure: change from absent to present failed: Execution of '/bin/rpm -i puppet:///files/nmap-6.45-1.x86_64.rpm' returned …

puppet

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

如何停止并删除使用restart always选项启动的docker容器?

我使用选项--restart总是运行一些容器.

它工作得很好,很好,我现在很难阻止这些容器:)

我试过了 :

sudo docker stop container && sudo docker rm -f container
Run Code Online (Sandbox Code Playgroud)

但容器仍然重新启动.

泊坞窗文档解释了重启的政策,但我没有找到任何解决这个问题.

puppet docker

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

标签 统计

puppet ×10

vagrant ×3

docker ×1

file-permissions ×1

laravel ×1

laravel-4 ×1

python ×1

yaml ×1