Articles of 木偶

全球对当地傀儡pipe理

有没有人用Puppetpipe理过几个分布在不同地理位置的系统? 我有几个几乎完全相似的部署(除了服务器的IP),我期待转换为Puppet的pipe理。 我有2个选项: 让每个部署主持它自己的PuppetMaster提供本地configuration,然后同步PuppetMasters(也许再次与木偶) 在AWS EC2上托pipePuppetMaster以实现高可用性,并从单点为所有部署提供configuration 有没有人尝试过第二个选项,它是如何工作的? 我对这种环境下的高可用性性能特别感兴趣。 谢谢。

没有APTbuild议与木偶

我使用木偶来pipe理一大堆Debian服务器,部分(如果包括安装软件包的话)。 我在几个系统上安装的一个软件包是nmap,用来validation防火墙规则是否正确设置。 在Debian 7.0上,如果你启用了APT :: Install-Recommends,你会得到一大堆废话(参见下文)。 我不希望所有的安装nmapbuild议启用包括的废话。 一个解决scheme是用APT::Install-Recommends "0";更新我的aptconfigurationAPT::Install-Recommends "0"; 。 但我不希望这是默认的。 大部分时间我想要的build议包括在内。 推荐的软件包大部分都很好,而且我也没有收到大量我不需要的东西。 但是有几个软件包认为我不需要/需要。 package { 'nmap': ensure => installed, require => Class['apt'], } 有没有什么方法可以控制在使用“apt”包提供程序时,是否通过puppet安装了build议? 因为apt和aptitude并不完全兼容,所以我不想和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 […]

Puppet错误:返回1而不是之一

当使用Puppet时,我收到类似的错误消息 returned 1 instead of one of [0] 有没有办法输出/得到实际的错误信息?

木偶testing如果文件存在

我正在寻找一种方法来testing一个文件是否存在于我的客户端(只是testing不创build)。 我已经find了厨师的方式(File.exists),但傀儡不是那么简单。 提前致谢。

在Puppet中添加文本到/ etc / hosts文件的最好方法是什么?

我还想保留手动编辑主机文件的function,至less前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 将这些主机input到/ etc / hosts的底部,将是完美的。 什么是最好的方法来做到这一点? 有没有比编写8个主机行清单更好的方法? # create a simple hostname and ip host entry host { 'front-01': ip => '192.168.1.103', } 可能有服务器组在/ etc / hosts中需要不同的IP […]

Puppet:文件(或包)更新时运行shell命令

每当tzinfo软件包(在Ubuntu服务器上)发生变化时,我想运行mysql_tzinfo_to_sql 。 我想木偶可以照顾这个。 我以为Puppet会对软件包版本的变化做出反应,如果不是的话,那么对包中包含的文件的时间戳进行更改。 我能看到做到这一点的唯一方法是有一个没有直接行动的资源,并有一个执行取决于它。 我有的问题是: 是否可以定义仅用于通知其他资源(如exec )的文件? 是否可以定义一个包资源,以便在包更改或更新时激活另一个资源(如exec )? 是否可以定义一个运行shell命令行的exec资源(例如pipe道和redirect)而不是文件系统的命令? 综合起来,这似乎是压倒性的。 跟随 :神奇的答案! 为了完整性(和logging),我应该注意以下几点: 完整的shell命令是mysql_tzinfo_to_sql | mysql -u root -p password mysql_tzinfo_to_sql | mysql -u root -p password (它将tzinfo加载到MySQL数据库中供MySQL使用)。 审计/etc/tzinfo将是徒劳的,因为这仅仅是本地时区configuration; 目标是监视tzinfo数据本身的变化(从而监视/usr/share/zoneinfo )。 同样,内容将是错误的观看 – 因为他们可能不会改变; 最好的办法是观看mtime或全部,因为在每次tzinfo更新后,文件时间应该改变。 此外,詹姆斯·特恩布尔在介绍审计时写下了所有关于审计的内容。 “元参数参考”包含audit参数工作的简短说明。

