Ansible
doc
- Ansibleの実行環境をDockerコンテナにする
- 【Ansible on Docker】Ansibleのハンズオン環境をDockerで構築
- 公式ドキュメントのAnsible Roadmap
- 最新の安定板を確認する。
- 公式:インストールガイド
install
Dockerの起動
docker run --rm -it rockylinux:8.6 /bin/bash
Pythonのインストール
2025/01/21時点はAnsible 11系。 Pythonのバージョンは3.10.5なのでインストールする。
sudo dnf install wget yum-utils make gcc openssl-devel bzip2-devel libffi-devel zlib-devel
wget https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz
tar xzf Python-3.10.5.tgz
cd Python-3.10.5
./configure --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions
make -j $(nproc)
make altinstall
python3.10 -V
pythonでコマンド実行できるようにする
ln -s /usr/local/bin/python3.10 /usr/bin/python3
python -V
pipxのインストール
python -m pip install --user pipx
python -m pipx ensurepath
pipxコマンドが見つからない
python -m site --user-base
上記コマンドの出力にbinを追加した場所にパスを通す
echo 'export PATH=$PATH:/root/.local/bin' >> ~/.bashrc
source ~/.bashrc
Ansibleのインストール
pipx install --include-deps ansible
pipx upgrade --include-injected ansible
pipx inject ansible argcomplete
pipx inject --include-apps ansible argcomplete

Dockerfileの作成
上記コマンドをベースにDockerfileを作成。
結構エラーが出たのでそのたびに修正した結果が以下。
# ベースイメージ
FROM rockylinux:8.6
# 必要なパッケージのインストール
RUN dnf update -y && \
dnf install -y wget yum-utils make gcc openssl-devel bzip2-devel libffi-devel zlib-devel autoconf automake
# Pythonのインストール
RUN wget https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz && \
tar xzf Python-3.10.5.tgz && \
cd Python-3.10.5 && \
./configure --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions && \
make -j $(nproc) && \
make altinstall
RUN ln -s /usr/local/bin/python3.10 /usr/bin/python
# pipxのインストール
RUN python -m pip install --user pipx
RUN python -m pipx ensurepath
ENV PATH="/root/.local/bin:${PATH}"
# Ansibleのインストール
RUN pipx install --include-deps ansible
RUN pipx upgrade --include-injected ansible
RUN pipx inject ansible argcomplete
RUN pipx inject --include-apps ansible argcomplete
# ロケールを日本語に設定
RUN dnf -y install glibc-locale-source glibc-langpack-en && \
dnf clean all && \
rm -rf /var/cache/dnf/*
RUN localedef -f UTF-8 -i ja_JP ja_JP.utf8
RUN echo 'LANG="ja_JP.UTF-8"' > /etc/locale.conf
# タイムゾーンをJSTに設定
RUN echo 'ZONE="Asia/Tokyo"' > /etc/sysconfig/clock
RUN rm -f /etc/localtime
RUN ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# コンテナログイン時のカレントディレクトリを設定
WORKDIR /work/ansible
Ansible Docker
Dockerfileのビルド
docker build --no-cache=true -f Dockerfile -t ansible .
-tでリポジトリ名を指定
ビルドされたイメージを確認
docker images | grep ansible
ビルドしたイメージを起動
docker run --rm -it ansible /bin/bash