coglinev3.ansible_bender
Ansible Role: ansible_bender
Dockerfileでのコンテナビルドに疲れましたか?
このロールはansible-benderをインストールします。このツールはAnsibleプレイブックを使ってコンテナをビルドし、コンテナイメージに変換します。
ansible-benderを使えば、従来の仮想マシンやベアメタルシステムと同じようにコンテナをビルドし、構成することができます。Ansibleの力を活かし、既存のAnsibleコンテンツをコンテナエコシステムで再利用できます。テンプレートを使ったり、ファイルをコピーしたり、暗号化データを組み込んだり、エラーを処理したり、条件分岐を追加することも可能です。インフラをオーケストレーションするためのAnsibleのすべての機能が、イメージビルドプロセスにも適用できます。
このロールがサポートするLinuxディストリビューションは次のとおりです:
- Alpine Linux 3.14
- Alpine Linux 3.15
- Alpine Linux 3.16
- Alpine Linux 3.17
- Alpine Linux 3.18
- Alpine Linux 3.19
- Enterprise Linux 8
- Enterprise Linux 9
- Debian 11 (Bullseye)
- Debian 12 (Bookworm)
- Linux Mint 20 (Ulyana)
- Ubuntu 20.04 LTS (Focal Fossa)
- Ubuntu 22.04 LTS (Jammy Jellyfish)
注意
Podmanのルートレスモードには、newuidmapプログラムをインストールする必要があります。Enterprise Linux 7 (RHEL 7 / CentOS 7)はバージョン7.7以降からこれをサポートしています。
要件
Ansible-benderはホストシステムにいくつかのバイナリが必要です:
- Buildah
- Podman
- Python 3.6以降(python 3.5以下はサポートされておらず、動作しないことが知られています)
- Ansible(AnsibleはPython 3に対してビルドされる必要があります)
これらの要件はこのロールでインストールされます。
ロール変数
使用可能な変数は以下に示し、デフォルト値を含みます(defaults/main.ymlを参照してください):
# ansible-bender用の依存関係(buildah、podman、python3.6以上など)
ab_dependencies:
- buildah
- podman
- python3
- python3-pip
- python3-setuptools
- python3-software-properties
- python3-virtualenv
- procps
- runc
- slirp4netns
# 依存関係のパッケージ状態:( present )| latest
ab_dependencies_package_state: present
# Python3インストーラーpip3でインストールされるパッケージ。
ab_python_packges:
- wheel
- ansible
- ansible-bender
# Pythonパッケージの状態:( present )| latest
ab_python_packge_state: present
# コンテナレジストリのカンマ区切りリスト
ab_container_search_registry: "'docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org'"
# ルートレスモードを使用できるユーザーのリスト:
ab_users: []
依存関係
なし。
例プレイブック
---
# ファイル: roles/ansible-bender/tests/test.yml
- hosts: all
vars:
ab_users:
- あなたのユーザー名
roles:
- { role: coglinev3.ansible_bender }
ansible-benderの使用例
イメージを作成する
ansible-benderをテストするには、まずAnsibleプレイブックが必要です。次のコマンドでプレイブックのテンプレートを作成できます:
ansible-bender init
次に、playbook.yml
ファイルを開いて、ansible_bender 辞書変数を変更し、いくつかのタスクを追加します。次のシンプルな例では、Alpine Linuxを基にしたnginxコンテナを作成します。
---
- name: Nginxのコンテナ化バージョン
hosts: all
vars:
# ansible-bender専用の設定
ansible_bender:
# ansible-benderは動作するためにPython 3をプリインストールしたイメージが必要です
base_image: python:3-alpine
target_image:
# コンテナを起動する際にデフォルトで実行するコマンド
cmd: "nginx -g \"daemon off;\""
name: bender-nginx
ports: ['80', '443']
working_dir: /var/www/localhost/htdocs
labels:
build-by: "{{ ansible_user }}"
working_container:
volumes:
# このGitリポジトリを作業コンテナの/srcにマウント
- "{{ playbook_dir }}:/src:Z"
tasks:
- name: プロジェクトbender-nginxを実行するために必要な依存関係をインストール
apk:
name: nginx
state: present
- name: /run/nginxディレクトリが存在することを確認
file:
path: /run/nginx
state: directory
mode: '0750'
owner: nginx
group: nginx
これで、次のコマンドで例のイメージをビルドできます:
ansible-bender build ./playbook.yml
コンテナを実行する
イメージが正常に作成されたら、新しいコンテナをpodmanで起動できます。
podman run -d -p 8080:80 bender-nginx
最後に、curlを使ってnginxコンテナが正常に動作しているかテストできます。
curl http://127.0.0.1:8080/
"404 Not Found"のレスポンスがあれば、nginxは正常に動作しています。nginxは要求されたページが見つからなかったことを知らせます。
バージョン
リリース:1.5.0
ライセンス
BSD
著者情報
Copyright © 2024 Cogline.v3.
Installs ansible-bender, a tool which bends containers using Ansible playbooks and turns them into container images.
ansible-galaxy install coglinev3.ansible_bender