はじめに
こんにちは!
事業開発推進部インフラ運用SLチームの倉田です。
連載第3回目では前回作成したPlaybookを用いてDockerfileを作成し、コンテナイメージを作成します。Dockerfile内に、コンテナ構築とともにPlaybookを自動実行するためのコマンドを記載します。この通りに作成したイメージを用いてコンテナを構築することでより簡単にZabbixへのサーバの登録を行うことができます。
目次
①Dockerfileの作成
②コンテナイメージの作成
用語説明
Dockerfile:テキストファイルであり、イメージを作り上げるために実行するコマンドライン命令を、すべてこのファイルに含められます。
コンテナイメージ:コンテナで用いるイメージは、個々に分離された動作環境テンプレートです。アプリケーション実行に必要な変数・コマンドやメタデータを含みます。
※参考記事①
コンテナ実行環境
・AWS EC2
前提条件
・監視対象サーバの設定がSSH接続の際にパスワード認証で接続できるようになっていること
・Dockerが使える環境であること
イメージ図
①Dockerfileの作成
Dockerfileの書き方の詳細は参考記事②をご覧ください。
今回の検証では汎用性の高いRocky Linuxをベースにコンテナイメージを作成しました。前回作成したAnsibleのroleの構成を以下のようにDockerfileと同じ階層に用意します。
<構成図>
/Dockerfile
FROM rockylinux:8.7
#Playbook実行に必要なファイルをコピー
COPY . /root/foransible
#Ansibleのインストール
RUN set -ex && \
yum update -y && \
yum install -y epel-release && \
yum install -y ansible git && \
mv /root/foransible/.ansible.cfg /root && \ #.ansible.cfgはroot配下に移動する
python3 -m pip install zabbix-api
#コンテナ構築時に自動でPlaybookを実行
CMD ["/usr/bin/ansible-playbook", "/root/foransible/docker-ansible/zabbix_host_set.yml"]
②イメージの作成
①で作成したDockerfileを元にイメージの作成を行います。
docker image build -t sample/sample<任意のイメージ名>:latest<任意のタグ名> .
イメージの一覧を表し、作成できているか確認します。
docker images
REPOSITORY以下に指定したイメージ名、TAG以下に指定したタグが表示されていれば作成完了です。
まとめ
上記の手順によって、前回作成したplaybookを自動で実行することが可能なコンテナイメージが作成できました。
次回は「GitLabのリポジトリでイメージの管理」について投稿します。
参考記事
参考記事①
Dockerfile リファレンス — Docker-docs-ja 20.10 ドキュメント
Dockerイメージとコンテナの違いとは?作成の流れ入門 | アンドエンジニア (and-engineer.com)
参考記事②
Dockerfileの書き方, 利用する命令, 作成手順 – わくわくBank (wakuwakubank.com)