命令行界面

本页记录了Fabric命令行界面的详细信息, fab .

选项和参数

注解

默认情况下, fab 支持所有与 Invoke's 'inv' program ;此处仅列出添加和覆盖!

例如,Fabric工具 --prompt-for-passphrase--prompt-for-login-password 因为它们是特定于ssh的,但它继承了一个相关的选项-- --prompt-for-sudo-password --来自invoke,它处理sudo自动响应问题。

-S, --ssh-config

采用路径作为运行时ssh配置文件进行加载。见 装载和使用 ssh_config 文件夹 .

-H, --hosts

采用逗号分隔的字符串,以串行方式列出应针对其执行任务的主机名。见 主机列表的运行时规范 .

-i, --identity

重写 key_filename 价值在 connect_kwargs 配置设置(由读取 Connection 最后进入帕拉米科;参见文档字符串 Connection 详情。

通常认为这与 ssh -i <path> ,即提供特定的运行时私钥文件。喜欢 ssh -i ,它构建了一个iterable字符串,可以多次给定。

违约: [] .

--prompt-for-passphrase

使结构提示“预先”将值存储为 connect_kwargs.passphrase 配置设置(由paramiko用于解密私钥文件。)如果不想在磁盘配置文件中或通过shell环境变量配置这些值,则非常有用。

--prompt-for-login-password

使结构提示“预先”将值存储为 connect_kwargs.password 配置设置(在通过密码进行身份验证时由Paramiko使用,在某些版本中还用于密钥密码。)如果不想在磁盘配置文件中或通过shell环境变量配置这些值,则非常有用。

查找和加载任务

fab 遵循与invoke相同的所有规则 collection loading ,唯一的例外是 fabfile 而不是 tasks . 因此,每当invoke的文档提到 taskstasks.py , Fabric 替代品 fabfile / fabfile.py .

例如,如果当前工作目录是 /home/myuser/projects/mywebapp 运行 fab --list 会使 Fabric /home/myuser/projects/mywebapp/fabfile.py (或) /home/myuser/projects/mywebapp/fabfile/__init__.py -python的导入系统处理这两个问题是一样的)。如果在那里找不到, /home/myuser/projects/fabfile.py 下一个是寻求;等等。

主机列表的运行时规范

虽然高级用例可能需要将事情掌握在自己的手中,但您可以合理地深入了解核心 --hosts 标志,指定给定任务应针对其执行的一个或多个主机。

默认情况下,执行是一个串行过程:对于命令行上的每个任务,对于给定给 --hosts . 想象一下简单打印的任务 Running <task name> on <host>! ::

$ fab --hosts host1,host2,host3 taskA taskB
Running taskA on host1!
Running taskA on host2!
Running taskA on host3!
Running taskB on host1!
Running taskB on host2!
Running taskB on host3!

注解

什么时候? --hosts 没有给出, fab 行为类似于调用的 command-line interface ,生成的常规实例 Context 而不是 Connections .

执行任意/特殊命令

fab 利用一个不太知名的命令行约定,可以以下方式调用:

$ fab [options] -- [shell command]

之后的一切 -- 变成临时的 Connection.run 调用,但不分析 fab 选项。如果已通过早期任务或核心CLI标志指定了主机列表,则此用法将类似于一行匿名任务。

例如,假设您想要一组系统的内核信息:

$ fab -H host1,host2,host3 -- uname -a

这样的命令相当于以下结构库代码:

from fabric import Group

Group('host1', 'host2', 'host3').run("uname -a")

大多数情况下,您只想在fabfile中写出任务(您使用过的任何一次,都可能再次使用),但此功能提供了一种方便、快速的方法,可以在利用预定义连接设置的同时冲掉ssh承载的命令。