AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[saltstack](server)

Martin Hope
Corentin L.
Asked: 2023-10-18 16:04:06 +0800 CST

使用反应器(盐)时超时

  • 5

我在盐中设置反应器时遇到了一些麻烦。这是我的配置:

reactor:
  - 'salt/minion/*/start':
    - /srv/reactor/start.sls

和我的/src/reactor/start.tls:

{% set minion_id = data['id'] %}
highstate-for-{{ minion_id }}:
  local.state.apply:
    - tgt: {{ minion_id }}

我有一台master和一台minion不同的计算机(都运行 3006.3,Master 运行 Alma 9,minion 运行 Fedora 38)。当我的小兵触发一个start事件时,它似乎正确启动了反应堆,但失败并显示Salt request timed out. 我尝试禁用防火墙但没有成功。

该命令salt 'minion-name' state.apply在 0.1 秒内起作用...我不知道为什么它不起作用...谢谢!

saltstack
  • 1 个回答
  • 32 Views
Martin Hope
rainer042
Asked: 2023-06-23 18:21:16 +0800 CST

如何访问状态文件中的角色主机列表?

  • 5

我通过定义角色来使用 salt,这些角色将状态列表映射到要应用状态的主机列表:

#/srv/pillar/base/top.sls:
{% set h = 'host1, host2,' %}
'L@{{ h }}':
    - roles.Servers

{% set h = 'host3, host4,' %}
'L@{{ h }}':
    - roles.newServers    
    
#/srv/salt/base/top.sls: 
base:
  'role:Server': # Mapping a host to a role can be found in: /srv/pillar/top.sls
    - match: pillar
    - mystate1         # "shared" statefile
    - mystate2

  'role:newServer':
    - match: pillar
    - mystate1         # "shared" statefile
    - mystate3

现在,在像下面的 mystate1.sls 这样的状态中,我想要改变状态所做的事情,这应该取决于选择 minion 的角色的主机列表。

# /srv/salt/base/mystate1.sls
newPkg:
  pkg.installed:
    - pkgs:
{% if  grains['id'] in roles[ 'Server' ] %}  # pseude code: check if 'id' is in hostlist for role 'Server'
    - mypackage1    # do this if the current host is in the hostlist of role 'Servers'
{% else %}
    - myNewPackage  # do that if the host is part of role 'newServers'
{% endif %}    

因此,我想检查调用状态的 minion 的状态是,minion 是否属于角色“Server”或“newServer”的主机列表。

任何想法?

saltstack
  • 1 个回答
  • 31 Views
Martin Hope
Dorian
Asked: 2021-11-25 06:14:30 +0800 CST

Salt:连接拒绝代理

  • 0

我遇到了安装在 HPC 集群上的 Salt 的问题。所有维护命令(即 salt 命令)均由master0. 要管理的奴才被命名为node0, node1, ..., node4。当我尝试在 minion 上安装软件包时(假设 python 的 numpy on node0),我收到以下错误:

[root@master0 ~]# salt 'node0' pkg.install python3-numpy
  *duplicate lines removed*
https://vault.centos.org/7.8.2003/os/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed connect to master0:3142; Connection refused"

上node0,文件/etc/yum.conf如下所示:

[main]
exclude=ibutils-libs*
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
proxy=http://master0:3142

据我了解,node0无法master0通过端口 3142 连接。确实,我可以在默认端口(我猜是 80)上卷曲master0,但不能在 3142 上:

[root@node0 ~]# curl 'http://master0:3142'
curl: (7) Failed connect to master0:3142; Connection refused
[root@node0 ~]# curl 'http://master0'
<!DOCTYPE html>
<html>
  *Some HTML stuff, not relevant here*
</body>
</html>

但我不知道我应该在哪里打开这个端口master0。

注意:在这里完成新手。老实说,我也不明白通过这个端口,但整个 HPC 结构是由外部服务提供商构建的,我只是尝试自己处理所有这些东西。

yum proxy centos7 saltstack
  • 1 个回答
  • 139 Views
Martin Hope
jbakker
Asked: 2019-11-28 09:40:06 +0800 CST

