1

使用 puppet 时,我曾经做过类似以下的事情:

    class common_vars {
        $some_var = calculate_some_var()
    }

    class A {
        Class[common_vars] -> Class[A]
        do_something_with($common_vars::some_var)
    }

    class B {
        Class[common_vars] -> Class[B]
        do_something_else_with($common_vars::some_var)
    }

我现在正在 saltstack 中寻找类似的东西。

例如,我使用它来设置绑定到特定网络地址的网络服务。我首先设置网络,然后计算一些常用地址,然后设置网络服务。

我不想在每个状态文件中一遍又一遍地计算这些地址(不同的服务可能共享相同的地址),我想计算一次,然后再使用它们。

4

2 回答 2

1

这可能超出了 Salts YAML 渲染器。相反,您可以用纯 Python 编写 SLS,让您能够编写函数、类等并返回状态数据。例如:

some_var = lambda: 1 + 2    

def do_something():
    global(some_var)
    return some_var() + 5  # 8

def do_something_else():
    global(some_var)
    return some_var() + 10  # 13

def run():
    return {
        '/home/user/somefile.txt': {
            'file.append': [
                {'text': do_something()},
             ]
        },
        '/home/user/some_other.txt': {
            'file.append': [
                {'text': do_something_else()},
             ]
        },
    }
于 2013-03-28T10:45:46.090 回答
1

我会在 Salt's Pillar 中这样做。

这是一个演练:http ://docs.saltstack.com/topics/tutorials/pillar.html

于 2013-04-09T05:56:42.937 回答