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 / 问题 / 977299
Accepted
static
static
Asked: 2019-07-31 07:10:05 +0800 CST2019-07-31 07:10:05 +0800 CST 2019-07-31 07:10:05 +0800 CST

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

  • 772

背景:我需要制作一个这样的 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 1 个回答
  • 1099 Views

1 个回答

  • Voted
  1. Best Answer
    static
    2019-08-01T08:51:47+08:002019-08-01T08:51:47+08:00

    我找到了答案,这比我预期的要容易得多(不幸的是,在线搜索并没有太大帮助,因为柱子总是很好地讨论键和值)。

    它很简单,如下所示:

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

    重要说明: .items() 是用于盐的 python 3 版本。如果你使用的是 python 2 版本,你应该升级——现在是 2019 年。

    感谢这些为我指出正确的方向:

    https://stackoverflow.com/questions/31854153/how-to-get-key-value-in-salt

    如何使用盐堆从柱子中制造盐?

    • 0

相关问题

  • 如果 SaltStack 目录是 /srv/salt 的子目录,会有什么问题吗?

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