JoergFiedler.freebsd-build-server
FreeBSD 构建服务器
创建一个 FreeBSD 服务器,提供一个可以运行的 'poudriere' 安装。有关更多信息,请参阅 FreeBSD 手册。
我希望有一个构建服务器,而不必一直运行。为此,所有软件包的包存储库和构建选项都同步到 S3。这样,在软件包构建和同步后,我可以销毁构建服务器。
在开始之前,你可以通过设置相应 Ansible 变量的路径来提供你自己的文件。
make.conf
(poudriere_build_options_file
)ports-list
(poudriere_port_list_file
)poudriere.key
(poudriere_key_file
)
你可以通过提供自己的文件版本并设置相应 Ansible 变量的路径来做到这一点。
考虑到这些,典型的工作流程如下:
- 创建一个新服务器(可以使用 Vagrant 文件)
- 应用该 Ansible 角色
- 登录
- 运行:
sudo build-ports
- 运行:
sudo upload-to-s3
- 登出
- 销毁服务器
简单易行。
要求
该角色旨在与新安装的 FreeBSD 使用,仅需一些小修改。你可以使用一个配有 VirtualBox 和 EC2 的 Vagrant Box。我创建了 这个 Vagrant 项目 来创建 VirtualBox 和 EC2 机器。
角色变量
aws_default_region
使用的 S3 区域。默认:''
。
aws_access_key_id
S3 访问密钥。默认:''
。
aws_secret_access_key
S3 秘密密钥。默认:''
。
s3_bucket_name
用于存储软件包和构建选项的桶。默认:''
。
s3_upload_path
在 S3 桶中放置 packages
和 build-options
文件夹的路径。默认:'/public/FreeBSD'
。
freebsd_mirror_server
用于设置 jail 的 FreeBSD 镜像服务器。默认:'ftp://ftp.freebsd.org'
。
poudriere_ssl_prefix
软件包签名密钥应保存的路径。默认:'/usr/local/etc/ssl'
。
poudriere_key_file
用于签署软件包的私钥。请更改为你自己的密钥。默认:'poudriere.key.default'
。
poudriere_ports_list_file
要构建的端口列表。默认:'ports-list.default'
。
poudriere_ports_branch_name
通过 svn 检出和构建的端口分支名称。默认:'head'
。
poudriere_build_options_file
用于构建软件包的构建选项 make.conf
。默认:'make.conf.default'
。
poudriere_jails
要创建的 jail。
poudriere_jails:
- { jail_name: 'freebsd-11_2_x64', version: '11.2-RELEASE' }
默认:''
。
poudriere_zpool
将由 poudriere
使用的 zpool 名称。如果池不存在,将使用 poudriere_zpool_devices
中指定的设备创建。默认:'tank'。
poudriere_zpool_devices
用于创建 poudriere 的 zpool 的设备,例如 /dev/nvd1
。默认:''。
依赖关系
无。
示例剧本
---
- hosts: default
sudo: true
vars:
aws_access_key_id: '{{ lookup("env","AWS_ACCESS_KEY_ID") }}'
aws_secret_access_key: '{{ lookup("env","AWS_SECRET_ACCESS_KEY") }}'
aws_default_region: '{{ lookup("env","AWS_DEFAULT_REGION") }}'
s3_bucket_name: 'repo.bucket.name'
poudriere_ports_list_file: './files/ports.list'
poudriere_key_file: './files/poudriere.key'
poudriere_build_options_file: './files/make.conf'
poudriere_jails:
- { jail_name: 'freebsd-11_2_x64', version: '11.2-RELEASE' }
roles:
- { role: JoergFiedler.freebsd-build-server }
许可证
BSD
作者信息
如果你喜欢这个项目或有改进的想法,请在 Github 上提出问题。谢谢。