跳转到主要内容

用于远程部署、配置和维护FreeBSD jail的工具

项目描述

BSDploy – FreeBSD jail部署

BSDploy是一个综合性的工具,可以远程FreeBSDjail主机和jail

其主要设计目标是降低可重复的jail设置障碍。

您鼓励在产品主机上执行更新,而不是更新您的设置描述,测试它与相同配置的预发布场景,直到它按预期工作,然后有信心将更新的配置应用到生产环境中。

主要功能

  • 部署 从头开始完整jail主机

  • 描述 一个或多个jail主机及其jail的规范配置

  • 声明性配置 – 将Ansible playbooks应用到主机和jail

  • 强制维护 – 在主机和jails上运行 Fabric 脚本

  • 使用 ZFS 存储池和文件系统全磁盘加密 进行配置

  • 模块化供应,带有适用于 VirtualBoxAmazon EC2 的插件,并支持更多架构。

工作原理

BSDploy 以名为 ploy 的命令行工具的形式出现,它安装在所谓的 控制主机(通常是您的笔记本电脑或台式机)上,然后您可以使用它控制一个或多个 目标主机。BSDploy 在目标主机上仅安装 Python 和 ezjail – 其他所有内容都保留在控制主机上。

示例会话

以下是一个简化的在 Amazon EC2 实例上的 jail 内部简单网站的引导过程的示例

# ploy start ec-instance
[...]
# ploy configure jailhost
[...]
# ploy start webserver
[...]
# ploy configure webserver
[...]
# ploy do webserver upload_website

两全其美

结合声明性方法来设置系统的初始状态,以及命令式方法来提供对该状态的维护操作,具有显著的优势。

  1. 由于命令式脚本可以运行在一个良好的定义环境中,因此您可以保持它们简短而紧凑,而无需担心所有那些边缘情况。

  2. 由于playbooks不需要担心执行更新或其他任务,因此您不必在它们中充斥着诸如 restartedupdated 或 – 更糟糕的是 – 如 shell 命令之类的非状态。

内部原理

BSDploy 的范围非常宏大,因此它自然不试图自己完成所有工作。事实上,BSDPloy 只是一个相当薄、略有偏见的现有优秀工具的包装。

除了上述提到的 Ansible 和 Fabric 之外,它还在主机上使用 ezjail 来管理jails,并在客户端使用 ployground family 的众多成员来处理几乎所有其他任务。

完整文档

完整文档托管在 RTD 上。

更改

3.0.0 - 2022-08-17

  • [功能] 支持 Python 3.10。

3.0.0b4 - 2020-09-08

  • [功能] 支持使用 bootstrap-password 选项。

  • [功能] 允许通过 bootstrap-destroygeom 覆盖 destroygeom

  • [功能] 允许通过 bootstrap-packages 覆盖引导过程中安装的软件包。

  • [修复] 修复了 mfsbsd 引导脚本中 devfs 设备的路径。

3.0.0b3 - 2019-06-09

  • [功能] 支持 Ansible >= 2.4.x 的 Python 3.x。

  • [功能] sysrc 模块支持 dst 选项,以使用除默认 /etc/rc.conf 之外的其他文件。

  • [更改] 将 bootstrap-host-keys 重命名为 bootstrap-ssh-host-keys

  • [更改] 重新引入 bootstrap-ssh-fingerprints 以允许覆盖引导过程中的 ssh-fingerprints

3.0.0b2 - 2018-02-11

  • [更改] 在引导过程中自动生成缺失的 ssh 主机密钥之前询问。

  • [更改] bootstrap-files 的默认位置从 [playbooks-directory]/bootstrap-files 更改为 [playbooks-directory]/[instance-uid]/bootstrap-files

  • [更改] 将 firstboot-update 重命名为 bootstrap-firstboot-update 以匹配其他变量。

3.0.0b1 - 2018-02-07

  • [更改] 切换到使用 ploy 2.0.0 和 Ansible 2.4.x。

  • 如果更具体的[master-name]-[instance-name]/fabfile.py不存在,则当[instance-name]/fabfile.py存在时,将设置fabfile选项。

  • [修复] 尊重mfsbsd的boottrap-packages设置。

2.3.0 - 2017-11-13

  • [修复] 修复pf循环冗余锁定问题。感谢@igalic报告和修复此问题。

  • [特性] 在bootstrap中添加ed25519支持,这是paramiko>=2所必需的。您应该检查您的宿主机上是否存在您可能想要复制到bootstrap文件目录的ssh_host_ed25519_key*文件,与其它ssh_host_*_key*文件一起。

  • [更改] 移除了本地rsa1主机密钥生成。

