首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定主机名数组,如何根据木偶中的主机名生成一组文件?

给定主机名数组,如何根据木偶中的主机名生成一组文件?
EN

Stack Overflow用户
提问于 2015-04-24 15:45:37
回答 2查看 228关注 0票数 0

我不确定是否有办法在木偶中做到这一点,但这就是我想要做的。

根据这个木偶类的定义..。

代码语言:javascript
复制
class make_files (
        $rabbit_servers = ['rabbit-1','rabbit-2'],
        $mongo_servers = ['mongo-1','mongo-2'],
) {
...
}

..。生成文件..。

代码语言:javascript
复制
# pwd
/root/conf/hosts
# more rabbit-*
::::::::::::::
rabbit-1.cfg
::::::::::::::
define host {
        use                     linux-server
        host_name               rabbit-1
        alias                   Rabbit MQ host
        hostgroups              rabbit_hosts 
        address                 10.29.103.33 
        }
::::::::::::::
rabbit-2.cfg
::::::::::::::
define host {
        use                     linux-server
        host_name               rabbit-2
        alias                   Rabbit MQ host
        hostgroups              rabbit_hosts 
        address                 10.29.103.34 
        }
# more mongo-*
::::::::::::::
mongo-1.cfg
::::::::::::::
define host {
        use                     linux-server
        host_name               mongo-1
        alias                   Mongo DB host
        hostgroups              mongo_hosts 
        address                 10.29.103.31 
        }
::::::::::::::
mongo-2.cfg
::::::::::::::
define host {
        use                     linux-server
        host_name               mongo-2
        alias                   Mongo DB host
        hostgroups              mongo_hosts 
        address                 10.29.103.32 
        }

其中IP地址是对应主机的IP地址。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 17:13:08

我找到了解决办法..。

代码语言:javascript
复制
class make_files (
                $rabbit_servers = ['rabbit-1:10.29.103.33','rabbit-2:10.29.103.34'],
                $mongo_servers = ['ost-mongo-el7-001:10.29.103.31'],
) {
    define my_file ($content, $hostgroup) {
                $tuple = split($name, ':')
                $host_name             = $tuple[0]
                $file_name               = "/tmp/$host_name.cfg"
                $ipaddress               = $tuple[1]
                $config    = "define host {
         use                     linux-server
         host_name               $host_name
         alias                   $host_name
         hostgroups              $hostgroup 
         address                 $ipaddress
}"

        file { $file_name:
          ensure  => file,
          content => $config,
        }
    }
    $rabbit_content = join($rabbit_servers, ',')
    my_file { $rabbit_servers: content => $rabbit_content, hostgroup => 'rabbit_hosts' }
    $mongo_content = join($mongo_servers, ',')
    my_file { $mongo_servers: content => $mongo_content, hostgroup => 'mongo_hosts' }
}

..。我发现我需要稍微修改一下文件的内容。这可能不是最好的答案,但似乎奏效了。我愿意接受所建议的改进。

谢谢

票数 0
EN

Stack Overflow用户

发布于 2015-04-26 23:04:43

如果名称属于由木偶管理的节点,则可以使用PuppetDB直接从傀儡查询模块获取地址

代码语言:javascript
复制
$ipaddress = query_facts("hostname=$host_name", ['ipaddress'])['ipaddress']

代码未经测试,我不确定调用是否正确。

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

https://stackoverflow.com/questions/29851915

复制
相关文章

相似问题

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