首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chef -Chef主机特定环境属性动态

Chef -Chef主机特定环境属性动态
EN

Stack Overflow用户
提问于 2018-01-29 04:55:12
回答 1查看 142关注 0票数 0

我是Chef和Ruby的新手,我已经尝试了几天的食谱。目前我遇到了一个问题,我认为这个问题很简单,但由于缺乏适当的知识,我无法解决它。

我将使用creste chef recipy,它将在Linux虚拟机上配置网络接口。

我的ifcfg-ethX模板如下所示:

ifcfg-ethX.erb

代码语言:javascript
复制
DEVICE=<% @int_name %>
HWADDR=<% @mac_address%>
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTBROTO=static
IPADDR=<% @ip_addr%>
NETMASK=<% @netmask %>

并且大多数属性将从环境文件中检索。该文件的结构为:

代码语言:javascript
复制
default_attributes dev: {

#######################################################
#dev.bootstrap 
#######################################################
#default.dev.
    bootstrap:  {
################## nodes #######################
# nodes being managed this environment
        nodes:  [
            {
                fqdn: "Host01a",
                ip: "10.108.95.139",
                run_list: "role[roleA]",
                configs: [:FUNC01a],
            },
            {
                fqdn: "Host01b",
                ip: "10.108.95.140",
                run_list: "role[roleA]",
                configs: [:FUNC01b],
            },
############### End of bootstrap nodes  #################
#default.dev.bootstrap.nodes []
        ]
    },







    config: {   

######################    CONFIGS    ######################
#default.dev.config.
        FUNC01a: {
            ip: "10.0.0.1",
            fqdn: "Host01a",
            network: "255.25.255.0",
            int: "eth0",
            internal_ip: "10.1.0.1",
            internal_fqdn: "Host01aINT",
            internal_network: "255.25.255.0",
            internal_int" "eth1",
            traffic_ip: "10.2.0.1",
            traffic_fqdn: "Host01aPROD",
            traffic_network: "255.25.255.0",
            traffic_int" "eth2",
        },
        FUNC01b: {
            ip: "10.0.0.2",
            fqdn: "Host01b",
            network: "255.25.255.0",
            int: "eth0",
            internal_ip: "10.1.0.2",
            internal_fqdn: "Host01bINT",
            internal_network: "255.25.255.0",
            internal_int" "eth1",
            traffic_ip: "10.2.0.2",
            traffic_fqdn: "Host01bPROD",
            traffic_network: "255.25.255.0",
            traffic_int" "eth2",
        },

我的问题是我不能从该环境文件中动态地检索网络参数。我目前的env flile只定义了2个主机,但将会有几十个主机,而且可能会不断添加新的主机,所以我必须有一个食谱来应对它。所有的解决方案都将非常受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2018-01-29 05:03:56

这不是使用Chef的环境功能的方式。节点属性始终是每个节点的数据,环境级别的属性将用于为每个环境设置的每个节点的数据,例如在生产服务器的较长日志保留期间或在转移中的不同程序包版本。对于这种情况,您可能必须在每个节点中设置这些值(作为normal级别属性),因为没有应用于它们的角色或环境分组,它们是唯一的雪花数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48491196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档