我听说过很多关于将 Cobbler 与 Puppet/Cfengine 一起使用以进行快速部署和配置的信息。
你能指点我一些教程或分享你如何做的经验吗?
也很想知道您用于快速配置和部署的任何其他系统。谢谢。
我希望从基于密码(我开始不知所措)切换到基于 SSH 密钥的系统。
我想知道是否有任何 SSH 密钥管理系统或服务器解决方案,可以让我在机器上分发和撤销密钥?
或者最好的方法是使用 Puppet 来完成这项任务?如果是,那么每个客户端机器的单个密钥对的方法(此处描述:用于管理 ssh 密钥的最佳系统?)是最好的吗?
有没有人用 Puppet 管理过几个地理分布的系统?
我有几个几乎完全相似的部署(服务器 IP 除外),我希望将其管理转换为 Puppet。
我有两个选择:
让每个部署托管它自己的 PuppetMaster 以提供本地配置,然后以某种方式同步 PuppetMasters(可能再次与 puppet 同步)
在 AWS EC2 上托管 PuppetMaster 以获得高可用性,并从单点为所有部署提供配置
有没有人尝试过第二种选择,结果如何?我对这种环境下的高可用性性能特别感兴趣。
谢谢。
(提前为这个问题的愚蠢道歉。我通常是一名程序员,而不是系统管理员,但我已经承担起自动化一些事情,并清理其他一些自动化但不是最漂亮的方式的东西.:-)
我一直在寻找用于将软件部署自动化到一堆服务器的各种工具,例如 cfengine、Puppet 和 Chef。到目前为止,Puppet 看起来最吸引人,但我当然还没有承诺过任何事情。
这些工具看起来都可以很好地使用预先打包的软件使一堆服务器保持最新状态。
我不明白的是:如何使用工具(如 Puppet)来管理我们自己内部软件的部署?我想我不知所措我,因为我已经看到了一千教程展示了如何保持阿帕奇ensure => latest(这是很酷的),但是没有一个相当相当于我用例的今天,这是更多的东西一样:
Puppet 听起来很棒,我完全看到了声明式、幂等配置相对于某些 shell 脚本的优势,但我还没有看到任何关于“您想将 shell 脚本更新为 Puppet(或 Chef 或 cfengine)的教程,所以这就是您应该做”。有这样的事情吗?对于其他人来说,如何使用 Puppet 文档中提供的内容并复制我想要的行为是否显而易见?我只是没有得到它吗?
到目前为止,在我看来,人类(#1)会手动打包 Puppet 外部的软件(#2 和 #3),手动更新 Puppet 配置,这将触发 Puppet 更新服务器。 .. 也许?(我在这里有点困惑,因为我相信你能看出来。)
谢谢!
我在 Debian Squeeze 6.0.4 上运行 Puppet 的默认配置。
服务器的 FQDN 是 master.example.com。客户端的 FQDN 是 client.example.com。
我可以联系傀儡大师并发送 CSR。我使用 puppetca -sa 对其进行签名,但客户端仍无法连接。
两台机器都有准确的日期和时间。
这是出现在 /var/log/syslog 中的内容:
Apr 3 17:03:52 localhost puppet-agent[18653]: Reopening log files
Apr 3 17:03:52 localhost puppet-agent[18653]: Starting Puppet client version 2.6.2
Apr 3 17:03:53 localhost puppet-agent[18653]: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Apr 3 17:03:53 localhost puppet-agent[18653]: Using cached catalog
Apr 3 17:03:53 localhost puppet-agent[18653]: Could not retrieve …Run Code Online (Sandbox Code Playgroud) 我想检查变量的内容是否为奇数。但我需要一个整数。
$ip_array = split($ipaddress, '.')
$odd_ip = $ip_array[3] % 2
if $odd_ip == 1 {
notice("is odd")
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将字符串转换为整数?
我主要是一名开发人员,兼职 DevOps;并为我的项目管理这里和那里的服务器。
我简要地研究了 Chef/Puppet/Ansible;我想找到一些东西:
有没有人对最适合的工具有什么建议?
谢谢
我还想保留手动编辑主机文件的能力,至少前 10 行。
#Public IP's - eth0
192.168.1.103 front-01
192.168.1.106 front-02
#Private IP's - eth1
192.169.40.201 priv0-0
192.169.40.202 priv0-1
192.169.40.207 priv1-0
192.169.40.208 priv1-1
#Virtual IP's - eth0:1
192.169.50.202 vip-01
192.169.50.205 vip-02
Run Code Online (Sandbox Code Playgroud)
将这些主机条目放在 /etc/hosts 的底部将是完美的。做这个的最好方式是什么?有没有比编写 8 个主机行清单更好的方法?
# create a simple hostname and ip host entry
host { 'front-01':
ip => '192.168.1.103',
}
Run Code Online (Sandbox Code Playgroud)
可能有些服务器组在其 /etc/hosts 中需要不同的 IP 的 /hostnames。我会使用模板,但这意味着人们不能再在他们的 /etc/hosts 中进行手动更改,因为他们会被模板覆盖。
我使用 puppet 来管理工作中的一堆 Debian 服务器,如果这包括安装软件包的话。我在多个系统上安装的一个软件包是 nmap,它用于验证防火墙规则设置是否正确。在 Debian 7.0 上,如果你启用了 APT::Install-Recommends,你会得到一堆废话和 nmap(见下文)。
我不希望包含启用推荐的所有安装 nmap 的废话。一种解决方案是使用APT::Install-Recommends "0";. 但我不想让它成为默认值。大多数时候我想要推荐包括在内。推荐的包大多都很好,我没有得到很多我不需要的东西。但是有一些包裹带来了我不想要/不需要的东西。
package { 'nmap':
ensure => installed,
require => Class['apt'],
}
Run Code Online (Sandbox Code Playgroud)
在使用“apt”软件包提供程序时,是否有任何方法可以控制是否通过 puppet 安装了推荐? 我不想与 aptitude 提供者混为一谈,因为 apt 和 aptitude 彼此并不完全兼容。
有推荐
root@fw-01:~# apt-get install nmap
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
The following NEW packages will be installed:
fonts-droid fonts-liberation ghostscript gnuplot gnuplot-nox groff gsfonts
imagemagick imagemagick-common libblas3 libblas3gf libcroco3 libcupsimage2
libdjvulibre-text libdjvulibre21 libexiv2-12 libgfortran3 libgs9 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用预安装的 docker 自动配置 VM。
我的默认 init.pp 看起来像:
class { 'apt':
always_apt_update => true,
}
package { [
#'build-essential',
#'vim',
#'curl',
#'zsh',
#'git-core',
#'htop',
#'wget',
#'linux-image-generic-lts-raring',
'python-software-properties'
#'lxc-docker'
]:
ensure => 'installed',
}
apt::ppa { 'ppa:dotcloud/lxc-docker':}
# refresh apt source
exec { "apt-update":
command => "/usr/bin/apt-get update && apt-get install lxc-docker --force-yes",
returns => 100
}
Run Code Online (Sandbox Code Playgroud)
最后一个 exec 命令返回(我认为返回 100 是成功的 apt-get 更新的默认值):
info: /Stage[main]//Apt::Ppa[ppa:dotcloud/lxc-docker]/Exec[add-apt-repository-ppa:dotcloud/lxc-docker]:Exec[apt_update]的调度刷新通知:/ Stage[main]/Apt::Update/Exec[apt_update]/returns: 执行成功通知:/Stage[main]/Apt::Update/Exec[apt_update]: 从 1 个事件触发 'refresh'
但是,当我 ssh 进入盒子时,docker 没有安装并运行,apt-get install lxc-docker然后我可以安装它。我究竟做错了什么?我似乎无法让它与多种不同的配置一起工作。
puppet ×10
deployment ×2
apt ×1
automation ×1
cfengine ×1
chef ×1
cobbler ×1
debian ×1
keys ×1
openssl ×1
puppetmaster ×1
ssh ×1
vagrant ×1