首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Salt-Stack在top.sls中从salt '*‘state.apply中排除助手

Salt-Stack是一个用于自动化配置管理和远程执行任务的开源软件。它使用基于Python的配置文件和命令行工具来管理和控制大规模的服务器基础架构。

在Salt-Stack中,top.sls文件是用来定义Salt Master在执行state.apply命令时要应用的状态文件的顺序和范围。state.apply命令用于将指定的状态文件应用到目标主机上。

当在top.sls文件中使用salt '*' state.apply命令时,它会将指定的状态文件应用到所有的Minion(Salt客户端)上。然而,有时候我们可能希望在执行state.apply命令时排除一些Minion,这时可以使用排除助手(exclude helper)来实现。

排除助手是一种在top.sls文件中使用的过滤器,用于排除特定的Minion。它可以根据Minion的名称、Grains(Minion的属性)或其他条件来进行过滤。通过在top.sls文件中使用排除助手,我们可以灵活地控制哪些Minion会被state.apply命令影响。

以下是一个示例的top.sls文件,演示了如何使用排除助手来从state.apply命令中排除助手:

代码语言:yaml
复制
base:
  '*':
    - match: grain
    - exclude:
      - minion1
      - minion2
    - state.apply

在上述示例中,'*'表示匹配所有的Minion。match: grain表示使用Grains进行匹配。exclude下面的列表中列出了要排除的Minion的名称,这里是minion1minion2。最后,state.apply表示要应用的状态文件。

通过使用排除助手,我们可以根据具体需求灵活地控制Salt-Stack在执行state.apply命令时的影响范围,从而更好地管理和配置服务器基础架构。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例,实际选择使用哪些腾讯云产品取决于具体需求和场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Salt管理和部署Docker

Salt是一个开源配置管理和远程执行应用,Salt目地是简化中央系统管理和配置的管理。而Docker是一个开源应用自动部署项目,在软件容器中提供附加抽象层和操作系统虚拟化。 Docker和Salt都能让裸机服务器和云服务一样使用,Salt提供基础系统,而Docker能包容每个应用,提供微服务功能。 假设以下情况: 目标: 很多主机都需要部署Docker容器,而每个主机上有很多容器。 Not covered: 构建docker容器,通常和Jenkins 一起使用,然后推送到一个私人仓储或使用 Docker Hub. Salt有一个state modules 系统和execution module执行模块,状态是整个情况的表示,而执行模块是用来乏味系统内部执行的命令,但是不能从状态中执行。可见 salt docs. 1.设置变量 开始设置很多变量以后会用得着,使用pillars和 grains能让状态更易于重用,noofcontainers是用于设置启动多少个容器。 {% set name = 'node-demo' %} {% set registryname = 'jacksoncage' %} {% set tag = salt['pillar.get']('imagetag', "latest") %} {% set containerid = salt['grains.get']('id') %} {% set hostport = '808' %} {% set hostip = grains['ip_interfaces']['eth0'][0] %} {% set noofcontainers = range(10) ‰} 2.拉取docker image (docker pull) 使用一个 nodejs demo application 作为image, 我们需要从Docker Hub拉取。 {{ name }}-image: docker.pulled: - name: {{ registryname }}/{{ name }} - tag: {{ tag }} - force: True 3.停止旧的容器 如果有旧的容器在运行我们需要停止: {{ name }}-stop-if-old-{{ no }}: cmd.run: - name: docker stop {{ containerid }}-{{ name }}-{{ no }} - unless: docker inspect --format '{{ .Image }}' {{ containerid }}-{{ name }}-{{ nr }} | grep $(docker images --no-trunc | grep "{{ registryname }}/{{ name }}" | awk '{ print $3 }') - require: - docker: {{ name }}-image 4.去除旧容器 停止以后删除旧容器 {{ name }}-remove-if-old-{{ no }}: cmd.run: - name: docker rm {{ containerid }}-{{ name }}-{{ no }} - unless: docker inspect --format '{{ .Image }}' {{ containerid }}-{{ name }}-{{ nr }} | grep $(docker images --no-trunc | grep "{{ registryname }}/{{ name }}" | awk '{ print $3 }') - require: - cmd: {{ name }}-stop-if-old-{{ no }} 5.启动容器 通过docker run/docker.installed安装新容器,设置主机名 端口和环境变量: {{ name }}-container-{{ no }}: docker.installed: - name: {{ containerid }}-{{ name }}-{{ no }} - hostname: {{ containerid }}-{{ name }}-{{ no }} - image: {{ registryname }}/{{ name }}:{{ tag }} - ports:

04
领券