使用 chef.io 配置静态路由

Configuring static routes with chef.io

目前我想使用 (opscode) Chef 在我们的机器上配置我们所有的路由。由于我很懒,我已经在互联网上搜索了一本现成的食谱,但找不到任何东西。我知道,Chef 具有配置路由“https://docs.chef.io/resource_route.html”的功能,但这对于我们的用例来说还不够。我们在 MZ 和 DMZ 的不同放置区域(prod、preprod、dev)中有 VM,每个区域都有不同的网关。 如果我找不到一本可以区分它的食谱,我需要自己写一本。我的想法是通过 ruby 分析节点名称并使用循环和 chef-route 资源来创建所有路由。

if /_prod/ =~ Chef::Config[:node_name]

所以我希望有人已经在使用 Chef 来配置企业规模的路由并且可以帮助我,或者社区为我提供了一些关于自己开发食谱的想法

你的环境描述(尤其是关于厨师)不是很详细,所以我会回答我的看法:

  1. Chef 环境将食谱锁定在 dev/QA/Prod(可能是 扩展到 dev/dev DMZ/QA/QA DMZ/Prod/Prod DMZ 等)
  2. 一个包装器(角色)说明书,用于设置网关、静态路由等属性,每种类型的框或您希望设置的每组路由
  3. 包含使用之前定义的属性的配方的代码说明书。

取决于您在节点运行列表中拥有一本或多本包装器说明书的方式。对路由进行更改(在包装器中)将通过将它们锁定在相应的环境中。

对于路由管理,如果您的某个区域与一个环境完全匹配,那么每个 "zone" 的包装器可能是最好的主意。

警告:这是一个基于我当前环境的例子以及我将如何做,我实际上并没有使用下面的代码。

对于我们的基础架构,我们在同一个安全区域 (vlan) 中有 3 个 QA 环境(太多),因此我们需要更改应用程序生命周期的路由,这是锁定机制可以方便地更改部分内容的地方节点路由而不是区域中的整个节点。

对于cookbook(上面第3点,暂且命名为'my_routing_cookbook')来说,相当"simple" 在属性中让我们有:

default['sec']['default'] = { gw: '192.168.1.250', device: 'eth1' }
default['sec']['routes']['172.16.0.0/16'] = { gw: '192.168.1.254', device: 'eth0' }
default['sec']['routes']['10.0.0.0/8'] = { gw: '192.168.1.254', device: 'eth0' }

食谱中:

route '0.0.0.0/0' do
  gateway node['sec']['default']['gw']
  device node['sec']['default']['device']
end
node['sec']['routes'].each as |r,properties|
  route r do
    gateway properties['gw']
    device properties['device']
  end
end

默认网关可以在路由列表中,我只是觉得对于非网络人士来说,这样保留默认网关是最简单的。

对于第 2 点,每个包装器食谱都将依赖于此并设置其自己的属性。这些食谱将有一个 default.rb 只是调用 include_recipe 'my_routing_cookbook'

希望它能帮助您入门。