ansible-bender でコンテナイメージを作成する
概要
Ansible と同じ書式で、コンテナイメージの作成手順を指定することができる ansible-bender を試してみた。
環境構築
手順書にしたがって、ansible-bender をインストールする。
$ sudo pip3 install ansible-bender
ansible-bender は内部的に buildah と podman を呼び出すので、手順書にしたがって、buildah と podman をインストールする。参考までに、私が使っている ansible playbook は以下の通り。
最小コンテナイメージを用意する
ansible-bender は Python がインストール済みのコンテナイメージが必要。だが、DockerHub で配布されている Debian イメージには、Python がまだ含まれていないので、このイメージに対しては ansible-bender は適用できない。
そこで、Python を含む最小のコンテナイメージを用意しておくと便利である。まず、以下のような Dockerfile を用意する。
FROM debian:buster
MAINTAINER Anatano Namae <namae@example.jp>
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python3 && apt-get clean
次に、以下のコマンドを実行して、debian-python3 という名前のコンテナイメージを作成する。
$ sudo podman build -t debian-python3:buster -f Dockerfile
作成が完了すれば、以下のようにイメージ一覧に表示されるようになるはずである。
$ sudo podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/debian-python3 buster 7b80a3ed5790 42 seconds ago 199 MB
ansible-bender でコンテナイメージを作成する
コンテナイメージを作成するための手順書を、Ansible とほぼ同じ形式で用意する。
- name: ntpd container
hosts: all
vars:
ansible_bender:
base_image: debian-python3:buster
target_image:
name: debian-ntpd:buster
tasks:
- name: install ntpd
apt:
name: ntpd
state: latest
手順書の書き方詳細については、ansible-bender のドキュメントを参照。
後は、以下のコマンドを実行すれば良い。
$ sudo ansible-bender build sample.yml
正常にコンテナイメージの作成が完了すると、以下のコマンドでイメージができていることが分かる。
$ sudo podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/debian-ntpd buster ab26e1f28761 13 minutes ago 223 MB
なお、最新の ansible-bender はバックエンドとして buildah のみをサポートしており、docker サポートは打ち切られている。そのため、直接 docker 形式のコンテナイメージを作成することは できない 。
インストールするパッケージが多い場合は、構築時間短縮のために HTTP_PROXY
を指定するなど細かい調整が必要になるのだが、設定方法の調査が完了していない。
作成したコンテナイメージを実行する
以下のコマンドで、podman のコンテナイメージを実行することができる。
$ sudo podman run -ti localhost/debian-python3:buster /bin/bash
/bin/bash
の実行が終了しても、コンテナ環境は確保されたままになっているので注意が必要。全ての実行中のコンテナ環境を破棄するには、以下のコマンドを実行する。
$ sudo podman rm -f `sudo podman ps -aq`
作成したコンテナイメージを docker 形式に変換する
buildah と docker の両方がインストールされていれば、以下のコマンドで podman のコンテナイメージを、同一ホストの docker に転送することができる。
$ sudo buildah push debian-python3:buster docker-daemon:debian-python3:buster
その上で、以下のように docker save と docker load を組み合わせれば、他ホストに docker コンテナイメージを転送できる。
$ sudo docker save debian-python3:buster | ssh docker.example.net sudo docker load
作成したコンテナイメージを singularity 形式に変換する
singularity は oci-archive 形式をサポートしているので、以下の手順で変換することが可能である。
$ sudo podman save --format oci-archive --output debian-python3.tar localhost/debian-python3:buster
$ singularity build debian-python3.sif oci-archive://debian-python3.tar
Author And Source
この問題について(ansible-bender でコンテナイメージを作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/tsuchm/items/90a49b827130f80f5e46著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .