NECネッツエスアイ

コンテナ基盤上でZabbixを自動設定してみた (連載③:DockerfileでPlaybookが実行可能なコンテナイメージを作る)

はじめに

こんにちは!
事業開発推進部インフラ運用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)

関連記事

TOP