coglinev3.ansible_bender

Ansible Role: ansible_bender

ビルド GitHub タグ (最新の日付) ライセンス

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
ライセンス
bsd-3-clause
ダウンロード
6k
所有者