我有两个更改ip route&sysctl禁用 tcp 慢启动。这是我的方法
ip route show
Run Code Online (Sandbox Code Playgroud)
记下以 default 开头的行。
从默认行中选择 IP 并运行
sudo ip route change default via $ip_address dev eth0 initcwnd 12
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0
Run Code Online (Sandbox Code Playgroud)
我怎样才能从中创建一个木偶脚本?一种可以部署到多台相同类型机器的机器——CentOS 6
编辑: 添加赏金以获得一个工作示例
sudo ip route change default via $ip_address dev eth0 initcwnd 12
Run Code Online (Sandbox Code Playgroud) 如何将处理程序添加到 puppet 中定义的类型?例如,如果我有:
define foo::bar ($baz) {
...
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能让处理程序foo::bar来处理包含的东西
...
notify => Foo::Bar['zippidy']
...
Run Code Online (Sandbox Code Playgroud)
?
当处理程序收到通知时,它会在条件逻辑中运行各种 Exec。
我有以下定义:
class nginx::install{
...
}
class nginx::service{
...
}
class nginx::config{
...
}
class nginx{
include nginx::install, nginx::service, nginx::config
}
class jenkins::nginx{
include nginx
file{'/etc/nginx/sites-enabled/jenkins':
source => ...,
require => Class['nginx'],
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个时,Puppet 告诉我我有一个循环:
err: Could not apply complete catalog: Found 1 dependency cycle:
(Class[Jenkins::Nginx] => File[/etc/nginx/sites-available/jenkins] => Class[Jenkins::Nginx])
Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz
Run Code Online (Sandbox Code Playgroud)
jenkins::nginx 中对 nginx 的普通引用引用了自身。我如何告诉 Puppet 我依赖于顶级 nginx 类?
我试图将我的依赖项更改为Class['::nginx'](就像我在 Ruby 中一样),现在 Puppet 告诉我它找不到依赖项。
我一直在尝试创建一个清单,用于在 Centos 5 服务器上使用 puppet 安装 postgres 9.1。我一直在尝试调整http://wiki.postgresql.org/wiki/YUM_Installation上的说明以实现这一点,当我通过手动过程时,我已经能够做到。
因此在我看来,木偶清单包含
package { 'postgresql91-server':
ensure => installed,
source => 'http://yum.postgresql.org/9.1/redhat/rhel-5-x86_64/pgdg-centos91-9.1-4.noarch.rpm'
}
Run Code Online (Sandbox Code Playgroud)
但是在尝试应用此清单时,我得到了
err: /Stage[main]//Package[postgresql91-server]/ensure: change from absent to present failed: Could not find package postgresql91-server
Run Code Online (Sandbox Code Playgroud)
有没有专业的木偶师可以帮助我?
我是 Vagrant 和 Puppet 的新手,我创建了一个带有 Debian Squeeze 和独立 Puppet 的 Base Box,使用这里的说明安装 Puppet 和 Puppetlabs 包。
盒子本身似乎成功导入,但是一旦我开始配置它,我就会收到似乎与主机上的 nfs 共享有关的错误。1000 是 vm 上的 Vagrant 用户的 uid。
错误:
Error: Failed to set owner to '1000': Operation not permitted - /vagrant/www/index.php
Error: /Stage[main]/Perchdemo::Sites::Create/File[/vagrant/www/index.php]/owner: change from 501 to vagrant failed: Failed to set owner to '1000': Operation not permitted - /vagrant/www/index.php
Run Code Online (Sandbox Code Playgroud)
当我使用 Puppet 将 index.php 文件复制到主机文件系统上的共享 /vagrant/www 时,就会发生这种情况。我在 vm 上的 Puppet 独立安装中使用了这个 Puppet 模块,其中文件托管在 vm 的文件系统上,虽然我希望它们位于 nfs 共享上,但理想情况下。
编辑了更多信息。当我使用 puppetlabs …
是否可以从 master puppet 向节点发出命令以运行代理并将最新配置应用于它?
就像,我丢失了用户的密码,我无法登录,但是服务器上安装了 puppet 代理,我可以通过运行 puppet 代理在服务器上应用更改,但是由于它没有自动运行,我无法登录要手动运行它,如何运行它并通过 puppet master 应用配置?(如果可能的话)
我开始使用以下指南在 ec2 上使用 puppet。
https://help.ubuntu.com/12.04/serverguide/puppet.html
在最后一步,当我尝试从傀儡主控签署傀儡客户端时,我收到以下错误
root@ip-10-248-27-66:/home/ubuntu# puppetca --sign ec2-54-245-56-210.us-west-2.compute.amazonaws.com
err: Could not call sign: Could not find certificate request for ec2-54-245-56-210.us-west-2.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
这是/etc/hostspuppetmaster 上的输出
127.0.0.1 localhost puppetmaster
10.248.34.162 ec2-54-245-56-210.us-west-2.compute.amazonaws.com puppet
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Run Code Online (Sandbox Code Playgroud)
这是/etc/hostspuppet 客户端上的输出
127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 …Run Code Online (Sandbox Code Playgroud) 我已将 SSH 服务器设置为仅使用公钥身份验证并禁用密码身份验证。
通过 puppet 添加用户时,我想禁用用户密码。
到目前为止,我已经想出了这个,这似乎有效,但我不确定这有多安全:
user { 'john':
ensure => 'present',
comment => 'John Smith',
groups => ['adm','sudo','wheel','users'],
home => '/home/john',
managehome => true,
shell => '/bin/bash',
password => '*',
}
Run Code Online (Sandbox Code Playgroud)
使用password => '*'定义是否可以安全地禁用用户密码?
首先,我知道在 serverfault 上已经有一个非常相似的问题,但它并没有完全回答我的问题。
所以,我的设置如下:我有一台服务器,运行 Ubuntu 14.04 LTS 和 puppet master 3.4.3 和 foreman 1.6。客户端是运行 puppet 代理 3.7.0 的 Windows 7 计算机。
自动运行工作正常,我只是无法让Run Puppet按钮工作。我总是收到带有此消息的红色叠加层:
failed to execute puppetrun: ERF12-4252 [ProxyAPI::ProxyException]: Unable to execute Puppet run ([RestClient::InternalServerError]: 500 Internal Server Error) for proxy https://puppetmaster:8443/puppet
Run Code Online (Sandbox Code Playgroud)
我按照wiki的说明在节点上添加了以前不存在的文件 auth.conf。我把它放在C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf 文件所在的位置。我还在这个目录中添加了一个空的 namespaceauth.conf。在节点和服务器上我激活了listen=true。我在 sudoers 文件中添加了 foreman-proxy。我重新启动了节点服务和 puppetmaster 几次。这就是我发现的所有其他帖子都说“现在你有一个可以运行的运行木偶按钮”。除了我它不起作用。
我能找到的唯一日志条目是在 /var/log/foreman-proxy/proxy.log 中:
E, [2014-10-20T17:50:53.051681 #1119] ERROR -- : Failed puppet run: Check Log files
Run Code Online (Sandbox Code Playgroud)
我检查了我能找到的所有日志文件,但找不到关于此错误可能是什么的任何进一步信息。编辑:添加到 wiki 的链接第二次编辑:我还检查了工头错误代码,但不幸的是,我得到的代码没有任何链接到它的信息。(是的,我检查了代理通信错误 - 没有)
我在 Puppet 模块中有一个步骤,它大致执行以下操作来设置一些应用程序密钥:
file { '/root/setup_app_keys.sh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0700',
source => 'puppet:///modules/app_module/setup_app_keys.sh',
}
exec { 'setup_app_keys':
unless => '/etc/pki/tls/private/app-foo.key',
command => '/root/setup_app_keys.sh',
user => 'root',
group => 'root',
}
Run Code Online (Sandbox Code Playgroud)
该setup_app_keys.sh脚本有点太长,无法制作成(可读的)单行,所以我将它保存到机器的文件系统并从那里执行它。它在其中创建文件/etc/pki...并且运行良好。
令人讨厌的是,shell 脚本基本上是一次性使用的东西。它不应该在机器的生命周期内再次运行,但它必须留在 Puppet 存储它的文件系统上。如果它被删除,Puppet 会帮助重新创建它。
我认为必须有一种方法可以使用exec专门重写它,这将允许我在需要时从 puppetmaster 下载脚本,执行一次,然后丢弃脚本(或不首先存储它)。但我尝试过的一切都是这样的:
command => 'puppet:///modules/app_module/setup_app_keys.sh',
Run Code Online (Sandbox Code Playgroud)
或者
command => 'curl http://__[various puppetmaster URLs]__ | sh',
Run Code Online (Sandbox Code Playgroud)
并且这两种方法似乎都不起作用。是我要求太多,还是这种方法有缺陷?