对于 Ansible,我有一个角色来设置时区并填充 (Ubuntu) 基本系统的设置,
- name: set timezone
copy: content='Europe/Berlin'
dest=/etc/timezone
owner=root
group=root
mode=0644
backup=yes
- name: update timezone
command: dpkg-reconfigure --frontend noninteractive tzdata
Run Code Online (Sandbox Code Playgroud)
这两个命令无论如何都会执行。这意味着当 Ansible 为同一个目标运行两次时,changed=2结果摘要中仍然会得到一个,
default : ok=41 changed=2 unreachable=0 failed=0
Run Code Online (Sandbox Code Playgroud)
理想情况下,一切都应该ok在第二次运行中。
虽然我猜测update timezone应该对 有某种依赖set timezone,但我不太确定如何最好地实现这一点。
尝试缩短我们的部署时间并寻找您或您的团队用来返回终端和离开数据中心的建议和快捷方式。查看从订购设备到使用寿命结束的整个过程。
我想尽可能便宜地设置厨师服务器,同时留出足够的空间来运行而不会崩溃。我在该主题上找到的唯一一篇文章警告说,由于内存不足,RabbitMQ 会在微实例上崩溃。
问题是:考虑到我不将 CouchDB 或 RabbitMQ 用于我的应用程序中的其他任何内容,可以可靠地运行 Chef 服务器的最便宜的 EC2 实例是什么,因此可能必须在同一实例上专门为 Chef 服务器设置它们。
我们公司大量使用虚拟机,主要是 Hyper-V,但我们也涉足 ESXi 和 vCenter。除了能够将多台物理机器整合到一台服务器上的传统优势之外,我们还发现易于管理和配置极其引人注目的功能。高可用性和灾难恢复的东西远没有那么重要。
我们经常需要在一台机器上安装我们的应用程序,我们对挑选只有一些影响,所以硬件可能会有很大的不同。这次厂商是惠普,下一次可能是戴尔。刀片服务器与否等。该应用程序安装复杂,有时涉及多台(最多 30 台)机器。能够安装基本管理程序、复制一些文件并启动并运行真是太好了。它为我们节省了大量时间。
在虚拟机上运行也有它的缺点。这是要处理的另一层东西。管理员可能不熟悉它们。VMware 的许可模式似乎惩罚了拥有大量服务器的公司,但每台服务器只有一两个 VM(仅就管理工具而言就非常昂贵)。通常,虚拟机管理程序会限制对我们的应用程序真正重要的 VM。Hyper-V 对 4 个 CPU 内核的限制让我们非常恼火,因为我们的应用程序将使用您提供的任何 CPU 能力。不过,这种轻松配置几乎总是胜出,因为我们是一家开发商店,并且不断为我们自己和客户构建和重建服务器。
所以我的一般问题是:如果您至少有一些选择硬件的权力并且正在使用基于 Windows 的操作系统,那么您应该怎么做才能在不诉诸虚拟化的情况下以尽可能少的痛苦来消除类似的机器?允许以最小的痛苦迁移到不同硬件配置的解决方案的附加点。或者这只是要求太多,我们应该继续使用虚拟机吗?
我想启动几十个 RHEL6/SL6 服务器。但是,其中一些服务器是不同的,我不想为每类服务器创建一个新的 ks.cfg 文件。
有什么方法可以从模板动态生成 Kickstart 文件?
例如,如果我将这样的行附加到内核:
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi ip=dhcp
Run Code Online (Sandbox Code Playgroud)
然后脚本 ks.cgi 可以确定这是什么主机(通过 MAC 地址),并打印出适合该主机的 Kickstart 选项。我可以通过将参数传递给脚本来选择性地覆盖一些选项,如下所示:
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi?NODETYPE=production&IP=192.168.2.80
Run Code Online (Sandbox Code Playgroud)
在我们启动服务器之后,我们在这个系统上激活 Cfengine/Puppet 并使用我们最喜欢的配置管理产品来管理系统。
我们正在试验xCAT,但事实证明它太麻烦了。我已经研究过Cobbler,但我不确定它是否这样做。
更新:
在 O'Reilly 的书:Managing RPM-Based Systems with Kickstart and Yum,第 3 章自定义您的 Kickstart 安装 > 动态 ks.cfg 中讨论了您自己的解决方案,这与此线程中的一些评论相呼应:
实现这样的工具超出了这个 Short Cut 的范围,但我可以完成高级设计。任何此类解决方案都会将数据存储(发生变化的事物)与模板解决方案(不变的事物)混合在一起。数据存储将保存每台机器的数据,例如 IP 地址和主机名。您还需要一个唯一标识符,可能是主机名,以便您可以获取给定机器的数据。数据存储可以是平面文件、XML 数据或关系数据库,例如 PostgreSQL 或 MySQL。
反过来,为了调用系统,您将机器的唯一标识符作为 URL 参数传递。例如:
启动:linux ks= http://your.kickstart.server/gen_config?host-server25
在此示例中,CGI(或 servlet,或其他)为机器 server25 生成 ks.cfg。
但是 ks.cgi 的代码在哪里?
我遇到了“文件中的刀数据包”问题,其中刀无法识别从远程 git 存储库中提取的 .json 数据包文件。
我目前正在尝试从厨师单独使用过渡到厨师服务器,同时使用来自我们远程 git 存储库的食谱、数据包和其他厨师信息。
我目前已经提取了我们的 git 存储库的副本,并在 Knife.rb 中设置了食谱路径和数据包路径。我还加载了食谱,进行了调整等。
当尝试通过执行“从文件文件夹文件添加刀具数据包”来加载我们的 .json 数据包时,它看起来一直有效,直到我执行“刀具数据包列表”并显示为空白。所以我决定尝试在最后添加编辑选项以查看正在加载的内容(如果有)。这是我得到的错误:
knife data bag from file local_settings test.json -e nano
ERROR: Could not find or open file 'test.json' in current directory or in 'data_bags/local_settings/test.json'
Run Code Online (Sandbox Code Playgroud)
数据包文件确实存在,在适当的位置,在一个经过测试的工作 json 文件中。我有时也收到一条错误消息,提示“无法打开数据包“local_settings”。
我显然希望将数据包路径保留在适当的 git repo 文件夹中,以便能够在更集中的位置(我们的 git repo,而不是厨师服务器)跟踪更改。
任何正确方向的解决方案、建议或指示都值得赞赏。
我对使用 Chef 还很陌生,尤其是使用 vagrant,所以对于更有经验的用户来说,这很可能是一个愚蠢的问题。
我正在使用这本食谱:https : //github.com/opscode-cookbooks/application_nginx
我只想添加我自己的站点配置(vhost)。
它必须是以下之一:
选项 1 对我来说似乎不正确,我不知道如何在不必完全分开食谱的情况下完成选项 2。
任何人都可以就如何实现这一目标提出建议吗?
我们已经从 Dell Poweredge Rack 服务器上接收了一批货。不幸的是,在订购时它被忽略了要求在内置 iDRAC 控制器中启用 dhcp...所以它们都被困在同一个 IP 地址上。这意味着我必须单独访问它们并在控制台中配置一个新 IP...
将来我想避免这种情况。现在,戴尔提议交付启用自动发现的下一批。据我了解,这意味着当机器第一次唤醒时,iDRAC 将请求一个 DHCP 地址。DHCP 服务器还提供了一个“配置”服务器,它提供用户名和密码,以及要应用的配置。这将允许我们自动配置诸如 RAID 之类的东西。
但是,我似乎找不到一种方法来设置这种不涉及设置 Windows 机器的配置服务器。我想专门使用 Linux 工具。
有没有办法做到这一点?我只想架设服务器,打开它们,然后远程执行所有操作。而且,使用唯一的Linux工具?
我目前正在开展一个项目,在该项目中我使用 Vagrant 和 Ansible 配置在 VirtualBox 中创建本地环境。我目前在一所大学工作,我们有一个 XenServer 管理程序(免费版)。我无法直接从我的位置访问虚拟机管理程序,但我可以通过 ssh 连接到同一网络上的 Ubuntu 服务器并转发端口,以便我可以使用 XenCenter 连接到它:
ssh <remote machine> -L80:<xen-server>:80 -L443:<xen-server>:443 -L5900:<xenserver>:5900 -L59001...etc to 5910
Run Code Online (Sandbox Code Playgroud)
59xx 端口是因为 XenCenter 将 VNC 控制台放在这些端口上。(我实际上在 Windows 上使用腻子,因为我无法让 OpenXenCenter/Linux 与这种类型的隧道连接)。Citrix XenCenter 连接正常,我可以创建一个新的 VM,但是我无法通过 XenCenter 或其他 VNC 客户端访问控制台。
如果我能让 VNC 控制台工作,我可以创建一个基本框,然后复制它并根据需要使用不同的 ansible playbook 重新配置副本。
但我真的不在乎能否获得控制台,只要我可以自动配置单个 VM。如果我能用另一台机器上的客户端指向虚拟机管理程序并编写具有特定 IP 地址的 VM 创建脚本,那就太好了。Vagrant 不支持 Xen 作为提供者。我发现使用 libvirt 的 Xen 支持有限,但即便如此,它似乎更适合安装在标准发行版(如 Ubuntu 或 OpenSUSE)上的 Xen,而不是作为独立的 Citrix Hypervisor。有 xen-tools,但这似乎也适用于本地 linux 发行版上的 xen。
有没有办法使用 Vagrant 或其他类型的配置工具远程配置 XenServer 实例?
与“引导机器”相比,“配置机器”意味着什么?
我发现该规定主要在谈论 Puppet 和 Chef 时使用,而引导接缝则更接近于机器引导过程(在机器开机后很早)。然而,有些人似乎可以互换使用它们。
有关的: