コンテンツにスキップ

Ansible

doc

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