通过改变 Chef 目录结构来提高使用文件的效率

请问您是否曾想过使用Chef来根据操作系统、操作系统版本和主机名来进行文件分类?

    • Chef Documents – About Files

 

    Chef Documents – About Templates

此处列举的内容可能相对较为不为人知,我认为如果对您有帮助的话,请参考。

能够做到这样的事情

使用リソースファイル配置場所使用されるファイルcookbook_file
remote_filefiles/centos-5.10
files/centos-6.5
files/defaultcook 対象サーバが CentOS 5.10 の場合 ココ のファイル
cook 対象サーバが CentOS 6.5 の場合 ココ のファイル
cook 対象サーバが上記 OS+Version 以外の場合 ココ のファイルtemplatetemplates/centos-5.10
templates/centos-6.5
templates/defaultcook 対象サーバが CentOS 5.10 の場合 ココ のファイル
cook 対象サーバが CentOS 6.5 の場合 ココ のファイル
cook 対象サーバが上記 OS+Version 以外の場合 ココ のファイル

根据操作系统版本,可以通过将使用的rpm软件包分别存放在不同的目录中,并通过目录命名规则来区分操作系统,还可以将配置文件分离开来。

使用CentOS 5或6系统来进行目录分割。

如果按照下面的方式创建目录:

files/centos-5
files/centos-6

如果目标服务器是 CentOS 5.5 或 CentOS 5.8,则使用 files/centos-5 目录中的文件,
如果目标服务器是 CentOS 6.2 或 CentOS 6.5,则使用 files/centos-6 目录中的文件。

通过主机名来区分目录

如果创建了以下这样的目录,

templates/foo.example.com
templates/bar.example.com

如果 cook 的目标服务器是 foo.example.com,则会使用位于 templates/foo.example.com 的 erb 文件作为模板;
如果 cook 的目标服务器是 bar.example.com,则会使用位于 templates/bar.example.com 的 erb 文件作为模板。

文件夹名称和文件夹名称搜索顺序

根据以下顺序进行目录名称搜索。
“node”区域是由ohai收集的关于cook目标服务器的信息。

※ 引用自 Chef Documents

node[:fqdn]

node[:platform]-node[:platform_version]

node[:platform]-version_components

node[:platform]
默认值

如果目标服务器是 CentOS 5.8,就会按照以下顺序查找目录。

文件/centos-5.8

文件/centos-5

文件/centos

文件/默认

当然,CentOS 的部分也可以在 Debian 或 Ubuntu 上使用。

bannerAds