在 Salt 中管理自定义的、机器特定的配置文件
Manage custom, machine specific configuration files in Salt
我对大型基础设施的配置管理工具比较陌生。公司将 Salt 用于 Linux 和 Windows,但我想这个问题与特定工具无关。
我不明白的是,假设我们在云中有 30 台机器,并且为每台机器安装了几个自定义服务。版本可能不同,具体取决于客户订阅。每个服务都有一个可以包含机器特定数据的配置文件。如何使用 Salt、Puppet、Chef、Ansible 等工具更新这些服务的配置文件。
我不知道 Salt,但一般来说,在配置管理工具中,多台机器的主机组具有相同的配置、模板和用于每台机器自定义的变量
例如,您可以为 host1
指定变量 port=8888
,为 host2
指定变量 port=9999
,但 nginx 模板将是这样的:
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。
希望这对您有所帮助。
在大多数情况下,对于 Chef,您将使用 Erb 模板进行配置并根据节点属性进行插值。这些可能直接在节点本身上设置,或者您可以为每个客户创建一个角色并在其中设置特定于客户的属性数据。
我对大型基础设施的配置管理工具比较陌生。公司将 Salt 用于 Linux 和 Windows,但我想这个问题与特定工具无关。
我不明白的是,假设我们在云中有 30 台机器,并且为每台机器安装了几个自定义服务。版本可能不同,具体取决于客户订阅。每个服务都有一个可以包含机器特定数据的配置文件。如何使用 Salt、Puppet、Chef、Ansible 等工具更新这些服务的配置文件。
我不知道 Salt,但一般来说,在配置管理工具中,多台机器的主机组具有相同的配置、模板和用于每台机器自定义的变量
例如,您可以为 host1
指定变量 port=8888
,为 host2
指定变量 port=9999
,但 nginx 模板将是这样的:
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。
希望这对您有所帮助。
在大多数情况下,对于 Chef,您将使用 Erb 模板进行配置并根据节点属性进行插值。这些可能直接在节点本身上设置,或者您可以为每个客户创建一个角色并在其中设置特定于客户的属性数据。