将不同的参数传递给 Fabric 中的不同主机

2024-01-25

我正在编写一个脚本来在多个主机上启动负载生成实验。我可以编写一个 bash 脚本来启动多个 ssh 会话,但我希望使用更结构化的东西。由于我的大部分脚本都使用 Python,所以我想Fabric http://www.fabfile.org看起来是一个不错的选择。

唯一的问题是我需要使用每个命令传递少量主机特定数据(实际上只是一个 id 或计数器),并且我想并行运行它们。

换句话说,我想做类似以下的事情,其中​​每个主机的 host_num 都不同(可能只是递增)。

@parallel
def launch():
    with cd('/working/dir'):
        run("./start/script -id=%d", host_num)

这在 Fabric 中可能吗?如果没有,我可以使用其他工具来完成同样的事情吗?


您可以检查用户/主机。每个任务都知道它们当前运行的环境:

env.hosts = ['[email protected] /cdn-cgi/l/email-protection', '[email protected] /cdn-cgi/l/email-protection']

@task
def test():
    print '%(user)s@%(host)s' % (env)

    if env.host == 'host1.com':
        id = 1
    elif ...

    run('echo "%s"' % (id))

请随意以更优雅的方式编写它:)(一个建议是使用类似于 id 查找的 case 语句的字典)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将不同的参数传递给 Fabric 中的不同主机 的相关文章