nftables 预路由的盐配置

  • 1

我正在尝试配置一个 nftables 规则,用于将流量从我的服务器转发到 LXC 容器,但是,dportnftables 不接受 salt states 模块呈现给定值的方式。我应该如何进行?

盐配置:

kevin-container-web-port-http:
  nftables.append:
    - family: ip
    - table: nat
    - chain: PREROUTING
    - priority: 100
    - iif: eth0
    - dport: '80, 443'
    - proto: tcp
    - to: '10.0.3.32'
    - jump: dnat

输出state.apply:

      ID: kevin-container-web-port-http
Function: nftables.append
  Result: False
 Comment: Failed to set nftables rule for kevin-container-web-port-http.
          Attempted rule was tcp dport { 80, 443 } dnat for ip.
          Failed to add rule "tcp dport { 80, 443 } dnat" chain PREROUTING in table nat in family ip.
 Started: 17:36:42.821866
Duration: 154.261 ms
 Changes:

尝试手动添加规则时:

$ nft add rule nat prerouting iif eth0 tcp dport 80 dnat 10.0.3.32
$ nft list table nat
table ip nat {
    chain PREROUTING {
        type nat hook prerouting priority -100; policy accept;
        iif "eth0" tcp dport { http, https } dnat to 10.0.3.32
    }

    ...

}
saltstack
  • 1 个回答
  • 220 Views
Martin Hope
guettli
Asked: 2019-08-27 03:27:59 +0800 CST

通过 salt-ssh 直接调用 state

  • 0

是否可以通过salt-ssh直接调用此状态?

vim:
  pkg.installed

我的意思是不创建 sls 文件?

saltstack
  • 1 个回答
  • 86 Views
Martin Hope
static
Asked: 2019-07-31 07:10:05 +0800 CST

在不知道密钥的情况下循环通过盐柱创建文件

  • 0

背景:我需要制作一个这样的 XML 文件:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="BaseOU" value="DC=myplace,DC=wan" />
    <add key="OurOU" value="OU=Users,DC=myplace,DC=wan" />
    <add key="EmailServer" value"email.server.com" />
    <add key="EmailRecipient" value"[email protected]" />
  </appSettings>
</configuration>

我想动态构建这个文件,这样我们就可以简单地向支柱添加新变量,而无需更改托管文件的 jinja 模板。我可以在不知道键的情况下遍历支柱键/值对吗?

例如,假设我的pillar.sls如下所示:

scriptvars:
  BaseOU: DC=myplace,DC=wan
  OurOU: OU=Users,DC=myplace,DC=wan
  EmailServer: email.server.com
  EmailRecipient: [email protected]

我创建了一个管理文件 C:\script-config.xml 的状态,源代码是一个jinja 模板,类似于:

<?xml version="1.0"?>
<configuration>
  <appSettings>
  {% for unknownPillarKey in pillar.get['scriptvars'] %}
    <add key="unknownPillarKey" value="{{ pillar['unknownPillarKey'] }}" />
  {% endfor %}
  </appSettings>
</configuration>

问题:如何在我的pillar.sls 中向scriptvars 添加一个新条目并让jinja 模板中的for 循环将其拾取(当我应用状态时——这不是关于信标/反应器的问题)并将其添加到托管文件?我认为问题在于我的 jinja for 循环或语法,但我在网上找不到任何信息。非常感谢您的任何见解。

saltstack
  • 1 个回答
  • 1099 Views
Martin Hope
user162988
Asked: 2019-03-02 10:55:11 +0800 CST

saltstack 相当于 puppet last_run_summary.yaml

  • 0

Salt 是否相当于 Puppet 的last_run_summary.yaml?如果不是,建议用什么方法来监控对单个盐奴执行成功或失败?

saltstack
  • 2 个回答
  • 62 Views
Martin Hope
guettli
Asked: 2019-01-18 02:14:37 +0800 CST

Salt:file.replace:ignore_if_missing 被忽略?

  • 0

我想启用这样的 fstp 服务器的日志记录:https ://serverfault.com/a/74234/90324

但是盐什么也没做。我把它简化为:

