用于离线安装Ansible的笔记
离线安装Ansible
本篇文章是为了在离线环境中安装Ansible所进行的调查。因此,可能存在不完善和错误之处,仅供参考。
环境
# cat /etc/redhat-release
CentOS Linux release 8.3.2011
# pip3 --version
pip 20.3.3 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
# python3 --version
Python 3.6.8
准备所需的材料
首先,为了了解最新版本的Ansible的依赖关系,我们需要在在线环境中进行以下操作。
从ansible2.10开始,似乎将ansible-base作为模块引入。
【オンラインでやる作業】
# mkdir /tmp/src
# pip3 download -d /tmp/src --no-binary :all: ansible
# ls -l /tmp/src
合計 35968
-rw-r--r-- 1 root root 257594 12月 20 18:05 Jinja2-2.11.2.tar.gz
-rw-r--r-- 1 root root 19151 12月 20 18:05 MarkupSafe-1.1.1.tar.gz
-rw-r--r-- 1 root root 269377 12月 20 18:05 PyYAML-5.3.1.tar.gz
-rw-r--r-- 1 root root 28622006 12月 20 18:04 ansible-2.10.4.tar.gz
-rw-r--r-- 1 root root 5708083 12月 20 18:05 ansible-base-2.10.4.tar.gz
-rw-r--r-- 1 root root 471302 12月 20 18:05 cffi-1.14.4.tar.gz
-rw-r--r-- 1 root root 539756 12月 20 18:05 cryptography-3.3.1.tar.gz
-rw-r--r-- 1 root root 79359 12月 20 18:05 packaging-20.8.tar.gz
-rw-r--r-- 1 root root 161330 12月 20 18:05 pycparser-2.20.tar.gz
-rw-r--r-- 1 root root 649718 12月 20 18:05 pyparsing-2.4.7.tar.gz
-rw-r--r-- 1 root root 33917 12月 20 18:05 six-1.15.0.tar.gz
此外,还需要以下的东西。
pip-20.3.3.tar.gz
wheel-0.36.2.tar.gz
setuptools-51.0.0.tar.gz
sshpass-1.06-9.el8.x86_64.rpm
请参考上面的包,并从 https://pypi.org/ 下载所需内容。
sshpass可从以下位置下载:
https://centos.pkgs.org/8/epel-x86_64/sshpass-1.06-9.el8.x86_64.rpm.html
通过某种方式将必要的软件包存储在离线环境中。
一旦存储完成,就可以继续进行了。
安装sshpass
# mkdir /tmp/sshpass
# ls -l /tmp/sshpass
-rw-r--r-- 1 root root 28064 12月 21 09:15 sshpass-1.06-9.el8.x86_64.rpm
# rpm -ivh /tmp/sshpass/sshpass-1.06-9.el8.x86_64.rpm
pip的离线升级
# mkdir /tmp/pip
# ls -l /tmp/pip
-rw-r--r-- 1 root root 1529320 12月 21 09:15 pip-20.3.3.tar.gz
# pip3 install --upgrade /tmp/pip/pip-20.3.3.tar.gz
安装Ansible
使用下面的命令来安装Ansible。
# mkdir /tmp/src
# ls -l /tmp/src
-rw-r--r-- 1 root root 257594 12月 21 09:15 Jinja2-2.11.2.tar.gz
-rw-r--r-- 1 root root 19151 12月 21 09:15 MarkupSafe-1.1.1.tar.gz
-rw-r--r-- 1 root root 269377 12月 21 09:15 PyYAML-5.3.1.tar.gz
-rw-r--r-- 1 root root 28622006 12月 21 09:15 ansible-2.10.4.tar.gz
-rw-r--r-- 1 root root 5708083 12月 21 09:15 ansible-base-2.10.4.tar.gz
-rw-r--r-- 1 root root 471302 12月 21 09:15 cffi-1.14.4.tar.gz
-rw-r--r-- 1 root root 539756 12月 21 09:15 cryptography-3.3.1.tar.gz
-rw-r--r-- 1 root root 79359 12月 21 09:15 packaging-20.8.tar.gz
-rw-r--r-- 1 root root 161330 12月 21 09:15 pycparser-2.20.tar.gz
-rw-r--r-- 1 root root 649718 12月 21 09:15 pyparsing-2.4.7.tar.gz
-rw-r--r-- 1 root root 1957464 12月 21 14:11 setuptools-51.0.0.tar.gz
-rw-r--r-- 1 root root 33917 12月 21 09:15 six-1.15.0.tar.gz
-rw-r--r-- 1 root root 65393 12月 21 14:21 wheel-0.36.2.tar.gz
# python3 -m pip install --no-index --find-links /tmp/src/ansible-2.10.4.tar.gz --user ansible
Processing /tmp/src/ansible-2.10.4.tar.gz
Collecting ansible-base<2.11,>=2.10.3
Using cached ansible-base-2.10.4.tar.gz (5.7 MB)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.6/site-packages (from ansible-base<2.11,>=2.10.3->ansible==2.10.4) (2.11.2)
Requirement already satisfied: PyYAML in /usr/local/lib64/python3.6/site-packages (from ansible-base<2.11,>=2.10.3->ansible==2.10.4) (5.3.1)
Requirement already satisfied: cryptography in /usr/local/lib64/python3.6/site-packages (from ansible-base<2.11,>=2.10.3->ansible==2.10.4) (3.3.1)
Requirement already satisfied: cffi>=1.12 in /usr/local/lib64/python3.6/site-packages (from cryptography->ansible-base<2.11,>=2.10.3->ansible==2.10.4) (1.14.4)
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages (from cryptography->ansible-base<2.11,>=2.10.3->ansible==2.10.4) (1.15.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi>=1.12->cryptography->ansible-base<2.11,>=2.10.3->ansible==2.10.4) (2.20)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib64/python3.6/site-packages (from jinja2->ansible-base<2.11,>=2.10.3->ansible==2.10.4) (1.1.1)
Collecting packaging
Using cached packaging-20.8-py2.py3-none-any.whl (39 kB)
Collecting pyparsing>=2.0.2
Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Using legacy 'setup.py install' for ansible, since package 'wheel' is not installed.
Using legacy 'setup.py install' for ansible-base, since package 'wheel' is not installed.
Installing collected packages: pyparsing, packaging, ansible-base, ansible
Running setup.py install for ansible-base ... done
Running setup.py install for ansible ... done
Successfully installed ansible-2.10.4 ansible-base-2.10.4 packaging-20.8 pyparsing-2.4.7
# ansible --version
ansible 2.10.4
config file = None
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, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
安装后的软件包版本列表。
# pip list
Package Version
-------------------- -----------
ansible 2.10.4
ansible-base 2.10.4
bcc 0.14.0
blivet 3.2.2
Brlapi 0.6.7
cffi 1.14.4
chardet 3.0.4
chrome-gnome-shell 0.0.0
configobj 5.0.6
cryptography 3.3.1
cupshelpers 1.0
dasbus 1.2
dbus-python 1.2.4
decorator 4.2.1
ethtool 0.14
gpg 1.13.1
html5lib 0.999999999
idna 2.5
iniparse 0.4
initial-setup 0.3.81.6
iotop 0.6
isc 2.0
Jinja2 2.11.2
jsonpointer 1.10
kmod 0.1
langtable 0.0.51
libvirt-python 6.0.0
lxml 4.2.3
MarkupSafe 1.1.1
netaddr 0.7.19
nftables 0.1
ntplib 0.3.3
ordered-set 2.0.2
packaging 20.8
pcp 5.0
perf 0.1
pid 2.1.1
pip 20.3.3
ply 3.9
productmd 1.11
psycopg2 2.7.5
pwquality 1.4.0
pycairo 1.16.3
pycparser 2.20
pycups 1.9.72
pycurl 7.43.0.2
pydbus 0.6.0
pyenchant 2.0.0
pygobject 3.28.3
pyinotify 0.9.6
pykickstart 3.16.11
pyparsing 2.4.7
pyparted 3.11.0
PySocks 1.6.8
python-dateutil 2.6.1
python-dmidecode 3.12.2
python-linux-procfs 0.6.2
python-meh 0.47.2
pytz 2017.2
pyudev 0.21.0
pyxdg 0.25
PyYAML 5.3.1
requests 2.20.0
requests-file 1.4.3
requests-ftp 0.3.1
rpm 4.14.3
rtslib-fb 2.1.73
schedutils 0.6
selinux 2.9
sepolicy 1.1
setools 4.3.0
setroubleshoot 1.1
setuptools 51.0.0
simpleline 1.1.1
six 1.15.0
slip 0.6.4
slip.dbus 0.6.4
sos 3.9
SSSDConfig 2.3.0
subscription-manager 1.27.16
syspurpose 1.27.16
systemd-python 234
urllib3 1.24.2
webencodings 0.5.1
外传
如果指定了Ansible的版本。这次选择了2.9的最新版本。
经确认,发现2.10是.tar.gz格式,而2.9有.whl格式可用。
【オンラインでやる作業】
# mkdir /tmp/src2
# pip3 download -d /tmp/src2 ansible==2.9.16
# ls -l /tmp/src2
合計 17400
-rw-r--r-- 1 root root 125774 12月 20 18:55 Jinja2-2.11.2-py2.py3-none-any.whl
-rw-r--r-- 1 root root 27520 12月 20 18:55 MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
-rw-r--r-- 1 root root 269377 12月 20 18:55 PyYAML-5.3.1.tar.gz
-rw-r--r-- 1 r# python3 -m pip install /tmp/src2/ansible-2.9.16.tar.gz oot root 14245156 12月 20 18:55 ansible-2.9.16.tar.gz
-rw-r--r-- 1 root root 401227 12月 20 18:55 cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl
-rw-r--r-- 1 root root 2617057 12月 20 18:55 cryptography-3.3.1-cp36-abi3-manylinux2010_x86_64.whl
-rw-r--r-- 1 root root 112041 12月 20 18:55 pycparser-2.20-py2.py3-none-any.whl
-rw-r--r-- 1 root root 10963 12月 20 18:55 six-1.15.0-py2.py3-none-any.whl
# python3 -m pip install --no-index --find-links /tmp/src2/ansible-2.9.16.tar.gz --user ansible
Processing /tmp/src2/ansible-2.9.16.tar.gz
Collecting cryptography
Using cached cryptography-3.3.1-cp36-abi3-manylinux2010_x86_64.whl (2.6 MB)
Collecting cffi>=1.12
Using cached cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl (401 kB)
Collecting six>=1.4.1
Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting jinja2
Using cached Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
Collecting MarkupSafe>=0.23
Using cached MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB)
Collecting pycparser
Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB)
Collecting PyYAML
Using cached PyYAML-5.3.1.tar.gz (269 kB)
Using legacy 'setup.py install' for ansible, since package 'wheel' is not installed.
Using legacy 'setup.py install' for PyYAML, since package 'wheel' is not installed.
Installing collected packages: pycparser, six, MarkupSafe, cffi, PyYAML, jinja2, cryptography, ansible
Running setup.py install for PyYAML ... done
Running setup.py install for ansible ... done
Successfully installed MarkupSafe-1.1.1 PyYAML-5.3.1 ansible-2.9.16 cffi-1.14.4 cryptography-3.3.1 jinja2-2.11.2 pycparser-2.20 six-1.15.0
# pip list
Package Version
-------------------- -----------
ansible 2.9.16
bcc 0.14.0
blivet 3.2.2
Brlapi 0.6.7
cffi 1.14.4
chardet 3.0.4
chrome-gnome-shell 0.0.0
configobj 5.0.6
cryptography 3.3.1
cupshelpers 1.0
dasbus 1.2
dbus-python 1.2.4
decorator 4.2.1
ethtool 0.14
gpg 1.13.1
html5lib 0.999999999
idna 2.5
iniparse 0.4
initial-setup 0.3.81.6
iotop 0.6
isc 2.0
Jinja2 2.11.2
jsonpointer 1.10
kmod 0.1
langtable 0.0.51
libvirt-python 6.0.0
lxml 4.2.3
MarkupSafe 1.1.1
netaddr 0.7.19
nftables 0.1
ntplib 0.3.3
ordered-set 2.0.2
pcp 5.0
perf 0.1
pid 2.1.1
pip 20.3.3
ply 3.9
productmd 1.11
psycopg2 2.7.5
pwquality 1.4.0
pycairo 1.16.3
pycparser 2.20
pycups 1.9.72
pycurl 7.43.0.2
pydbus 0.6.0
pyenchant 2.0.0
pygobject 3.28.3
pyinotify 0.9.6
pykickstart 3.16.11
pyparted 3.11.0
PySocks 1.6.8
python-dateutil 2.6.1
python-dmidecode 3.12.2
python-linux-procfs 0.6.2
python-meh 0.47.2
pytz 2017.2
pyudev 0.21.0
pyxdg 0.25
PyYAML 5.3.1
requests 2.20.0
requests-file 1.4.3
requests-ftp 0.3.1
rpm 4.14.3
rtslib-fb 2.1.73
schedutils 0.6
selinux 2.9
sepolicy 1.1
setools 4.3.0
setroubleshoot 1.1
setuptools 51.0.0
simpleline 1.1.1
six 1.15.0
slip 0.6.4
slip.dbus 0.6.4
sos 3.9
SSSDConfig 2.3.0
subscription-manager 1.27.16
syspurpose 1.27.16
systemd-python 234
urllib3 1.24.2
webencodings 0.5.1
# ansible --version
ansible 2.9.16
config file = None
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, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
Ansible2.9和2.10版本中模块的差异。
2.102.9ansible 2.10.4ansible 2.9.16ansible-base 2.10.4
packaging 20.8
pyparsing 2.4.7
webencodings 0.5.1
packaging 20.8
pyparsing 2.4.7
webencodings 0.5.1
路径问题
如果无法通过 Ansible 命令运行,请尝试以下方法。
# ./.local/bin/ansible --help