2.2.0 - 2016-11-08

  • [特性] 添加fabric助手以在宿主机、jails中以及bsdploy风味中保持pkg更新。

  • [特性] 通过在ez-master定义中将bootstrap设置为digitalocean来支持在Digital Ocean上启动。

  • [修复] 通过在ez-master定义中设置jails_zfs_root来允许ezjail使用非默认的zfs根。

2.1.0 - 2015-07-26

  • [特性] 启用jail host的rc.conf中的jail_parallel_start。

  • [修复] 如果名称匹配,则在zpool ansible模块中导入现有的zpool。

  • [修复] 在zpool ansible模块中首先尝试附加geli设备,如果它已经存在,则只有在失败时才从头创建。

  • [修复] 在zpool ansible模块中正确处理多个geli加密设备。

  • [修复] 在启动过程中也尊重ploy_jail_host_pkg_repository变量(不仅仅是jailhost配置)。

  • [特性] 在bootstrap过程中复制的文件可以使用ploy vault命令进行加密。这对于bootstrap-files中的私有ssh主机密钥非常有用。

  • [修复] 修复了virtualbox默认设置的设置,以便可以正确覆盖。

  • [特性] 添加了新变量:ploy_jail_host_cloned_interfaces/ploy_jail_host_default_jail_interface,以提供更多关于网络接口设置的灵活性。

  • [更改] 放弃对Ansible版本< 1.8的支持(现在支持1.8.x和1.9.x)。

  • [修复] 在安装ezjail自身时,尊重代理设置,而不仅仅是安装ezjail运行期间(感谢mzs114! https://github.com/ployground/bsdploy/pull/81)。

2.0.0 - 2015-03-05

  • [特性] 添加了对http代理的支持。

  • [更改] 默认禁用pkg的auto update功能。

  • [特性] 添加了对firstboot-freebsd-update的支持(默认禁用)。

  • [更改] [向后不兼容] 从ipfilter切换到pf - 您必须将任何现有的ipnat_rules转换为新的pf_nat_rules

  • [特性] 为VirtualBox实例提供默认值(减少了模板化)。

  • [修复] 设置完整的/etc/ntp.conf而不是尝试篡改现有的一个。

  • [特性] 支持作为非root用户进行配置(见https://github.com/ployground/bsdploy/issues/62)。

  • [更改] 转换为语义版本控制(见http://semver.org)。

1.3 - 2014-11-28

  • [弃用] rsync_project在所有情况下都不工作,打印警告。

  • [特性] 添加了rsync助手,它是对rsync命令的小型包装。

  • [修复] 修改/usr/local/etc/pkg/repos/FreeBSD.conf的格式,以便正确识别软件包仓库。

  • [更改] 在所有地方使用季度软件包仓库。

1.2 - 2014-10-26

  • [特性] 提供fabfile的默认和约定赋值。

  • [文档] 记录EC2实例的配置。

  • [修复] 修复rc.conf中geli设置的字符串转义。

  • [特性] 使sshd监听地址可配置。

  • [修复] 修复zfs_auto_snapshot角色中周期性脚本的权限。

  • [文档] 描述如何为mfsBSD使用http代理。

1.1.1 - 2014-09-25

  • 在文档中将虚拟机的内存从512MB增加到1024MB。

  • 修复rc.conf中jail设置的转义问题,防止jail无法启动

1.1.0 - 2014-08-13

  • 将FreeBSD 10.0作为默认的引导和文档使用

  • 始终将模板的结果编码为UTF-8

  • 修复与Ansible 1.7的兼容性

1.0.0 - 2014-07-20

  • 添加了bsdploy.fabutils,其中包含rsync_project的包装器

  • 自动为fabric脚本设置env.shell。

  • 尽可能在引导过程中本地生成ssh主机密钥。

  • 如果本地存在ssh主机密钥,则自动为ezjail master设置fingerprint选项。

1.0b4 - 2014-07-08

  • 删除自定义的ployploy-ssh控制台脚本。

1.0b3 - 2014-07-07

  • 使ploy_virtualbox成为可选依赖项

1.0b2 - 2014-07-07

  • mr.awsome*依赖迁移到ploy*

  • 各种错误修复

  • 添加测试

1.0b1 - 2014-06-17

  • 首次公开发布

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

bsdploy-3.0.0.tar.gz (85.3 kB 查看哈希值)

上传时间

构建分发

bsdploy-3.0.0-py2.py3-none-any.whl (55.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持