使用chef.io配置静态路由

时间:2015-01-26 14:30:32

标签: ruby routes chef chef-recipe

目前我想使用(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]

所以我的希望是,有人已经使用厨师来配置企业规模的路线,可以帮助我或社区为我提供一些关于自己开发食谱的想法

1 个答案:

答案 0 :(得分:0)

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

  1. 在dev / QA / Prod中锁定烹饪书的厨师环境(可能是 扩展到dev / dev DMZ / QA / QA DMZ / Prod / Prod DMZ等)
  2. 一个包装器(角色)食谱,用于设置网关,每种类型的盒子或每组路由的静态路由等属性
  3. 包含使用之前定义的属性的食谱的代码食谱。
  4. 根据您在节点运行列表中包含一个或多个包装器菜谱的方式。对路径进行更改(在包装器中)将在相应的环境中锁定它们。

    对于路线管理,可能是每个"区域的包装"如果您的某个区域恰好与一个环境匹配,那么这是最好的选择。

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

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

    对于食谱(上面第3点,我们将其命名为“my_routing_cookbook”),它非常简单" 在属性中,我们有:

    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点,每个包装器菜谱将依赖于此菜谱并设置它自己的属性。 Thoose cookbook将default.rb只需拨打include_recipe 'my_routing_cookbook'

    希望它能帮助您入门。