saltstack 可以做类似 Fabric 的事情吗?
Can saltstack do something similar to Fabric?
我是盐堆的新手。我安装了 saltstack。我可以 运行 "sudo salt '*' test.ping" 成功。
我正在尝试使用盐来代替 Fabric。我在 Fabric 中有一些 functions/procedures,我希望盐也能这样做。
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()
- Salt 可以代替 Fabric 吗?
- 我应该如何开始?我应该修改或创建哪个文件来定义这些执行?
- 我把这个定义文件放在哪里?
- 如何让 minion 到 运行 定义的函数,例如"commit"?
感谢您的帮助!
您可以将 Salt 用于配置管理和 ad-hoc 编排任务。您要查找的是 execution modules。这些是简单的 Python 文件,您可以将它们放在主目录的 <file_root>/_modules
目录中(通常类似于 /srv/salt/_modules
)。它们会被master自动拾取并分发给minionson-demand。然后,您可以在一个 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 提供的众多 already-built-in 执行模块之一。
执行模块需要放在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
我是盐堆的新手。我安装了 saltstack。我可以 运行 "sudo salt '*' test.ping" 成功。
我正在尝试使用盐来代替 Fabric。我在 Fabric 中有一些 functions/procedures,我希望盐也能这样做。
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()
- Salt 可以代替 Fabric 吗?
- 我应该如何开始?我应该修改或创建哪个文件来定义这些执行?
- 我把这个定义文件放在哪里?
- 如何让 minion 到 运行 定义的函数,例如"commit"?
感谢您的帮助!
您可以将 Salt 用于配置管理和 ad-hoc 编排任务。您要查找的是 execution modules。这些是简单的 Python 文件,您可以将它们放在主目录的 <file_root>/_modules
目录中(通常类似于 /srv/salt/_modules
)。它们会被master自动拾取并分发给minionson-demand。然后,您可以在一个 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 提供的众多 already-built-in 执行模块之一。
执行模块需要放在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