我正在尝试使用Ubuntu 11.10 EC2实例(ami-a562a9cc)配置puppetmaster和puppet客户端.我已启用自动证书签名.但每当我从puppet客户端发出命令:
#puppet agent --server puppet --waitforcert 60 --test
证书已签名但它会引发错误并且不会运行目录文件.
错误信息 :
错误:无法从远程服务器检索目录:hostname与服务器证书警告不匹配:未在失败的目录上使用缓存错误:无法检索目录; 跳过运行错误:无法发送报告:主机名与服务器证书不匹配
在PuppetMaster上应用Manifest文件可以正常工作但不适用于puppetclients.
我已经在亚马逊Linux和Centos上设置了puppet环境,并且它在它们上运行得很好.但我正面临Ubuntu 11.10的这些问题
谢谢Sanket Dangi
我正在使用puppet从facter中读取一个事实,并基于此我将不同的配置应用于我的模块.
傀儡代理人没有看到这个事实.以puppet agent --test交互方式运行按预期工作.即使从脚本非交互式运行它似乎工作正常.只有代理商本身搞砸了.
我正在EC2上部署基于Ubuntu的应用程序堆栈.使用userdata(#cloud-config),我在/ etc/environment中设置了一个环境变量:
export FACTER_tl_role=development
Run Code Online (Sandbox Code Playgroud)
然后立即在#cloud-config,i source/etc/environment中.只有那时我才得到安装木偶(我放弃了使用包:木偶来消除#cloud-config步骤序列中的歧义)
一旦实例启动,我确认事实是可用的:运行facter tl_role返回"开发".然后检查/ var/log/syslog,显然木偶代理没有看到这个事实 - 我知道这是因为它无法编译目录,并且没有什么(空白)我应该看到它的价值变量集取决于这个事实.
但是,以puppet agent --test交互方式运行编译并运行目录就好了.甚至从#cloud-config脚本(安装puppet后立即运行)也可以正常运行.
如何向傀儡代理人提供此事实?重新启动代理服务没有任何区别,它仍然没有意识到自定义事实.重新启动实例也没有任何区别.
这是一些代码:
EC2用户数据:
#cloud-config
puppet:
conf:
agent:
server: "puppet.foo.bar"
certname: "%i.%f"
report: "true"
runcmd:
- sleep 20
- echo 'export FACTER_tl_role=development' >> /etc/environment
- . /etc/environment
- apt-get install puppet
- puppet agent --test
Run Code Online (Sandbox Code Playgroud)
主要木偶清单:
# /etc/puppet/manifests/site.pp
node default {
case $tl_role {
'development': { $sitedomain = "dev.foo.bar"}
'production': { $sitedomain = "new.foo.bar"}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用 elasticsearch-logstash 模块
https://forge.puppetlabs.com/elasticsearch/logstash
这就是我的 hiera 的样子...
---
classes:
- 'profile::logstash'
profile::logstash::conf:
package_url: "https://download.elasticsearch.org/logstash/logstash/packages/centos/logstash-contrib-1.4.2-1_efd53ef.noarch.rpm"
Run Code Online (Sandbox Code Playgroud)
这是配置文件中的 logstash.pp
class profile::logstash {
$conf = hiera('profile::logstash::conf',{})
validate_hash($conf)
create_resources('logstash',$conf)
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误...
Error: can't convert String into Hash at /tmp/vagrant-puppet-2/modules-0/profile/manifests/logstash.pp:10 on node pw-idx-11.local
Wrapped exception:
can't convert String into Hash
Error: can't convert String into Hash at /tmp/vagrant-puppet-2/modules-0/profile/manifests/logstash.pp:10 on node pw-idx-11.local
Run Code Online (Sandbox Code Playgroud)
更新:
使用这个固定....
class profile::elasticsearch {
class { '::elasticsearch':
version => '1.1.1-1'
}
$elasticsearch_configs = hiera_hash('profile::elasticsearch::instance',{})
validate_hash($elasticsearch_configs)
create_resources(elasticsearch::instance,$elasticsearch_configs)
package { 'java-1.7.0-openjdk.x86_64':
ensure => 'installed'
}
}
Run Code Online (Sandbox Code Playgroud) 有人可以告诉我为什么这不起作用?这段代码在Ubuntu服务器上工作正常,但在CentOS上崩溃了.我正在运行Puppet版本3.7.2.
node default {
package { 'httpd':
ensure => 'absent'
}
package { 'nginx':
ensure => 'installed',
require => Package['httpd'],
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error: Execution of '/bin/yum -d 0 -e 0 -y list nginx' returned 1: Error: No matching Packages to list
Error: /Stage[main]/Main/Node[default]/Package[nginx]/ensure: change from absent to present failed: Execution of '/bin/yum -d 0 -e 0 -y list nginx' returned 1: Error: No matching Packages to list
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用puppet在我的系统上写一个文件,这是声明:
file { '/etc/salt/grains':
ensure => present,
content => template('pp_salt_manager/grains.erb'),
}
Run Code Online (Sandbox Code Playgroud)
这是我真正的短.erb文件:
<% @machine_info.each do |key, value| %>
<%= "#{key}: #{value}" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
作为参考,这是machine_info:
$machine_info = {'deployment' => 'c7', 'local' => 'US', 'env' => 'stable'}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这是输出文件:
_ # Empty line
deployment: c7
_ # Another empty line
local: US
_ # Once again, an empty line
env: stable
Run Code Online (Sandbox Code Playgroud)
我如何使它看起来像这样:
deployment: c7
local: US
env: stable
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我想从hiera读取我的自定义因子的值.可能吗 ?
我将根据我的hiera值填充一个因子.请查看以下代码供您参考.
require 'facter'
# Default for non-Linux nodes
Facter.add(:jboss_base_algorithm) do
setcode do
nil
end
end
# Linux
#
Facter.add(:jboss_base_algorithm) do
confine :kernel => :linux
setcode do
Facter::Util::Resolution.exec("/usr/bin/echo '{hiera_value}' | /usr/bin/base64")
end
end
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
我的要求是这样的:
我的代码是这样的:
exec { 'exec3':
command => 'command3',
require => File['file'],
}
exec { 'exec2':
command => 'command2',
require => Exec['exec3'],
}
exec { 'exec1':
command => 'command1',
require => Exec['exec2'],
subscribe => File['file'],
refreshonly => true,
}
Run Code Online (Sandbox Code Playgroud)
但是,无论 /tmp/file 是否发生更改,command3 和 command2 始终会运行。我该如何预防?当 /tmp/file 没有更改时,我不希望在 exec1 中运行“require”。
我在 Centos 7 上安装了 puppet,但无法正常拨打电话。
puppet --help
-bash: puppet: command not found
Run Code Online (Sandbox Code Playgroud)
但是当试图从路径调用时,我得到了一个响应:
/opt/puppetlabs/bin/puppet --help
Usage: puppet <subcommand> [options] <action> [options]
Available subcommands:
agent The puppet agent daemon
apply Apply Puppet manifests locally
Run Code Online (Sandbox Code Playgroud)
可能是路径问题?
有人可以告诉我什么是木偶文件.pp 扩展名吗?
据我所知,Puppet 不是全名。
如果我错了,请纠正我。
puppet ×9
amazon-ec2 ×2
facter ×2
centos7 ×1
certificate ×1
cloud-init ×1
hostname ×1
logstash ×1
ruby ×1
ubuntu-11.10 ×1