【问题标题】:Not all states from top.sls will be applied in Saltstack并非 top.sls 中的所有状态都将应用于 Saltstack
【发布时间】:2020-04-27 10:30:04
【问题描述】:

我的 Saltstack 及其 top.sls 有问题。不幸的是,并非我在 top.sls 中的所有状态都将应用于 minion。

这是我的 top.sls

  # master top.sls
base:
  'G@salt_control:true':
    - automount
    - chrony
    - columbus
    - db_db2
    - db_hana_tdi
    - db_maxdb
    - db_ora
    - db_ora-nonsap
    - db_sybase
    - dnsmasq
    - facts
    - grub
    - iptables_rule
    - lama_sync
    - ldap_hosts
    - ldap_services
    - logrotate
    - lvm
    - nsswitch
    - ntp
    - company_base
    - company_profile
    - pam_krb5
    - pam_ldap
    - postfix
    - rear    
    - resolv
    - rsyslog
    - salt-minion
    - sap_cc
    - sap_ci
    - sap_di
    - sap_trx
    - sap_wd
    - ssh
    - sssd
    - systemd
    - sysstat    
    - tsm    
    - userdef    
    - zypper    
  'G@cpuarch:ppc64le':
    - lpar2rrde

如果我在服务器上运行 highstate,则不会应用所有状态。 我可以毫无问题地自己运行任何状态。例如,状态“company_base”将不会通过运行 highstate 来应用。如果我单独应用它,没有问题。

当我运行“salt-call state.show_top”时,状态也会显示出来。

这是我的 Salt Master 配置:

top_file_merging_strategy: same

fileserver_backend:
  - git
  - roots

state_top_saltenv: base
gitfs_remotes:
  - git@gitserver:team/salt.git:
    - saltenv:
      - base:
        - ref: master
      - dev:
        - ref: development

我奴才的谷物(/etc/salt/grains):

salt_control: true

这是 company_base 的内容:

{% from "company_base/map.jinja" import company_base with context %}

##
# add companyrpm signing key
company_rpm_signing_key:
  cmd.run:
    - name: rpm --import http://repo.company.lan/pub/RPM-GPG-KEY-COMPANY
    - unless: "rpm -q gpg-pubkey | grep -q gpg-pubkey-XXXXX-XXXXXX"

##
#  install company packages
company.scripts:
  pkg.installed:
    - name: company-dep-scripts
    - refresh: true

##
# install uc4
uc4_packages:
  pkg.installed:  
    - pkgs:
      - uc4

##
#  install default packages
default_base_packages:
  pkg.installed:  
    - pkgs:
{% set pkg_list = company_base.pkgs.get(grains.cpuarch) %}
{% for pkg in pkg_list %}
      - {{ pkg }}
{% endfor %}


getroot_sudo:
  file.managed:
    - name: /etc/sudoers.d/01-admin
    - contents: 
      - "# salt managed {{ sls }}"
      - "%basis   ALL=NOPASSWD:/bin/su - admin"
      - "admin ALL=(ALL) NOPASSWD:ALL"
    - user: root
    - group: root
    - mode: 440

神社地图:

{% set company_base = salt['grains.filter_by']({
    'Suse': {
        'pkgs': {
          'x86_64': [
            '"hostinfo"',
            '"tcpdump"',
            '"uc4"',
            '"getroot"',
            '"libX11-6-32bit"',
            '"company-dep-pa-001"',
            '"pmg_scripts"',
            '"company-dep-scripts"',
            '"pam_ssh"',
            '"psmisc"',
            '"telnet"',
            '"tcsh"',
            '"libgcc_s1"',
            '"libatomic1"',
          ],
          'ppc64le': [
            '"hostinfo"',
            '"tcpdump"',
            '"uc4"',
            '"getroot"',
            '"company-dep-pa-001"',
            '"pmg_scripts"',
            '"company-dep-scripts"',
            '"psmisc"',
            '"telnet"',
            '"tcsh"',
            '"libgcc_s1"',
            '"libatomic1"',
          ],
        },
    },
} ) %}

有什么想法吗?

【问题讨论】:

  • 你能提供company_base的净化内容吗?
  • 您在运行 highstate 时是否遇到任何错误或堆栈跟踪?
  • 您好 Utah_Dave,感谢您的回复。我刚刚在最上面的帖子中添加了州代码。谢谢。
  • 登录到 minion 时运行 salt-call state.apply -l debug,然后发布任何堆栈跟踪或错误。谢谢!
  • salt-call state.highstate -l debug 可能会更好,因为这是 highstate no 的问题?

标签: salt-stack


【解决方案1】:

我怀疑这是由于您通过 gitfs 定义了多个环境,但您的顶级文件中只有 base

根据您的配置,尝试将 base: 替换为 {{ saltenv }}:(在所有分支中),以便正确映射而不与其他任何内容合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多