每当我尝试Vagrant Up时,它会加载盒子并完成大部分工作,但是因为我正在尝试使用Puppet来配置这个CentOS 6.3最小化,我需要SSH在Vagrant Up期间工作(如果我希望它尽可能自主) .
我从Vagrant的INFO日志中获得以下信息:
DEBUG virtualbox_4_2: - [1, "ssh", 2222, 22]
INFO ssh: Connecting to SSH: 127.0.0.1:2222
INFO ssh: SSH not up: #<Timeout::Error: execution expired>
INFO subprocess: Starting process: ["C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe", "showvminfo", "c2e7375d-159f-4014-9bda-ff9914423f4c", "--machinereadable"]
DEBUG subprocess: Selecting on IO
DEBUG subprocess: stdout: name="Vagrant-Apache-Nick_1360372174"
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用puppet(和vagrant)为我们的团队设置开发环境,该团队由8个以上的开发人员组成,每个开发人员都有他们特定的bash配置等等.我已经安装了所有的软件.用于快速部署新开发虚拟机的系统,但我不确定以自动方式为每个特定用户设置开发环境的最佳方式(我们最终会有几个开发环境,编写一次会很方便)并完成).
例如,我想设置一个用户joe,从github克隆Joe的配置repo,然后在该github存储库中运行一个脚本来为Joe设置环境.关于Joe以及Jimmy,James,Julie,Jane,Jim,Jake和Jimbo如何做到这一点的任何建议?
如果有任何帮助,开发机器几乎肯定是ubuntu系统.
我想在已定义类型的实例中引用变量.例如,我可以做什么来引用$x和$yfoo a吧b?
define foo($x, $y) {
}
define bar($foo) {
notify { "${::$foo::x}": } # <- how to make this reference work?
}
foo { 'a':
x => 'oh bar may you reference me',
y => 'please'
}
bar { 'b':
foo => Foo['a'],
require => Foo['a']
}
Run Code Online (Sandbox Code Playgroud)
我希望这个工作的原因是foo实例可能包含许多值,我不想重复这些值可能需要它们的每个资源.我不是一次又一次地传递这些值,而是重复自己,而是将参考传递给他们的容器.
我一直在寻找并尝试了很多东西,但似乎无法在任何地方找到这个问题的答案.我知道可以修改属性,引用资源和读取类属性,但是是否可以读取资源/定义类型的属性?如果不是那么最好的工作呢?
我需要一种方法来检测puppet已经完成初始运行(成功),因此我可以在启动AWS EC2和/或OpenStack上的机器时启动其他操作之前等待.我怎么检查这个?
到目前为止,一些想法是:
我刚刚将木偶环境升级3.4.2为3.4.3.通过puppetlabs的apt repos.我正在升级代理商和主人.执行代理程序运行会导致以下错误:
Info: Retrieving pluginfacts
Debug: Failed to load library 'msgpack' for feature 'msgpack'
Debug: file_metadata supports formats: pson yaml b64_zlib_yaml raw
Debug: Failed to load library 'msgpack' for feature 'msgpack'
Debug: file_metadata supports formats: pson yaml b64_zlib_yaml raw
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://<puppetserver>/pluginfacts
Debug: Finishing transaction [...]
Run Code Online (Sandbox Code Playgroud)
尽管如此,我从master中检索了一个目录,因此代理程序运行仍然有效并且似乎可以执行它应该执行的操作.(或者说,如果出现与错误消息相关的错误,我实际上无法确定.)
但是,我想摆脱错误消息.
我puppet --version在 …
我有一个问题,我希望有人可能有答案.基本上我正在做的是尝试确保我总是使用一个固定的,稍微旧版本的phpunit,我把它放在我模块的文件资源中.
清单:
file
{
"/usr/bin/phpunit":
ensure => file,
owner => 'root',
group => 'root',
mode => 0755,
source => "puppet:///modules/php/phpunit"
}
Run Code Online (Sandbox Code Playgroud)
准备:我下载当前('错误')的phpunit版本并将其放在/ usr/bin中.
所以第一次运行的木偶成功了:
Notice: Compiled catalog for <hostname> in environment production in 3.06 seconds
Notice: /Stage[main]/Php/File[/usr/bin/phpunit]/content: content changed '{md5}9f61f732829f4f9e3d31e56613f1a93a' to '{md}38789acbf53196e20e9b89e065cbed94'
Notice: /Stage[main]/Httpd/Service[httpd]: Triggered 'refresh' from 1 events
Notice: Finished catalog run in 15.86 seconds
Run Code Online (Sandbox Code Playgroud)
然后我下载当前(仍然'错误')的phpunit版本并再次将它放在/ usr/bin中.
这次木偶运行失败了.
Notice: Compiled catalog for <hostname> in environment production in 2.96 seconds
Error: Could not back up /usr/bin/phpunit: Got passed new contents …Run Code Online (Sandbox Code Playgroud) 所以我正在尝试做一些看起来与" 通过augeas向XML根节点添加属性的问题"相同的问题,但是提供的答案对我不起作用.没有insert命令,我收到此错误消息(在puppet agent -t --debug --verbose模式下):
Debug: Augeas[context.xml](provider=augeas): /augeas/files/usr/share/tomcat/conf/context.xml/error/message = Failed to match
{ /#attribute/ }?({ /#text/ = /(\\]\\]\\]*[^]\001-\004<>][^]\001-\004<]*\\]|(\\][^]\001-\004<]|[^]\001-\004<][^]\001-\004<])[^]\001-\004<]*\\]|[^]\001-\004<]\\])(\\]\\]*[^]\001-\004<>][^]\001-\004<]*\\]|[^]\001-\004<][^]\001-\004<]*\\])*(\\]\\]*([^]\001-\004<>][^]\001-\004<]*|)|[^]\001-\004<][^]\001-\004<]*|)|\\]\\]\\]*([^]\001-\004<>][^]\001-\004<]*|)|(\\][^]\001-\004<]|[^]\001-\004<][^]\001-\004<])[^]\001-\004<]*|\\]|[^]\001-\004<]/ } | { /#comment/ = /([^\001-\004-]|-[^\001-\004-])*/ } | <<rec>> | { /[:A-Z_a-z][.0-:A-Z_a-z-]*/ = /#empty/ } | { /#pi/ })*
with tree
{ "#text" = "
" } { "#comment" = " Default set of monitored resources " } { "#text" = "
" } { "WatchedResource" } { "#text" = "
" } { "#comment" = " Uncomment …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种只在使用时notify { ... }在puppet客户端运行期间显示消息的方法
puppet apply <--verbose | --debug> puppet agent <--verbose | --debug>我想在客户端交互/手动运行puppet时显示调试消息.然而,我无法找到一种方法来评估我的木偶清单中的这些开关.我怎么能为傀儡4.x实现这个目标?
我试图在define中传递多个参数.
以下是我的代码.我想在define中传递两个数组,但是我只能传递一个如下所示.
class test {
$path = [$path1,$path2]
$filename = [$name1,$name2]
define testscript { $filename: } // Can able to pass one value.
}
define testscript () {
file {"/etc/init.d/${title}": //Can able to receive the file name.
ensure => file,
content => template('test/test.conf.erb'),
}
Run Code Online (Sandbox Code Playgroud)
从我上面的代码,我可以检索filename定义资源内部.我还需要path在模板中设置值.我无法在模板中发送/检索第二个参数.
有没有办法改进我的代码以传递定义资源中的两个值($path和$filename)?
任何帮助深表感谢.
首先,我应该披露我只管理供应商关系,缺乏深厚的技术知识.
我刚刚与我们的一个分包商召开了一次电话会议,他们要求我签署4个不同服务器的PO(一个用于Jenns,另一个用于Github,第三个用于Puppet,第四个用作测试盒).
当我问他问题时,技术架构师似乎非常防守.我知道不是我的工作来质疑他的能力,但我确实有预算要管理,我担心他们过度设计了这个(或者至少他们提到的3种产品似乎重叠很多).有人会非常友好地向我清楚地解释每个人扮演的角色.
我还要感谢他们是否确实需要4台服务器以及所提到的某些技术是否可以在同一台服务器上共存.(即Jenkins,Github和Puppet都可以在一个Ubuntu服务器上运行吗?).