banner
云野阁

云野阁

闲云野鹤,八方逍遥

Ansibleの最新バージョンのインストール

pip 方式インストール#

基本環境準備#

(1)ソフトウェア依存関係のインストール

yum install -y zlib zlib-dev zlib-devel sqlite-devel openssl-devel bzip2-devel libffi libffi-devel gcc gcc-c++ perl perl-core perl-CPAN perl-IPC-Cmd make tk-devel readline-devel libpcap-devel gdbm-devel xz-devel

(2)新しい openssl をダウンロードしてインストール

wget https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz 
tar -zxvf openssl-3.5.0.tar.gz
cd openssl-3.5.0
#コンパイルインストール
./config --prefix=/usr/local/openssl-3.5.0 --libdir=lib --openssldir=/etc/ssl
make -j1 depend && make -j8 && make install_sw

(3)python3 のインストールパッケージをダウンロード

curl -O https://mirrors.huaweicloud.com/python/3.13.3/Python-3.13.3.tgz
tar -zxvf Python-3.13.3.tgz
cd Python-3.13.3
./configure --with-openssl=/usr/local/openssl-3.5.0 --with-openssl-rpath=auto --prefix=/usr/local/python3.13
make -j8 && make altinstall
#ソフトリンクの設定
ln -s /usr/local/python3.13/bin/python3.13 /usr/bin/python3
ln -s /usr/local/python3.13/bin/pip3.13 /usr/bin/pip3

##バージョン確認
python3 --version
pip3 --version

Ansible のインストール#

python3 -m pip install ansible
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
#バージョン確認
ansible --version

グローバル設定ファイルansible.cfgを作成

mkdir -p /etc/ansible
vi /etc/ansible/ansible.cfg
[defaults]
#ホストインベントリファイルの存在
inventory=/etc/ansible/hosts
#使用するPythonインタプリタのパス
interpreter_python = /usr/bin/python3
#設定ファイルの有効確認
ansible --version

[root@124 ~]# ansible --version
ansible [core 2.18.4]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /root/.local/lib/python3.13/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /root/.local/bin/ansible
python version = 3.13.3 (main, Apr 12 2025, 22:15:40) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] (/usr/bin/python3)
jinja version = 3.1.6
libyaml = True

コンテナ方式インストール#

公式コミュニティコンテナの使用#

community-ee-minimal イメージ:ansible-coreのみを含む

community-ee-base イメージ:ansible-coreansible.posixansible.utilsansible.windowsの複数の基本コレクションを含む

この記事ではcommunity-ee-baseイメージを使用してインストールします。

コンテナ方式インストールは、制御対象ホストの python バージョンが 3.13 以上の場合に適用されます

(1)基本環境準備

mkdir -p /data/code
mkdir -p /data/ansible
#グローバル設定ファイルの作成
vi /data/ansible/ansible.cfg
[defaults]
#ホストインベントリファイルの存在
inventory=/etc/ansible/hosts
interpreter_python = /usr/bin/python3

#設定ファイルの作成
vi /data/code/ansible.cfg
[defaults]
#ホストインベントリファイルの存在
inventory=/data/code/hosts
interpreter_python = /usr/bin/python3

#ホストインベントリファイルの作成
vi /data/code/hosts
[webservers]
192.168.1.124
192.168.1.125

Ansible コンテナをインストールするホストでパスワードなしログインを設定し、秘密鍵ファイルを制御対象ホストに転送します

ssh-keygen 
ssh-copy-id -i ~/.ssh/id_rsa.pub root@制御対象ホストip

(2)ghcr.io/ansible-community/community-ee-baseコンテナをインストール

  • 方法 1:直接 docker コマンドを使用:
 docker run -itd  --name ansible --user "0" -v /root/.ssh:/root/.ssh -v /data/ansible:/etc/ansible -v /data/code:/data/code ghcr.io/ansible-community/community-ee-base
  • 方法 2:docker compose を使用してインストール
#ymlファイルを作成
vi ansible.yml

services:
  ansible:
    image: ghcr.io/ansible-community/community-ee-base
    container_name: ansible
    restart: always
    tty: true
    stdin_open: true
    volumes:
      - /root/.ssh:/root/.ssh
      - /data/ansible:/etc/ansible
      - /data/code:/data/code
    user: "0"
    networks:
      ansible-net:
        ipv4_address: 172.20.17.11

networks:
 ansible-net:
  driver: bridge
  ipam:
   config:
    - subnet: 172.20.17.0/24
    
#インストール
docker compose -f ansible.yml up -d

(3)インストール成功後、コンテナに入って確認

docker exec -it ansible bash

バージョン確認

ansible --version

[root@123 runner]# ansible --version
ansible [core 2.18.3]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.13/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible
python version = 3.13.2 (main, Feb 4 2025, 00:00:00) [GCC 14.2.1 20250110 (Red Hat 14.2.1-7)] (/usr/bin/python3)
jinja version = 3.1.5
libyaml = True

Ansible コマンドを実行してテスト

ansible all -m ping

[root@123 code]# ansible all -m ping
192.168.1.125 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.1.124 | SUCCESS => {
"changed": false,
"ping": "pong"
}

自用 Ansible イメージの構築#

(1)DockerFile ファイルを作成

vi DockerFile

FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && yum install epel-release -y && yum install ansible -y

#Ansibleイメージの作成
docker build -f DockerFile -t ansible:1.0 --load .

(2)基本環境準備

mkdir -p /data/code
mkdir -p /data/ansible
#グローバル設定ファイルの作成
vi /data/ansible/ansible.cfg
[defaults]
#ホストインベントリファイルの存在
inventory=/etc/ansible/hosts
interpreter_python = /usr/bin/python

#設定ファイルの作成
vi /data/code/ansible.cfg
[defaults]
#ホストインベントリファイルの存在
inventory=/data/code/hosts
interpreter_python = /usr/bin/python

#ホストインベントリファイルの作成
vi /data/code/hosts
[webservers]
192.168.1.122
192.168.1.123
192.168.1.124

(3)Ansible コンテナをインストールするホストでパスワードなしログインを設定し、秘密鍵ファイルを制御対象ホストに転送します

ssh-keygen 
ssh-copy-id -i ~/.ssh/id_rsa.pub root@制御対象ホストip

(4)コンテナをインストール

  • 方法 1:直接 docker コマンドを使用:
 docker run -itd  --name ansible -v /root/.ssh:/root/.ssh -v /data/ansible:/etc/ansible -v /data/code:/data/code ansible:1.0
  • 方法 2:docker compose を使用してインストール
#ymlファイルを作成
vi ansible.yml

services:
  ansible:
    image: ansible:1.0
    container_name: ansible
    restart: always
    tty: true
    stdin_open: true
    volumes:
      - /root/.ssh:/root/.ssh
      - /data/ansible:/etc/ansible
      - /data/code:/data/code
    user: "0"
    networks:
      ansible-net:
        ipv4_address: 172.20.17.11

networks:
 ansible-net:
  driver: bridge
  ipam:
   config:
    - subnet: 172.20.17.0/24
    
    
#インストール
docker compose -f ansible.yml up -d

(5)インストール成功後、コンテナに入って確認

docker exec -it ansible bash

バージョン確認

ansible --version

[root@c7668aa8c849 ~]# ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

Ansible コマンドを実行してテスト

ansible all -m ping

[root@c7668aa8c849 code]# ansible all -m ping
192.168.1.122 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.1.124 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.1.123 | SUCCESS => {
"changed": false,
"ping": "pong"
}

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。