重用盐状态片段

时间:2018-02-24 09:17:38

标签: salt-stack

在我的salt状态文件中,我有几次出现的模式,包括定义远程存储库和导入gpg密钥文件定义,例如。

import_packman_gpg_key:
    cmd.run:
        - name: rpm --import http://packman.inode.at/gpg-pubkey-1abd1afb.asc
        - unless: rpm -q gpg-pubkey-1abd1afb-54176598

packman-essentials:
    pkgrepo.managed:
        - baseurl: http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/Essentials/
        - humanname: Packman (Essentials)
        - refresh: 1
    require:
        - cmd: import_packman_gpg_keygpg-pubkey-1abd1afb-54176598

我想把它们抽象为一个不同的状态,例如

packman-essentials:
    repo_with_key.managed:
        - gpg_key_id: 1abd1afb-54176598
        - gpg_key_src: http://packman.inode.at/gpg-pubkey-1abd1afb.asc
        - repo_url: http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/Essentials/
        - repo_name: Packman (Essentials)

它将依次扩展到上面的初始声明。我查看了自定义salt状态(请参阅https://docs.saltstack.com/en/latest/ref/states/writing.html#example-state-module),但我只找到了有关如何使用Python创建一个的参考资料。我正在寻找一个仅基于状态定义的方法,因为为我的特定问题编写代码看起来有点过分。

如何创建一个自定义状态,该状态重用我用来管理软件包存储库的模板?

1 个答案:

答案 0 :(得分:1)

这就是macros are for

以下是some heavily used by me constructs

的简单宏示例

但是在您的示例中,为什么要cmd.run导入密钥?
pkgrepo.managed似乎支持gpgkey选项下载密钥