有没有办法断言木偶中的变量(或更具体地说,事实)具有特定值,并且如果不存在则中止安装?
对于背景,情况如下:
在大多数情况下,我可以引用主机名,但有时我需要使用IP地址.例如,我们的日志收集器主机需要在防火墙中为多个特定计算机(而不是整个子网)打开一个端口.我需要使用IP地址在防火墙中打开一个洞.由于机器的IP地址没有变化,我计划将IP地址编码作为配置的一部分,但我想检查各个主机上实际IP地址是否与其配置中的IP地址匹配,如果失败,它没有.那可能吗?
我正在使用Puppet进行机器配置.我有一个在Tomcat 6 app服务器上运行的服务,另一个清单依赖于该服务(在安装过程中发送一些REST请求).问题是,在使用以下命令启动tomcat后,该服务无法使用:
service {"tomcat6":
ensure => running, enable => true, hasstatus => true, hasrestart => true;
}
Run Code Online (Sandbox Code Playgroud)
所以我需要一些需要条件的另一个清单,以确保服务真正运行(例如检查一些URL是否可用).如果它还没有准备好等待一段时间再次尝试再次尝试重试的数量限制.
是否有一些惯用的Puppet解决方案或其他解决方案可以实现这一目标?
注意 - 睡眠不是解决方案.
我正在从一个模块安装一个软件包(Nginx在这种特定情况下),并希望包含一个来自模块外部的配置文件,即从顶级files目录并行到顶级manifests目录.我没有看到任何方式来源文件虽然没有包含在模块或我当前的Vagrant环境中引用绝对本地路径.
Puppet是否允许如文档中所述从模块外部获取文件?
如何配置AWS自动扩展以快速扩展?我已经设置了一个带有ELB的AWS自动缩放组.一切都运行良好,除了在添加新实例并在线之前需要几分钟.我在一篇关于Puppet和autoscaling的帖子中遇到了以下内容:
如果用于一组节点的AMI已经是最新的,则缩放时间可以从几分钟降低到几秒.
http://puppetlabs.com/blog/rapid-scaling-with-auto-generated-amis-using-puppet/
这是真的?可以缩短时间缩短到几秒钟吗?使用木偶会增加任何性能提升吗?
我还读到较小的实例比较大的实例开始更快:
小型实例1.7 GB内存,1个EC2计算单元(1个虚拟核心,1个EC2计算单元),160 GB实例存储,32位平台,基本安装CentOS 5.3 AMI
从实例发布到可用性的时间:5到6分钟us-east-1c
大型实例7.5 GB内存,4个EC2计算单元(2个虚拟内核,每个2个EC2计算单元),850 GB实例存储,64位平台,基本安装CentOS 5.3 AMI
从实例发布到可用性的时间:
11到18分钟us-east-1c两者都是使用Amazons工具通过命令行启动的.
http://www.philchen.com/2009/04/21/how-long-does-it-take-to-launch-an-amazon-ec2-instance
我注意到这篇文章很旧,我的c1.xlarge实例肯定没有花费18分钟来启动.尽管如此,配置具有50个微实例的自动缩放组(具有100%容量增加的扩展策略)是否会比具有20个大实例的自动缩放组更有效?或者可能创建两个自动缩放组,一个用于快速启动时间的微型组,另一个用于在几分钟后添加CPU grunt的大型实例?在其他条件相同的情况下,t1.micro上线的速度比c1.xlarge快多少?
我正在进入Puppet,并喜欢它,但我用一个小东西撞在墙上,我肯定必须比我做的更容易.
我希望在.bashrc用户中取消注释这一行:
#force_color_prompt=yes
Run Code Online (Sandbox Code Playgroud)
我一直在使用augeas做很多事情,但似乎这对它不起作用.
我注意到有一个file_line资源可用于确保文件中存在一行,但我需要将该行保留在同一位置.
我不希望.bashrc完全替换我自己的副本,尽管看到这种模式在Puppet中很流行,但它对我来说没有意义,因为我不想在升级之间维护我自己的版本.
在sed我用这个:
sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在Vagrant有一个CentOS基础盒,我正站起来用木偶清单.到目前为止,这是清单中的内容:
class base {
exec { "sudocmd":
path => ["/usr/bin/","/usr/sbin/","/bin"],
command => "sudo yum update -y",
}
package { "man":
ensure => present,
}
package { "bind":
ensure => present,
}
package { "bind-utils":
ensure => present,
}
}
include base
Run Code Online (Sandbox Code Playgroud)
但是,当我说vagrant up,我得到一个错误,sudocmd yum update退出1.我已经在网上看了,但我还没有找到解决方案.有帮助吗?
========编辑=========我读了答案,我同意 - 谢谢你们.我只是在开发盒上使用它来乱搞,我需要它在我开始做它之前是最新的.
我的目标是拥有一个或两个节点,以及一个puppetmaster.我使用bash脚本为每个节点配置puppetlabs存储库并安装最新版本的puppet和/或puppetmaster.但每次我尝试puppet agent --test在节点上运行时,它都会返回此错误:
root@vm:~# puppet agent --test
Error: Could not request certificate: Connection refused - connect(2)
Exiting; failed to retrieve certificate and waitforcert is disabled
Run Code Online (Sandbox Code Playgroud)
puppet cert list显示没有证书等待在puppetmaster上批准.iptables --list 没有显示防火墙规则.难道Vagrant/Virtualbox无法弄清楚如何处理8140端口?错误说"连接被拒绝",所以我认为这是一个防火墙问题.但是没有防火墙......
那么,我搞砸了哪里?
这是我的Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.define :puppetmaster do |puppetmaster|
puppetmaster.vm.box = "ubuntu-server-12042-x64-vbox4210-nocm"
puppetmaster.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box"
puppetmaster.vm.network :private_network, ip: "192.168.77.1"
#puppetmaster.vm.network :forwarded_port, guest: 80, host: 20001
#puppetmaster.vm.network :forwarded_port, guest: 443, host: 24431
#puppetmaster.vm.network :forwarded_port, guest: 22, host: 20022
puppetmaster.vm.hostname …Run Code Online (Sandbox Code Playgroud) 我正在使用puppet进行配置来设置Vagrant环境.
我遇到了一个问题,我希望xdebug在运行时"正常工作" vagrant up但是我需要在php.ini文件中指定主机ip地址xdebug.remote_host,显然这在使用配置的每台机器上会有所不同所以我想在发布时自动更新该值vagrant up.
VagrantFile:
config.vm.network :forwarded_port, guest: 9000, host: 9000
Run Code Online (Sandbox Code Playgroud)
.ini设置:
'xdebug.default_enable=1',
'xdebug.remote_enable=1',
'xdebug.remote_handler=dbgp',
'xdebug.remote_host=localhost:9000',
'xdebug.remote_port=9000',
'xdebug.remote_autostart=0',
'xdebug.max_nesting_level=250'
Run Code Online (Sandbox Code Playgroud)
我也试过了 xdebug.remote_host=localhost
来自vagrant机器的ifconfig结果:
vagrant@precise64 ~ : ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:cf:f9:89
inet addr:192.168.61.142 Bcast:192.168.61.255 Mask:255.255.255.0
Run Code Online (Sandbox Code Playgroud)
phpinfo()函数
REMOTE_ADDR 192.168.61.2
REMOTE_PORT 51886
只是为了确认,如果我remote_host在我的osx主机上给出了我的实际IP地址,它可以正常工作.
这是我的小傀儡片段:当我执行此片段时,我收到以下错误:
错误:无法解析环境生成:无法匹配/home/test.pp:8
$vendor = generate("/usr/bin/lsscsi")
if defined($vendor) {
if $vendor =~ /LSI/{
$d_multipath = [{
vendor => 'LSI',
product => 'INF-01-00',
path_checker => 'rdac',
path_selector => 'round-robin 0',
}]
}
}
else {
notify {'faield-lsscsi':
message => "ERROR: failed to execute lsscsi to get the scsi vendor type",
loglevel => critical,
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙指出吗?
是否可以将linux命令结果存储在变量中?
我试图将加密值存储在变量中.加密我正在使用base64命令.要将它存储在变量中,我使用的是generate方法.但我无法存储价值.
$secretvalue = generate("/bin/bash","-c","/usr/bin/echo ${password} | /usr/bin/base64")
Run Code Online (Sandbox Code Playgroud) puppet ×10
vagrant ×4
ruby ×2
amazon-ec2 ×1
assertion ×1
autoscaling ×1
bash ×1
ec2-ami ×1
linux ×1
manifest ×1
php ×1
tomcat ×1
virtualbox ×1
xdebug ×1