enable_logging_of_sftp:
  file.replace:
    - name: /etc/ssh/sshd_config
    - pattern: Sxxxxubsystem
    - repl: Syyyubsystem
    - ignore_if_missing: False

尽管如此,盐说:

      ID: enable_logging_of_sftp
Function: file.replace
    Name: /etc/ssh/sshd_config
  Result: True
 Comment: No changes needed to be made
 Started: 11:09:24.356010
Duration: 15.231 ms
 Changes:   

我不明白这一点。当然Sxxxxubsystem并Syyyubsystem没有在/etc/ssh/sshd_config。

由于 ignore_if_missing is missing is False (这是默认的任何方式),我想我应该收到一条错误消息。

pattern如果文件中且不repl在文件中,为什么没有错误消息?

由于我误读了文档,因此出现了上述问题。这是处理我的用例的后续问题:Salt: Raise Error if file.replace did not find anything to replace

saltstack
  • 1 个回答
  • 315 Views
Martin Hope
Janith
Asked: 2018-12-27 01:32:46 +0800 CST

如何将文件从master复制到salt-stack上的minions?

  • 5

我想将文件从盐栈主服务器复制到小服务器。我从https://stackoverflow.com/questions/27687886/copy-a-file-from-salt-master-to-minions找到了一个脚本。但我得到了一个错误。

copy_my_files:
  file.recurse:
    - source: salt://srv/salt/nginx.conf
    - target: /etc/nginx
    - makedirs: True

错误:-

  ID: copy_my_files
    Function: file.recurse
      Result: False
     Comment: Specified file copy_my_files is not an absolute path
     Started: 09:46:24.850682
    Duration: 1.473 ms
     Changes:

我已经为两者提供了正确的路径。

saltstack
  • 2 个回答
  • 13147 Views
Martin Hope
Edward Ned Harvey
Asked: 2018-07-04 16:02:21 +0800 CST

如何重新同步 saltstack?reposync 失败并显示错误消息“正在删除 [...],因为缺少 GPG 密钥。”

  • 4

在 RHEL 7.4 系统上,我添加了 salt-latest repo,如下所示:

yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

请注意,除其他事项外,这会创建以下两个 GPG 密钥文件:

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
/etc/pki/rpm-gpg/saltstack-signing-key

供以后参考,请注意 CentOS 密钥的指纹以 f4a80eb5 结尾:

# gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt

pub  4096R/F4A80EB5 2014-06-23 CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>
      Key fingerprint = 6341 AB27 53D7 8A78 A7C2  7BB1 24C6 A8A7 F4A8 0EB5

尝试重新同步下载:

mkdir /root/foobar

reposync --gpgcheck --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata

它失败并出现以下错误:

Removing babel-0.9.6-8.el7.noarch.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.i686.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.x86_64.rpm, due to missing GPG key.

因此,我手动下载了所有失败的文件(在 for 循环中)并检查其签名密钥的签名。它们都是一样的,所以这里只是其中之一:

wget http://repo.saltstack.com/yum/redhat/7/x86_64/latest/base/babel-0.9.6-8.el7.noarch.rpm

rpm -K babel-0.9.6-8.el7.noarch.rpm

babel-0.9.6-8.el7.noarch.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5)

请注意,该键PGP#f4a80eb5与上面引用的键匹配,F4A8 0EB5. 那么为什么它没有通过 gpg 检查呢?

我尝试过的事情包括:

  • 我编辑/etc/yum.repos.d/salt-latest.repo并更改了gpgkey=行。我对所有这三种变体都遇到了同样的失败。据我所知,换gpgkey=行没有效果:

    gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
    gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
    
  • 我尝试在reposync没有--gpgcheck. 它有效,但显然,以这种方式使用它是不好的。

    reposync --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata
    
  • 我想知道 reposync 是否因为太弱而拒绝使用密钥?MD5。但我想不出任何方式来证实或否认这一点。

  • 我想知道密钥是否真的有过期日期?但我也找不到任何方法来确认或否认这一点。

saltstack
  • 1 个回答
  • 4518 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve