【问题标题】:Manage custom, machine specific configuration files in Salt在 Salt 中管理自定义的、特定于机器的配置文件
【发布时间】:2016-03-21 14:43:55
【问题描述】:
我对大型基础设施的配置管理工具比较陌生。该公司将在 Linux 和 Windows 上使用Salt,但我猜这个问题与特定工具无关。
我不明白的是,假设我们在云中有 30 台机器,并为每台机器安装了几个自定义服务。版本可能不同,具体取决于客户订阅。每个服务都有一个配置文件,可以包含特定于机器的数据。如何使用 Salt、Puppet、Chef、Ansible 等工具更新这些服务的配置文件。
【问题讨论】:
标签:
chef-infra
ansible
puppet
salt
configuration-management
【解决方案1】:
我不了解 Salt,但一般来说,在配置管理工具中,多台机器的主机组具有相同的配置、模板和变量,用于为每台机器定制
例如,您可以为 host1 和 port=9999 为 host2 指定变量 port=8888,但 nginx-template 将是这样的:
server {
listen {{port}};
}
为两台服务器。
与机器特定数据示例相同的想法(ansible):
- name: start container with mon
docker:
name: test-mongo
state: reloaded
image: mongo
when: master_ip == ansible_default_ipv4.address
master_ip 是我的变量,ansible_default_ipv4.address 是 ansible 连接到此主机的 ip。
希望这会有所帮助。
【解决方案2】:
在大多数情况下,使用 Chef,您将使用 Erb 模板进行配置并根据节点属性进行插值。这些可以直接在节点本身上设置,或者您可以为每个客户创建一个角色并在其中设置客户特定的属性数据。