建立用于执行Ansible的容器环境

首先

本文介绍了在容器环境中运行配置管理工具Ansible的步骤。当不想在服务器上随意安装与Ansible相关的软件包时,或者希望在不同的环境中运行具有相同配置的Ansible时,将Ansible执行环境容器化是一种有效的方法。

建构任务的概要

本文将执行以下事项。

無題.png

安装容器

在RHEL8以后,应安装Podman来替代Docker。

# dnf -y install podman

创建Ansible目录

创建一个可以挂载到容器中的Ansible目录。

# mkdir /etc/ansible

禁用SELinux

# sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
# setenforce 0

创建Dockerfile

我们将进行容器的包导入和各种配置。
我们选择了在RHEL8上支持的Python 3.9。
虽然有一些非必需的设置,但我认为这将使工作更加便利。

# vi Dockerfile

★★★以下を追記する★★★

# RHEL8ベースのイメージを使用
FROM registry.access.redhat.com/ubi8/ubi:latest

# 必要なパッケージをインストールするためにEPELリポジトリを追加
RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
# EPELリポジトリをインストール
RUN dnf install -y epel-release
# 必要なパッケージをインストール
RUN dnf install -y python39 python39-pip python39-devel openssh-clients openssl-devel gcc sshpass
# インストール後のキャッシュをクリア
RUN dnf clean all

# AnsibleおよびWindows関連のパッケージをインストール
RUN pip3.9 install --upgrade pip && \
    pip3.9 install ansible pywinrm

# ロケールを日本語に設定
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

# コンテナの実行ユーザーをrootに設定
USER root

# デフォルトの作業ディレクトリを設定
WORKDIR /ansible

# 親サーバのディレクトリをマウントするためのディレクトリを作成
VOLUME ["/ansible"]

# エイリアスを設定 (llコマンド)
RUN echo "alias ll='ls -l'" >> /etc/profile.d/aliases.sh

# カスタムプロンプトの設定
ENV PS1="[\u@\h ~]# "

# コンテナを実行する際のコマンド (bashシェルを実行)
CMD ["/bin/bash"]

根据Dockerfile构建容器镜像。

構文:podman build -t コンテナイメージ名 .

# podman build -t ansible-container .

正常に作成されていれば、以下のように表示される。
Successfully tagged localhost/ansible-container:latest

容器启动

構文:「podman run --it 
--rm:コンテナ終了時に自動でコンテナ削除
--hostname:コンテナ内のホスト名を定義
-v:ホストの任意のパスをコンテナの任意のパスにマウント
起動するコンテナイメージ名」

# podman run -it --rm --hostname ansible-container -v /etc/ansible:/ansible ansible-container

检查容器内的Ansible版本。

[root@ansible-container ~]# pip freeze | grep ansible

正常にインストールされていれば、以下のように表示される。
ansible==6.7.0
ansible-core==2.13.8

以上是为了将Ansible容器化所需的配置已经完成。
请将所需的Ansible资料(如roles、ansible.cfg和清单文件等)放置在控制节点的/etc/ansible目录下。然后启动Ansible容器并执行任务。

备考:在另一个环境中启动容器。

已构建的容器可以带到另一个环境中启动。

将容器映像化。

構文:「podman save -o 出力パス コンテナイメージ名」

# podman save -o ansible-container.tar localhost/ansible-container

将生成的文件传输到另一个环境中。

# scp ansible-container.tar root@xxx.xxx.xxx.xxx:~/

从文件中恢复容器镜像到不同的环境中。

構文:「podman load -i ファイルパス」

# podman load -i ansible-container.tar
广告
将在 10 秒后关闭
bannerAds