python - saltstack 可以做类似 Fabric 的事情吗?

标签 python fabric salt-stack devops


我是 SaltStack 的新手。我安装了 saltstack。我可以成功运行“sudo salt '*' test.ping”。 我正在尝试使用 salt 来代替 Fabric。我在 Fabric 中有一些函数/过程,我希望 salt 也能这样做。

def commit():
    message = raw_input("Enter a git commit message: ")
    local("git add . && git commit -am '{}'".format(message))

def push():
    local("git push origin master")

def prepare():
    commit()
    push()
  1. Salt 可以用来代替 Fabric 吗?
  2. 我应该如何开始?我应该修改或创建哪个文件来定义这些执行?
  3. 我应该把这个定义文件放在哪里?
  4. 如何让 minion 运行定义的函数,例如“ promise ”?

感谢您的帮助!

最佳答案

您可以将 Salt 用于配置管理和临时编排任务。您要找的是 execution modules .这些是简单的 Python 文件,您可以将它们放在 <file_root>/_modules 中。 master 上的目录(通常类似于 /srv/salt/_modules )。它们将由 master 自动拾取并按需分发给 minions。然后,您可以在 minion 上调用它们(在 master 上使用 salt '<minion-id>' 或在 minion 上使用 salt-call)。

在您的情况下,您可以创建一个文件 deploy.py在您的模块目录中包含以下内容:

#!/usr/bin/python

def commit(message, cwd):
    __salt__['cmd.run']("git add . && git commit -am '{}'".format(message),
                        cwd=cwd)

def push(cwd):
    __salt__['cmd.run']("git push origin master",
                        cwd=cwd)

def prepare(message, cwd):
    commit(message=message, cwd=cwd)
    push(cwd=cwd)

__salt__['cmd.run'] 我在示例中使用的函数是 Salt 提供的众多内置执行模块之一。

执行模块需要放在master上,但会在minion上运行。除了使用现有的执行模块,如 cmd.run ,您可以释放其中的全部 Python 功能。

然后您可以从 Salt master 调用此脚本:

$ salt 'minion-id' deploy.prepare message='Some commit message' cwd=/path/to/git

或者,您也可以直接在 minion 上调用它:

$ salt-call deploy.prepare message='Some commit message' cwd=/path/to/git

关于python - saltstack 可以做类似 Fabric 的事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909426/

相关文章:

python - 在 Windows 7 上安装 Python Fabric 时出现问题

python Fabric : Keep permissions of executables when putting them to a remote machine

python - 如何计算滚动窗口中数据框的列中相同实例的数量

python - 使用并发 future 将多线程 Python 转换为多进程 Python

python - ldap3 python 搜索组成员并检索他们的 sAMAcountName (Active Directory)

python - 按顺序有效地排序列表

python - 解释(并使用)Fabric 本地命令的输出

powershell - 在变量 SaltStack 中使用 PS 命令

python - rhel 5.4 中的 salt 安装

regex - salt-stack 中的正则表达式匹配