我怎样才能让puppet为虚拟用户部署ssh密钥?

我试图让木偶为虚拟用户分配授权的SSH密钥,但我不断收到以下错误: err: Could not retrieve catalog: Could not parse for environment production: Syntax error at 'user'; expected '}' at /etc/puppet/modules/users/manifests/ssh_authorized_keys.pp:9 我相信我的configuration是正确的(下面列出),但有一个语法错误或范围问题我缺less? 我只想将用户分配给节点,并让这些用户自动安装其ssh密钥。 有没有更好的方法来做到这一点,我只是在推翻它? # /etc/puppet/modules/users/virtual.pp class user::virtual { @user { "user": home => "/home/user", ensure => "present", groups => ["root","wheel"], uid => "8001", password => "SCRAMBLED", comment => "User", shell => "/bin/bash", managehome => "true", […]

Mesos部署的最佳基础

目前,我们正在devise新的Apache Mesos云设置的架构。 目标是通过将不同的堆栈移动到相同的架构来统一我们的系统。 主要工作负载是使用Apache Spark的大数据分析以及我们的企业基础架构,包括Web服务器,邮件服务器等。 我们的想法是在运行在Mesos(Marathon / Chronos,Aurora或Singularity)可用调度器之上的Docker容器中运行我们的Web服务。 这将成为第一个Mesos框架组。 在它旁边,我们将拥有Apache Spark框架和多个用于数据存储的数据库框架。 这将是第二组Mesos框架。 我们将在并行运行之后select具体的testing。 然而,我们很难决定运行Mesos本身的基础。 理想情况下,我们希望尽可能靠近金属。 我们也希望使用一个编排解决scheme来确保Mesos&framework守护进程总是在失败时运行/重新启动。 我们正在考虑的选项如下: 1)在最小的OS中运行Mesos&框架作为docker容器。 在这方面,我们正在倾向于CoreOS和舰队。 2)直接在Ubuntu / Debian服务器上运行Mesos和框架。 对于这个select,我们倾向于工头和木偶。 至于这个问题,我们正在寻找解决scheme,按照重要性: 是最简单的configuration 是最容易维护和保持更新 有最小的开销 我们之前没有和CoreOS合作过,但是我们似乎正在向前迈进。 我有一个很大的(主观)问题,就是我们在Docker容器上运行Mesos,然后在Mesos上运行Docker容器。 这似乎“不洁净”,对我来说是错误的。 这是没有价值的考虑吗? 类似的想法涉及层之间的冗余。 为了解释我来自哪里,我宁愿如果Mesos是一个真正的操作系统,只是在金属顶部运行。 看来,不pipe你使用什么样的基础,你最终都会在不止一层的架构上(即CoreOS&Fleet&SystemD == Mesos&Marathon&Chronos)具有相同的function。 这是不可避免的? 有没有其他好的select来运行我们没有考虑到的Mesos下面的图层,牢记我们的标准?

在Ubuntu中通过Puppet安装open-vm-tools; 什么是小恶?

在一个理想的世界里,configurationpuppet来安装open-vm-tools应该是这样简单的: class vm-tools { package { 'open-vm-tools': ensure => installed } package { 'open-vm-dkms': ensure => installed } } 但是,这开辟了一个丑陋的依赖性蔓延的jar头; 它会安装X,这显然不属于服务器。 从Ubuntu 10.04开始,这些软件包最终推荐使用GUI工具的open-vm-toolbox软件包: # apt-cache depends open-vm-dkms open-vm-dkms Depends: dkms Depends: make Suggests: open-vm-toolbox Recommends: open-vm-tools # apt-cache depends open-vm-tools open-vm-tools Depends: libc6 Depends: libfuse2 Depends: libgcc1 Depends: libglib2.0-0 Depends: libicu44 Depends: libstdc++6 Recommends: open-vm-source […]

木偶文件源可以来自Web服务?

有一种(简单)的方式让木偶使用互联网上的文件的源属性文件? 例如: file { "/home/text.txt": source => [ "http://www.example.com/text.txt", ] }