标签: puppet

使用 puppet 修改 ip route 和 sysctl

我有两个更改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)

linux centos puppet

7
推荐指数
3
解决办法
4315
查看次数

如何为定义类型的通知或订阅设置处理程序?

如何将处理程序添加到 puppet 中定义的类型?例如,如果我有:

define foo::bar ($baz) {
 ...
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能让处理程序foo::bar来处理包含的东西

...
   notify => Foo::Bar['zippidy']
...
Run Code Online (Sandbox Code Playgroud)

?

当处理程序收到通知时,它会在条件逻辑中运行各种 Exec。

puppet

7
推荐指数
1
解决办法
2950
查看次数

包含类时如何打破 Puppet 中的依赖循环

我有以下定义:

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 告诉我它找不到依赖项。

puppet

7
推荐指数
1
解决办法
5117
查看次数

在 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)

有没有专业的木偶师可以帮助我?

yum rpm puppet

7
推荐指数
1
解决办法
2933
查看次数

Vagrant OS X 主机 nfs 共享权限错误 - 无法将所有者设置为“1000”

我是 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 …

nfs puppet vagrant

7
推荐指数
2
解决办法
8479
查看次数

强制通过 puppet 对 puppet 代理应用更改,通过 master?

是否可以从 master puppet 向节点发出命令以运行代理并将最新配置应用于它?

就像,我丢失了用户的密码,我无法登录,但是服务器上安装了 puppet 代理,我可以通过运行 puppet 代理在服务器上应用更改,但是由于它没有自动运行,我无法登录要手动运行它,如何运行它并通过 puppet master 应用配置?(如果可能的话)

linux puppet puppetmaster

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

无法呼号:找不到 puppet 的证书请求

我开始使用以下指南在 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)

puppet amazon-ec2 amazon-web-services

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

如何安全地通过 puppet 禁用用户密码?

我已将 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 => '*'定义是否可以安全地禁用用户密码?

linux password user-management puppet

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

如何让运行木偶按钮在 Foreman 上工作?

首先,我知道在 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 的链接第二次编辑:我还检查了工头错误代码,但不幸的是,我得到的代码没有任何链接到它的信息。(是的,我检查了代理通信错误 - 没有)

windows ubuntu puppet puppetmaster foreman

7
推荐指数
1
解决办法
8846
查看次数

Puppet 是否可以在不保存的情况下运行 shell 脚本(从 master 下载)?

我在 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)

并且这两种方法似乎都不起作用。是我要求太多,还是这种方法有缺陷?

puppet

7
推荐指数
1
解决办法
7703
查看次数