随机推荐

  • quotRem 和 divMod 之间的区别什么时候有用?

    来自哈斯克尔报告 quot rem div 和 mod 类 如果 y 是 方法满足这些定律 非零 x quot y y x rem y x x div y y x mod y x quot整数除法是否被截断 趋于零 而结果div被截断为负无
  • 如何在React JS中动态更新MaterialUI DataGrid表

    这是我正在尝试做的事情的概要 当用户单击一行中的复选框时 该行将被保存以免被删除 通常用户将单击多行 一旦用户点击 清除记录 按钮 所有没有选中复选框的记录都会被删除 我得到了一些关于如何做到这一点的一般建议 并且我使用了给我的建议以及我自
  • Android studio 错误“检测到不支持的模块:以下模块不支持编译”

    我使用的是Android Studio 1 0 1 我的项目中有一个被其他模块引用的 java 模块 我已经从 SVN 上查过了但是现在每个 检测到不支持的模块 以下模块不支持编译 遗憾的是 您不能在一个项目中同时拥有非 Gradle Ja
  • 如何将 Comodo SSL 应用于 Kubernetes Ingress?

    我们购买了 Komodo SSL 证书 它有 5 个文件 我正在寻找有关如何将其应用到 Kubernetes Ingress 的指南 正如它所描述的文档 https kubernetes io docs concepts services
  • 如何避免 ion-option/ion-select 中的确定/取消按钮

    您好 如何避免离子选项中的 确定 和 取消 按钮 I need an output as the below image after clicking the ion option 我已经尝试了所有选项http ionicframework
  • 如何检测现有文件引起的System.IO.IOException?

    我想创建并打开一个文件 但前提是该文件不存在 我不想使用 File Exists 因为在创建同名文件后会切换线程 如何检查 System IO IOException 异常是否是由现有文件引起的 我不想解析错误消息 即使它可以像 index
  • 为什么 Heroku 每天都会重置我的文件“data.json”?

    我制作了一个discordJs 机器人 它将数据保存在文件中 一切都托管在 Heroku 上并且一切正常 但每天 Heroku 都会重置我的文件 为什么我不能每天保存我的文件 以下是 Heroku 文档的完整解释 Heroku 文件系统是短
  • 真正停止元素绑定 - 取消元素绑定 - AngularJS

    我正在尝试找出如何阻止DOM来自角度范围内的绑定数据的元素 我知道您可以使用 if 语句等来做到这一点 但是有没有一种真正且永久的方法来停止绑定角度元素但保留添加的内容 所以说我有这个 div class Welcome div 我更改了模
  • CSS Firefox - 如何停用虚线边框(firefox 单击指示器)?

    对于我最近的网络项目来说 这个点击指示器是一个令人厌恶的部分 我讨厌这个 我如何对我的 Firefox 浏览器说他不应该标记单击的对象 如果您的菜单项不是输入元素 例如按钮 您可以使用 CSS 隐藏它 如下所示 element outlin
  • Unity3D Sprite ...但是单面的?

    团结优秀Sprites Unity优秀的新精灵 http docs unity3d com ScriptReference Sprite html 除其他有价值的优点外 实际上是双面的 在 2D 或 3D 用例中 您可以翻转这些小混蛋 但仍
  • Service Fabric 无状态服务器自定义 UDP 侦听器

    我们正在尝试定义一个 Service Fabric 无状态服务 用于侦听 UDP 数据 我们正在与 Microsoft 合作 他们表示支持 TCP 并且我应该设置 TCP 以下是 ServiceManifest xml 文件的片段
  • 左浮动 div 放置在另一个 div 下面 [重复]

    这个问题在这里已经有答案了 我有两个 div 而 div 1 向左浮动 而 div 2 向右浮动 我正在创建一个响应式布局当视口发生变化时 div 1 将移至 div 2 下方 我通过 MS Paint 创建了一个简单的图像 以便更容易地进
  • 如何在程序中最好地显示大量项目

    我目前拥有 952 件大型收藏品 我将其中大约 500 个以上显示为多边形 这在我的应用程序中造成了一些明显但可管理的延迟 我可以用来同时显示这些项目的最轻量级的控件 元素是什么 DrawingVisuals 提供了比 Paths 更轻量级
  • 使以编程方式创建的 jQuery UI 日期选择器与 CSS 范围一起工作

    这解决了 jQuery UI 的限制not自版本 1 10 3 起已修复 jQuery UI 有一个主题滚轮 http jqueryui com themeroller 函数允许您设置 jQuery UI 小部件的样式 但有时您需要在一页上
  • 使用 Google 地理编码器/API 根据地址返回邻居

    有没有什么方法可以根据传入的地址 邮政编码 城市 州向 Google 地理编码器有效 准确地提取城市内的社区 每当我尝试通过 HTTP 理想解决方案 执行此操作时 它都会返回以下信息
  • 我可以要求内核填充(故障)一系列匿名页面吗?

    在Linux中 使用C 如果我通过以下方式请求大量内存malloc或类似的动态分配机制 很可能支持返回区域的大多数页面实际上不会映射到我的进程的地址空间 相反 每次我第一次访问其中一个分配的页面时都会发生页面错误 然后内核将映射到 匿名 页
  • 3D 国际象棋场上的 JavaFX 独立透视图

    我得到以下游戏窗口 http www directupload net file d 3598 b48lqpur png htm http www directupload net file d 3598 b48lqpur png htm
  • Workbox仅缓存时间戳到indexDb,如何拦截indexDb中的json数据?

    下面的路由定义将json数据作为MyCachedData存储在缓存存储中 而IndexDb只存储url和时间戳 workboxSW router registerRoute MyApi workboxSW strategies staleW
  • ANTLR 3 中 wikitext-to-HTML 的工作示例

    我试图在 ANTLR 3 中充实一个 wikitext to HTML 翻译器 但我一直陷入困境 您知道我可以检查的工作示例吗 我尝试了 MediaWiki ANTLR 语法和 Wiki Creole 语法 但无法让它们在 ANTLR 3
  • 将不同的参数传递给 Fabric 中的不同主机

    我正在编写一个脚本来在多个主机上启动负载生成实验 我可以编写一个 bash 脚本来启动多个 ssh 会话 但我希望使用更结构化的东西 由于我的大部分脚本都使用 Python 所以我想Fabric http www fabfile org看起