saltstack:重用特定于minion的计算变量

时间:2013-03-24 07:14:59

标签: salt-stack

使用木偶时我常常做以下事情:

    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)
    }

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

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

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

2 个答案:

答案 0 :(得分: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()},
             ]
        },
    }

答案 1 :(得分:1)

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

以下是演练:http://docs.saltstack.com/topics/tutorials/pillar.html