通过中心配置管理服务器的工具。插件允许提供、配置和其他管理任务。
项目描述
概述
Ploy是一个命令行工具,用于提供、管理和控制服务器实例。有针对EC2(ploy_ec2)、FreeBSD Jails(ploy_ezjail)等的插件。您可以在ploy处理细节(如ssh指纹检查)的同时创建、删除、监视和ssh进入实例。其他插件提供高级功能,如集成Fabric(ploy_fabric)和Ansible(ploy_ansible)。
您可以在http://ploy.readthedocs.org/en/latest/找到详细文档
安装
ploy最好使用easy_install、pip或在buildout中使用zc.recipe.egg安装。它安装了两个脚本,即ploy和ploy-ssh。
配置
有关服务器实例的所有信息都位于ploy.conf中,默认情况下在etc/ploy.conf中查找。
插件
后端支持和更多功能通过插件实现。ploy 包含一个插件。
- plain
用于可通过 ssh 访问的常规服务器。
您可以使用 ploy -v 查看当前安装中可用的插件。
Plain
使用 plain 实例,您可以将有关服务器的信息放入配置文件中,以利用一些 ploy 功能,如 ssh 指纹检查和 Fabric 集成等插件。
选项
- host 或 ip
(必需) 服务器的主机名或地址。
- user
ssh 连接的默认用户。如果设置为 *,则使用当前本地用户名。
- port
ssh 端口号。
- ssh-host-keys 或 ssh-fingerprints
(必需) 服务器公 ssh 主机密钥(或指纹)。
- ssh-host-keys
如果可用,最好使用公 ssh 主机密钥。您可以指定路径,或直接输入内容(ssh-rsa AAAA...)。多个主机密钥可以按行指定,或用逗号分隔。
- ssh-fingerprints
如果设置为 ask,则启用手动交互式验证。如果设置为 ignore,则完全不执行验证!多个指纹可以按行指定,或用逗号分隔。指纹的格式可以是16字节作为用冒号分隔的十六进制数,或以 MD5: 前缀的相同16字节,或者是哈希类型,后跟冒号和 base 64 编码的哈希摘要。
- password-fallback
如果此布尔值为真,则如果 ssh 密钥不起作用,则启用密码回退。默认情况下是关闭的。您可能需要多次输入密码。第一次是由 paramiko 引起的,这是始终发生的,但会被记住。其他时间是由 ssh 命令行工具触发的。
- password
永远不要直接使用此密码!如果启用密码回退,则使用此密码。这主要用于 Fabric 脚本,这些脚本有其他获取密码的方法。一个用例是从 FreeBSD 的 mfsBSD 发行版中进行引导,其中密码是固定的。
- proxycommand
使用 ploy-ssh 命令时,在 ssh 的 ProxyCommand 选项中使用的命令。可以使用一些变量
- path
ploy.conf 文件的目录。如果您想将 ploy-ssh 命令本身用作代理,则很有用。
- known_hosts
ploy 管理的 known_hosts 文件的绝对路径。
- instances
其他实例的变量。例如:instances.foo.ip
除了这些,还可以使用实例本身的变量。
一个完整的代理命令示例
proxycommand = {path}/../bin/ploy-ssh vm-master -W {ip}:22
- ssh-key-filename
要使用的私有 ssh 密钥的位置。
- ssh-extra-args
传递给 ssh 的由换行符分隔的设置列表。
示例
ssh-extra-args = ForwardAgent yes
SSH 集成
ploy 提供了一个名为 ploy-ssh 的附加工具,用于轻松执行针对命名实例的基于 SSH 的操作。特别是,它封装了整个 SSH 指纹 机制。例如,EC2 实例通常寿命短暂,通常会触发警告,尤其是如果您正在使用弹性 IP。
注意:它并非简单地关闭这些检查,而是通过后端插件提供的机制透明地更新自己的指纹列表。
最简单的情况是直接与一个实例建立SSH会话。您可以使用ploy工具的ssh子命令,如下所示
ploy ssh INSTANCENAME
或者您可以直接使用ploy-ssh命令,如下所示
ploy-ssh INSTANCENAME
后者是为了支持scp和rsync而提供的。以下是一些示例,您应该已经了解了
scp -S `pwd`/bin/ploy-ssh some.file demo-server:/some/path/ rsync -e "bin/ploy-ssh" some/path fschulze@demo-server:/some/path
实例名称
实例有一个id,这是配置中冒号后面的部分。它们还有一个唯一的id,其形式为[masterid]-[instanceid]。其中[masterid]取决于插件。对于普通实例,它是plain。而[instanceid]是实例的id。因此,如果您有如下配置
[plain-instance:foo] ...
那么实例的唯一id就是plain-foo。
宏展开
在ploy.conf中,您可以使用宏展开以使配置文件更简洁。它看起来是这样的
[ec2-instance:demo-server2] <= demo-server securitygroups = demo-server2 [ec2-securitygroup:demo-server2] <= demo-server
除了后端插件的一些特殊情况外,指定宏的所有选项都会被复制。
如果您想从其他类型的选项复制数据,您可以在宏名称中添加一个冒号。如果您想为类似这样的实例提供一个基础,这很有用
[macro:base-instance] keypair = default region = eu-west-1 placement = eu-west-1a [ec2-instance:server] <= macro:base-instance ...
配置值的按摩
插件和ploy会将配置中的某些字符串值按摩成其他类型,并进行格式化或扩展。
您也可以自己使用它,这对于Fabric集成和其他事物非常有用。
以下是一个简单的示例
[section] massagers = intvalue=ploy.config.IntegerMassager boolvalue=ploy.config.BooleanMassager intvalue = 1 boolvalue = yes
如果您现在从例如fabric任务中访问这些值,您会得到正确的类型而不是字符串。
上述语法只为此部分注册了按摩器。您可以使用此语法为其他部分或甚至部分组注册按摩器
massagers = [option]=[sectiongroup]:import.path.to.massager [option]=[sectiongroup]:[section]:import.path.to.massager
各部分具有以下含义
- [option]
这是应该被按摩的选项的名称
- [sectiongroup]
部分组的名称。这是部分中可选冒号之前的部分。为了匹配没有冒号的部分,请使用global。为了匹配所有部分,请使用*。
- [section]
应用于此按摩器的部分的名称。如果为空,则使用当前部分。
Buildout特定内容
您可以使用zc.recipe.egg设置自定义的configfile位置,如下所示
[ploy] recipe = zc.recipe.egg eggs = ploy arguments = configpath="${buildout:directory}/etc/", configname="servers.cfg"
变更日志
2.0.1 - 2023-06-19
修复ssh超时处理。[witsch, fschulze]
修复Python 3.x中的getargspec弃用警告。[kappeck, fschulze]
2.0.0 - 2022-08-17
移除对Python 3.6的支持。[fschulze]
添加对Python 3.10的支持。[fschulze]
2.0.0b5 - 2021-07-17
为具有多个主机的实例创建正确的配置副本。[fschulze]
使用format_exc在ssh命令中报告错误,以获取更多详细信息。[fschulze]
2.0.0b4 - 2020-05-13
修复[instance:...]部分的多个主机的关联。[fschulze]
2.0.0b3 - 2019-06-09
一些Python 3.x编码相关修复。[fschulze]
2.0.0b2 - 2019-06-03
为ssh连接添加5秒默认超时。[fschulze]
移除对Python 3.4的支持。[fschulze]
2.0.0b1 - 2018-02-06
支持YAML配置文件。[fschulze]
移除对ssh库的支持,仅支持paramiko。[fschulze]
移除对Python 2.6和3.3的支持。[fschulze]
1.5.2 - 2018-08-20
停止在Python 3.3上进行测试。[fschulze]
修复实例的多个主机的关联。[fschulze]
1.5.1 - 2017-12-17
修复在使用ssh-host-keys时自动获取指纹的问题。[fschulze]
1.5.0 - 2017-10-03
新增ssh-host-keys选项,允许直接设置主机密钥,强制paramiko使用特定密钥类型以避免指纹不匹配。[fschulze]
1.4.0 - 2017-10-02
允许实例实现通过get_fingerprints方法返回多个指纹。[fschulze]
支持除了rsa之外的其他密钥类型,因为paramiko > 2默认使用ed25519。[fschulze]
在指纹不匹配时输出更多关于使用密钥的信息。[fschulze]
1.3.1 - 2016-06-02
如果没有在实例配置中设置,则不从主服务器获取ssh-fingerprints。这修复了EC2、ezjail等自动获取指纹的问题。[fschulze]
1.3.0 - 2016-05-21
添加选项ssh-fingerprints,允许指定多个指纹。[fschulze]
支持新版的ssh-keygen输出,包括哈希类型,默认为SHA256。[fschulze]
1.2.1 - 2015-08-27
允许为每个实例指定多个主服务器。[fschulze]
1.2.0 - 2015-03-05
添加Executor辅助器来处理本地和远程命令执行。它还可以处理由用户ssh配置或ssh-extra-args选项启用的ssh代理转发。[fschulze]
1.1.0 - 2015-02-28
添加ssh-extra-args选项。[fschulze]
添加annotate命令,用于打印带有每个设置来源的配置。[fschulze]
允许在gzip压缩的启动脚本中自定义shebang。[fschulze]
1.0.3 - 2015-01-22
从我们的known_hosts文件中删除不良条目,以防止paramiko失败。[fschulze]
对所有ssh连接设置StrictHostKeyChecking=yes,以防止交互式询问。[fschulze]
1.0.2 - 2014-10-04
在终止实例之前询问。[fschulze]
修复代理实例某些情况下配置设置传播的问题。[fschulze]
在退出前关闭所有连接。这可以防止由打开的代理命令线程引起的挂起。[fschulze]
添加选项以记录调试输出。[fschulze]
为插件添加设置proxycommand的辅助器。[fschulze]
1.0.1 - 2014-08-13
修复纯实例在ssh连接失败时的错误输出。[fschulze]
1.0.0 - 2014-07-19
修复使用非标准ssh端口时删除不良主机密钥的问题。[fschulze]
将plain-master重命名为plain,以便实例的UID更友好。[fschulze]
1.0rc15 - 2014-07-16
仅从known_hosts中删除不良主机密钥,而不是完全清除。[fschulze]
删除了对proxyhost选项的支持。它会导致在ssh指纹丢失或无效时挂起和失败。[fschulze]
允许将空startup_script选项理解为不使用启动脚本。[fschulze]
1.0rc14 - 2014-07-15
允许将fingerprint设置为公钥主机密钥文件。[fschulze]
1.0rc13 - 2014-07-08
对于未安装插件的实例,提供更好的错误信息。[fschulze]
修复在ploy自身未安装时测试的问题。[fschulze]
1.0rc12 - 2014-07-08
使用plain conftest.py而不是pytest插件。[fschulze]
1.0rc11 - 2014-07-05
修复主实例的uid方法。[fschulze]
1.0rc10 - 2014-07-04
使用-v和--versions打印插件版本。[fschulze]
Python 3兼容性。[fschulze]
1.0rc9 - 2014-06-29
让插件通过list命令添加要显示的列表类型。[fschulze]
始终使用server和instance一致。[fschulze]
始终通过“[master_id]-[instance_id]”的形式以全名方式使实例可访问。如果不存在冲突,则还提供方便的短版本“[instance_id]”。[fschulze]
添加实例ID验证器,限制为字母、数字、破折号和下划线。[fschulze]
将名称从mr.awsome更改为ploy。[fschulze]
1.0rc8 - 2014-06-16
提供有关SSH连接失败的一些更多信息。[fschulze]
1.0rc7 - 2014-06-11
公开一些测试固定值,以便在插件中重用。[fschulze]
添加before_terminate和after_start钩子,并使插件能够轻松添加自己的钩子。[fschulze]
1.0rc6 - 2014-06-10
向ConfigSection类添加get_path方法。[fschulze]
1.0rc5 - 2014-06-09
在BaseInstance上提供辅助方法ssh_args_from_info,以从init_ssh_key提供的信息中获取运行ssh可执行文件的参数。[fschulze]
允许在bsdploy的帮助信息中覆盖命令名称。[fschulze]
使调试命令可用于没有启动脚本的实例。[fschulze]
实例可以提供一个get_port方法来返回默认端口。[fschulze]
在plain实例的init_ssh_key中捕获套接字错误,以打印调试所需的附加信息。[fschulze]
延迟设置配置文件路径,以便在插件中提前使用配置。参看 #29 [fschulze]
1.0rc4 - 2014-05-21
修复[instance:...]部分的massagers。[fschulze]
在ConfigSection.copy中复制massagers,以便在启动脚本中的覆盖能够正常工作。[fschulze]
1.0rc3 - 2014-05-15
仅在必要时获取指纹,这样可以加快连接速度,当known_hosts中的指纹仍然有效时。[fschulze]
1.0rc2 - 2014-05-14
将setuptools-git从setup.py移动到.travis.yml,它只适用于发布和测试。[fschulze]
更多测试。[fschulze]
1.0rc1 - 2014-03-23
测试、增强并记录通过配置添加massagers。[fschulze]
将ec2和fabric集成移入独立的插件。[fschulze]
现在,如果实例属于不同的主实例,则可以具有相同名称的实例,它们将使用主实例的名称作为其名称的前缀。[fschulze]
添加覆盖默认配置名称的可能性。[tomster]
改进proxycommand并记录其用法。[fschulze]
在主实例中使AWS实例可用。这改变了get_masters插件接口。[fschulze]
使用os.execvp而不是subprocess.call。这允许在proxycommand选项中使用assh,这大大简化了其使用。[fschulze]
添加命令插件钩子。[fschulze]
proxycommand选项的变量替换现在在instances字典下使其他实例可用,并添加known_hosts。[fschulze]
通过入口点而不是配置中的plugin部分来加载插件。[fschulze]
允许SSH对plain实例的密码回退。[fschulze]
为plain实例添加请求手动指纹验证的选项。[fschulze]
0.13 - 2013-09-20
在所有路径上使用os.path.expanduser,这样可以在配置值中使用~,例如aws密钥。[fschulze]
0.12 - 2013-09-11
不再需要在安全组名称中添加AWS帐户ID。[fschulze]
如果配置中没有定义,则从安全组中删除规则。[fschulze]
允许在配置内部添加自定义配置massagers。[fschulze]
支持块设备映射,以启用使用多个临时磁盘。[fschulze]
在ec2和平凡实例上添加do方法,允许调用fabric命令。[fschulze]
在ec2-master部分中使用PathMassager对access-key-id和secret-access-key进行操作。这可能会破坏这些选项的现有相对路径。[fschulze]
添加对EBS引导实例的支持。[fschulze]
添加 ssh-key-filename 选项以指向 ec2 和普通实例的私钥。 [fschulze]
修复 Fabric 集成以支持 Fabric 的较新版本。 [fschulze]
支持 proxycommand 选项用于普通实例。这也导致了插件 init_ssh_key API 的变化。 [fschulze]
支持从 ~/.ssh/config 中读取 ProxyCommand 用于普通实例。需要 Fabric 1.5.0 和 Paramiko 1.9.0 或更高版本。 [fschulze]
0.11 - 2012-11-08
根据使用的 Fabric 版本支持 ssh 和 paramiko 库。 [fschulze]
0.10 - 2012-06-04
添加 ec2-connection,有助于编写不需要连接到服务器但需要访问配置和 AWS 的 Fabric 脚本(如上传内容到 S3)。 [fschulze]
修复使用除 root 之外的用户名进行 do 和 ssh 命令时出现的多个问题。 [fschulze]
要求 Fabric >= 1.3.0。 [fschulze]
要求 boto >= 2.0。 [fschulze]
添加启动脚本选项的钩子。 [fschulze]
添加配置钩子的可能性。 [fschulze]
重构以启用不同虚拟化或云提供商的插件。 [fschulze]
添加了大量测试。 [fschulze]
0.9 - 2010-12-09
现在重写也将影响服务器创建,而不仅仅是启动脚本。 [fschulze]
添加了 list 命令,目前仅支持列出 snapshots。 [fschulze]
添加了 delete-volumes-on-terminate 选项,在实例终止时删除从快照创建的卷。 [fschulze]
添加了对实例启动时从快照创建卷的支持。[natea, fschulze]
添加了对 ~/.ssh/config 的支持。这有点受限,因为 paramiko 配置解析器不太好。[fschulze]
添加了 help 命令,提供了一些 zsh 自动补全的信息。[fschulze]
0.8 - 2010-04-21
对于 do 命令,Fabric 选项 reject_unknown_hosts 和 disable_known_hosts 现在默认为 true。[fschulze]
允许添加普通服务器以供 ssh 和 do 命令使用。[fschulze]
重构 ssh 连接处理,仅在需要时打开网络连接。现在任何不需要连接的 fabric 选项都会立即运行(如 -h 和 -l)。[fschulze]
修复了 start 后的状态输出。[fschulze]
0.7 - 2010-03-22
在 Server 类中添加了 snapshot 方法,以便从 fabfiles 中轻松访问。[fschulze]
0.6 - 2010-03-18
现在可以在 [aws] 部分中指定包含 aws 密钥的文件,并使用 access-key-id 和 secret-access-key 选项。[fschulze]
添加了 -c/--config 选项以指定要使用的配置文件。[fschulze]
添加了 -v/--version 选项。[tomster (Tom Lazar), fschulze]
现在在启动脚本中的任何变量展开之前,将移除启动脚本中的注释行。[fschulze]
使用 argparse 库代替 optparse 进行更强大的命令行解析。[fschulze]
0.5 - 2010-03-11
通过在文件名中查找 gzip: 前缀来压缩启动脚本。[fschulze]
添加了类似于 zc.buildout 1.4 的宏扩展。[fschulze]
0.4 - 2010-02-18
在 status 中检查控制台输出,并告知用户。[fschulze]
在尝试 ssh 连接到不可用服务器时,显示友好消息而不是堆栈跟踪。[fschulze]
如果启动脚本以#!/bin/sh或#!/bin/bash开头,则删除注释行。[fschulze]
删除了start和debug命令的-r选项,并用更通用的-o选项替换。[fschulze]
使启动脚本可选(不是所有AMIs都支持它,特别是Windows AMIs)。[fschulze]
stop命令实际上现在只停止一个实例(仅适用于从EBS卷启动的实例),而新的terminate命令现在执行之前stop所做的工作。[fschulze]
当没有控制台输出可供ssh指纹验证时,提供更好的错误信息。[fschulze]
修复了文档中的缩进。[natea (Nate Aune), fschulze]
0.3 - 2010-02-08
删除了do命令输出的[host_string]前缀。[fschulze]
0.2 - 2010-02-02
快照会自动获取包含日期和卷ID的描述。[fschulze]
现在可以使用ssh命令与scp和rsync一起使用。[fschulze]
0.1 - 2010-01-21
初始发布 [fschulze]
ploy-2.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2868ad8ab5a348532daeb139a49fbfddc5a783ef1dc878fbe28e0a102d582faf |
|
MD5 | 993fc5460a31ba7bd524aac7d5b5c16d |
|
BLAKE2b-256 | 38dadb4e581f30766588c1b07686366e019d86b50eff1dcbf08b0c370dbb4db2 |
ploy-2.0.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 55240de7393090945f728a31123dea2d131c07261c7b071a361a4de7f6ce8e2a |
|
MD5 | 248aac9cb6ac46f6fbc3f69b29900337 |
|
BLAKE2b-256 | 607b268e2beba0263a8d20ba632f094d4d6cac1c618fbede8fa066b644550cb8 |