命令行界面¶
本页记录了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的文档提到 tasks
或 tasks.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承载的命令。