通过改变 Chef 目录结构来提高使用文件的效率
请问您是否曾想过使用Chef来根据操作系统、操作系统版本和主机名来进行文件分类?
-
- Chef Documents – About Files
- Chef Documents – About Templates
此处列举的内容可能相对较为不为人知,我认为如果对您有帮助的话,请参考。
能够做到这样的事情
使用リソースファイル配置場所使用されるファイルcookbook_file
remote_filefiles/
files/
files/
cook 対象サーバが CentOS 6.5 の場合
cook 対象サーバが上記 OS+Version 以外の場合
templates/
templates/
cook 対象サーバが CentOS 6.5 の場合
cook 対象サーバが上記 OS+Version 以外の場合
remote_filefiles/
centos-5.10
files/
centos-6.5
files/
default
cook 対象サーバが CentOS 5.10 の場合 ココ
のファイルcook 対象サーバが CentOS 6.5 の場合
ココ
のファイルcook 対象サーバが上記 OS+Version 以外の場合
ココ
のファイルtemplatetemplates/centos-5.10
templates/
centos-6.5
templates/
default
cook 対象サーバが 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 上使用。