Ansible2.10(离线安装)

首先

Ansible 2.10开始,与传统的Ansible 2.9不同的是,大部分模块都被集中到了ansible-galaxy中,并开始提供最基本的ansible-base模块。然而,Ansible 2.10有两种安装方式:
1. Ansible-base:只提供ansible-base,仅包含最基本的模块和插件,需要的模块可以从ansible-galaxy获取。
2. Ansible:与传统的分发方式相同,是将模块和插件绑定到ansible-base形式。

本文中介绍了进行②Ansible的离线安装。
※ 关于①Ansible-base的内容,请参阅另一篇文章。

0. 前提

将以下资源带到离线环境并安装。
通过pip安装的资源(使用pip list确认)。

pip-21.0.1.tar.gz 
wheel-0.36.2.tar.gz
setuptools-54.2.0.tar.gz 

※pip的离线升级

# pip3 install --upgrade /tmp/pip/pip-20.3.3.tar.gz

用rpm安装的东西。

sshpass-1.06-9.el8.x86_64.rpm

1. 下载ansible2.10安装文件。

使用pip命令下载ansible2.10安装文件。
执行结果如下:

# pip3 download -d ansible ansible
# ls -ltr
合計 37164
-rw-r--r--. 1 root root 28622006 12月 19 19:28 ansible-2.10.4.tar.gz
-rw-r--r--. 1 root root  5708083 12月 19 19:28 ansible-base-2.10.4.tar.gz
-rw-r--r--. 1 root root   125774 12月 19 19:28 Jinja2-2.11.2-py2.py3-none-any.whl
-rw-r--r--. 1 root root   269377 12月 19 19:28 PyYAML-5.3.1.tar.gz
-rw-r--r--. 1 root root  2655338 12月 19 19:28 cryptography-3.3.1-cp36-abi3-manylinux1_x86_64.whl
-rw-r--r--. 1 root root    39857 12月 19 19:28 packaging-20.8-py2.py3-none-any.whl
-rw-r--r--. 1 root root    27520 12月 19 19:28 MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
-rw-r--r--. 1 root root    10963 12月 19 19:28 six-1.15.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   401227 12月 19 19:28 cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl
-rw-r--r--. 1 root root    67842 12月 19 19:28 pyparsing-2.4.7-py2.py3-none-any.whl
-rw-r--r--. 1 root root   112041 12月 19 19:28 pycparser-2.20-py2.py3-none-any.whl

2. 安装

用以下的步骤将下载的资源配置到离线环境中。
运行以下命令来安装ansible。

# pip3 install <パッケージ名>

检查是否已安装。

# ansible --version
ansible 2.10.4
  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.6/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

执行用于测试的playbook。

我制作了以下的测试用playbook,并进行了运行确认。

---
  - hosts: localhost

    tasks:
      - file:
          path: /tmp
          state: directory

下面是执行结果。可以确认Ansible正常运行。

# # ansible-playbook test.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [file] ********************************************************************
ok: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

4. 互相依賴關係

以下是依存关系

$ pipdeptree
ansible==2.10.7
  - ansible-base [required: >=2.10.5,<2.11, installed: 2.10.6]
    - cryptography [required: Any, installed: 2.3]
      - asn1crypto [required: >=0.21.0, installed: 0.24.0]
      - cffi [required: >=1.7,!=1.11.3, installed: 1.11.5]
        - pycparser [required: Any, installed: 2.14]
      - idna [required: >=2.1, installed: 2.5]
      - six [required: >=1.4.1, installed: 1.11.0]
    - jinja2 [required: Any, installed: 2.10.1]
      - MarkupSafe [required: >=0.23, installed: 0.23]
    - packaging [required: Any, installed: 20.9]
      - pyparsing [required: >=2.0.2, installed: 2.4.7]
    - PyYAML [required: Any, installed: 3.12]
    - $ pipdeptree
ansible==2.10.7
  - ansible-base [required: >=2.10.5,<2.11, installed: 2.10.6]
    - cryptography [required: Any, installed: 2.3]
      - asn1crypto [required: >=0.21.0, installed: 0.24.0]
      - cffi [required: >=1.7,!=1.11.3, installed: 1.11.5]
        - pycparser [required: Any, installed: 2.14]
      - idna [required: >=2.1, installed: 2.5]
      - six [required: >=1.4.1, installed: 1.11.0]
    - jinja2 [required: Any, installed: 2.10.1]
      - MarkupSafe [required: >=0.23, installed: 0.23]
    - packaging [required: Any, installed: 20.9]
      - pyparsing [required: >=2.0.2, installed: 2.4.7]
    - PyYAML [required: Any, installed: 3.12]