Chef infra 在Salt中管理自定义的、特定于机器的配置文件

Chef infra 在Salt中管理自定义的、特定于机器的配置文件,chef-infra,ansible,puppet,salt,configuration-management,Chef Infra,Ansible,Puppet,Salt,Configuration Management,我对大型基础设施的配置管理工具相对较新。该公司将使用Linux和Windows,但我猜问题与特定工具无关 我不明白的是,让我们想象一下,我们在云中有30台机器,并且为每台机器安装了两个定制服务。版本可以不同,具体取决于客户订阅。每个服务都有一个配置文件,可以包含特定于机器的数据。如何使用Salt或Puppet、Chef或Ansible之类的工具更新这些服务的配置文件。我不知道Salt,但通常在配置管理工具中,有多台机器的主机组,具有相同的配置、模板和变量,以便为每台机器进行自定义 例如,您可以为

我对大型基础设施的配置管理工具相对较新。该公司将使用Linux和Windows,但我猜问题与特定工具无关


我不明白的是,让我们想象一下,我们在云中有30台机器,并且为每台机器安装了两个定制服务。版本可以不同,具体取决于客户订阅。每个服务都有一个配置文件,可以包含特定于机器的数据。如何使用Salt或Puppet、Chef或Ansible之类的工具更新这些服务的配置文件。

我不知道Salt,但通常在配置管理工具中,有多台机器的主机组,具有相同的配置、模板和变量,以便为每台机器进行自定义 例如,您可以为
host1
指定变量
port=8888
,为
host2
指定变量
port=9999
,但nginx模板如下所示:

server {
        listen       {{port}};
       }
对于两台服务器。 与机器特定数据示例(ansible)的想法相同:

其中,
master\u ip
是我的变量,
ansible\u default\u ipv4.address
是ansible连接到此主机的ip


希望这有帮助

对于Chef,您可以使用Erb模板进行配置,并在大多数情况下基于节点属性进行插值。这些可以直接在节点本身上设置,也可以为每个客户创建一个角色,并在其中设置特定于客户的属性数据

- name: start container with mon
  docker:
    name: test-mongo
    state: reloaded
    image: mongo
  when: master_ip == ansible_default_ipv4.address