【问题标题】:chef new web node recipe厨师新的网络节点食谱
【发布时间】:2014-07-19 04:42:24
【问题描述】:

我是一名厨师新手,正在研究“新网络节点”配方,该配方从头开始创建服务器并对其执行许多操作,直到达到所需状态。我把这部分做对了,到目前为止一切都很好,但是我还需要做另一项任务,这就是我在使用厨师来做这件事时感到困惑。 每当我创建新的 web 节点时,我还需要通过将新 web 节点的 ip 地址添加到该 php conf 文件上的变量字符串来编辑另一台服务器上的 php .conf 文件。

这是我目前做事的方式:

 # knife rackspace server create --server-name chef-node1 --node-name chef-node1 --flavor performance1-2 --image 042395fc-728c-4763-86f9-9b0cacb00701

创建服务器后,我将配方添加到它并在新节点上运行厨师客户端

# knife node run_list add chef-node1 recipe[new-web-node::default]
# knife ssh -a ipaddress 'name:chef-node1' 'chef-client'

我的问题是我将如何在另一台服务器上编辑该 php .conf 文件而不创建我必须在另一台服务器上手动运行的新配方? 怎么能一口气搞定?

【问题讨论】:

    标签: ip chef-infra knife


    【解决方案1】:

    使用search 根据某个角色、配方或属性搜索“另一个”节点。然后将其他节点的 IP 地址放入创建 php 配置文件的模板中。

    假设您的 Web 节点具有角色 web,那么您的“其他”节点上的此代码将为您提供您的第一个 Web 节点的 IP 地址:

    web = search(:node, "role:web")
    ip = web.first[:ipaddress]
    

    然后可以将其解析为模板。

    【讨论】:

    • 对,所以我像这样提取 ip 并将其放入“其他”节点的 conf 文件中。我将在明天进行测试。我是否必须使用此代码为“其他”服务器创建另一个配方,还是可以将其包含在我已有的配方中并在代码中指定以某种方式在“其他”节点上运行它?
    • 您需要在另一个节点上运行的另一个配方。
    最近更新 更多