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
packages
とbuild-options
フォルダーをS3バケット内に置くパス。デフォルト: '/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で問題を開いてください。ありがとうございます。