在离线环境下安装Ansible的方法

在这里,我将说明如何在离线环境中安装Ansible。

如果想了解Ansible的安装方法,可以参考https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#running-ansible-from-source-devel,里面介绍了各种环境下的安装方法。然而,在离线环境下安装的方法并不常见。实际上,在进行基础架构建设的工作中,很多环境都与互联网隔离,所以这里将介绍一种在离线环境下安装的方法。

安装环境

以下是本次在离线环境中安装Ansible的步骤。

    • CentOS7

CentOS-7-x86_64-DVD-1810.iso
最小インストール
ネットワーク設定済み
上記のISOをマウント済み
インストールDVD内のパッケージからyumが利用できるように/etc/yum.repos.d配下の下記の設定ファイルを変更済み

CentOS-Base.repo(不要なrepo定義にenabled=0を追記)
CentOS-Media.repo(baseurlにDVDマウントしたディレクトリを設定)

安装方式。

如果您在在线环境中使用Ansible进行安装,只需设置EPEL存储库以使其可用,并执行yum命令即可。但是,如果处于离线环境,则无法访问EPEL存储库。

因此,需要逐个下载Ansible和相关的rpm包,并解决依赖关系后进行安装。

在调查依赖关系和版本,并从互联网上查找所需的软件包是一件很麻烦的事情,不是吗?

如果无法提供一个能够连接到互联网的环境并使用yum命令来先行调查依赖关系的话,那么只能通过试错的方式来解决。

下载Ansible的rpm文件。

首先,从以下网站下载Ansible的rpm软件包。

这次选择了截至到2020年5月30日(写作时)最新版本的ansible-2.9.9-1.el7.ans.noarch.rpm。

确认Ansible rpm文件的依赖关系。

接下来,我们需要确认Ansible的.rpm包是否缺少必要的依赖包。

尝试执行yum install命令。

yum install ansible-2.9.9-1.el7.ans.noarch.rpm

使用yum install命令会失败并显示错误,但会显示Ansible所需的依赖包或缺少的包。

yum install ansible-2.9.9-1.el7.ans.noarch.rpm ansible-2.9.9-1.el7.ans.noarch.rpm
読み込んだプラグイン:fastestmirror
ansible-2.9.9-1.el7.ans.noarch.rpm を調べています: ansible-2.9.9-1.el7.ans.noarch
ansible-2.9.9-1.el7.ans.noarch.rpm をインストール済みとして設定しています
ansible-2.9.9-1.el7.ans.noarch.rpm を調べています: ```
ansible-2.9.9-1.el7.ans.noarch
ansible-2.9.9-1.el7.ans.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ansible.noarch 0:2.9.9-1.el7.ans を インストール
---> パッケージ ansible.noarch 0:2.9.9-1.el7.ans を インストール
--> 依存性の処理をしています: python-jinja2 のパッケージ: ansible-2.9.9-1.el7.ans.noarch

~略~

--> 依存性の処理をしています: sshpass のパッケージ: ansible-2.9.9-1.el7.ans.noarch
---> パッケージ python-backports.x86_64 0:1.0-8.el7 を インストール
---> パッケージ python-ply.noarch 0:3.4-11.el7 を インストール
--> 依存性解決を終了しました。
エラー: パッケージ: ansible-2.9.9-1.el7.ans.noarch (/ansible-2.9.9-1.el7.ans.noarch)
             要求: python-jinja2
エラー: パッケージ: ansible-2.9.9-1.el7.ans.noarch (/ansible-2.9.9-1.el7.ans.noarch)
             要求: sshpass
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

在查看错误日志时,我们可以看到最后一个错误消息部分需要python-jinja2和sshpass。据说python-jinja2和sshpass不存在于安装DVD上的软件包组中。

下载Ansible所依赖的库。

接下来,从以下网站上下载这两个软件包。

    • sshpass

 

    • https://centos.pkgs.org/7/centos-extras-x86_64/sshpass-1.06-2.el7.x86_64.rpm.html

 

    • sshpass-1.06-2.el7.x86_64.rpm

 

    • python-jinja2

 

    • https://centos.pkgs.org/7/centos-x86_64/python-jinja2-2.7.2-4.el7.noarch.rpm.html

 

    python-jinja2-2.7.2-4.el7.noarch.rpm

由于安装环境不同,所需的软件包可能会有所不同,因此请注意错误的软件包并逐个进行下载。

使用yum命令可以一次性安装多个rpm文件,而不需要确认以下的依赖关系并逐个使用rpm命令安装软件包。

    ansibleインストールに必要な依存パッケージ(※)
ansible
  ┣━PyYAML
  ┣━python-jinja2
  ┣━python-paramiko
  ┣━python-six
  ┣━python2-cryptography
  ┃ ┣━python-ipaddress
  ┃ ┣━python-enum34
  ┃ ┣━python-six
  ┃ ┗━python2-pyasn1
  ┗━sshpass
     ┗━python2-pyasn1

由于所有的库依赖关系太多,已经省略。

安装Ansible

那么,让我们用以下命令来安装Ansible吧。

将下载的3个rpm文件复制到任意目录,并执行以下命令。
(在这里我们将rpm文件存储在/tmp目录下,并使用cd命令切换到/tmp目录。)

# yum install ansible-2.9.9-1.el7.ans.noarch.rpm sshpass-1.06-2.el7.x86_64.rpm python-jinja2-2.7.2-4.el7.noarch.rpm

不管依存关系如何,只需用空格分隔rpm文件并执行,yum会自动考虑依存顺序进行安装。

命令执行的结果如下所示。

読み込んだプラグイン:fastestmirror
ansible-2.9.9-1.el7.ans.noarch.rpm を調べています: ansible-2.9.9-1.el7.ans.noarch
ansible-2.9.9-1.el7.ans.noarch.rpm をインストール済みとして設定しています
sshpass-1.06-2.el7.x86_64.rpm を調べています: sshpass-1.06-2.el7.x86_64
sshpass-1.06-2.el7.x86_64.rpm をインストール済みとして設定しています
python-jinja2-2.7.2-4.el7.noarch.rpm を調べています: python-jinja2-2.7.2-4.el7.noarch
python-jinja2-2.7.2-4.el7.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ansible.noarch 0:2.9.9-1.el7.ans を インストール
--> 依存性の処理をしています: PyYAML のパッケージ: ansible-2.9.9-1.el7.ans.noarch
Loading mirror speeds from cached hostfile

~略~

---> パッケージ python-pycparser.noarch 0:2.14-1.el7 を インストール
--> 依存性の処理をしています: python-ply のパッケージ: python-pycparser-2.14-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-backports.x86_64 0:1.0-8.el7 を インストール
---> パッケージ python-ply.noarch 0:3.4-11.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package           アーキテクチャー
                          バージョン      リポジトリー                     容量
================================================================================
インストール中:
 ansible           noarch 2.9.9-1.el7.ans /ansible-2.9.9-1.el7.ans.noarch 103 M
 python-jinja2     noarch 2.7.2-4.el7     /python-jinja2-2.7.2-4.el7.noarch
                                                                          3.0 M
 sshpass           x86_64 1.06-2.el7      /sshpass-1.06-2.el7.x86_64       38 k
依存性関連でのインストールをします:
 PyYAML            x86_64 3.10-11.el7     c7-media                        153 k
 libyaml           x86_64 0.1.4-11.el7_0  c7-media                         55 k
 python-babel      noarch 0.9.6-8.el7     c7-media                        1.4 M
 python-backports  x86_64 1.0-8.el7       c7-media                        5.8 k
 python-backports-ssl_match_hostname
                   noarch 3.5.0.1-1.el7   c7-media                         13 k
 python-cffi       x86_64 1.6.0-5.el7     c7-media                        218 k
 python-enum34     noarch 1.0.4-1.el7     c7-media                         52 k
 python-idna       noarch 2.4-1.el7       c7-media                         94 k
 python-ipaddress  noarch 1.0.16-2.el7    c7-media                         34 k
 python-markupsafe x86_64 0.11-10.el7     c7-media                         25 k
 python-paramiko   noarch 2.1.1-5.el7     c7-media                        268 k
 python-ply        noarch 3.4-11.el7      c7-media                        123 k
 python-pycparser  noarch 2.14-1.el7      c7-media                        104 k
 python-setuptools noarch 0.9.8-7.el7     c7-media                        397 k
 python-six        noarch 1.9.0-2.el7     c7-media                         29 k
 python2-cryptography
                   x86_64 1.7.2-2.el7     c7-media                        502 k
 python2-pyasn1    noarch 0.1.9-7.el7     c7-media                        100 k

トランザクションの要約
================================================================================
インストール  3 パッケージ (+17 個の依存関係のパッケージ)

合計容量: 109 M
総ダウンロード容量: 3.5 M
インストール容量: 122 M
Is this ok [y/d/N]: y
Downloading packages:
警告: /media/dvd/Packages/PyYAML-3.10-11.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
PyYAML-3.10-11.el7.x86_64.rpm の公開鍵がインストールされていません
--------------------------------------------------------------------------------
合計                                                12 MB/s | 3.5 MB  00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-six-1.9.0-2.el7.noarch                  1/20
  インストール中          : python2-pyasn1-0.1.9-7.el7.noarch              2/20
  インストール中          : python-ipaddress-1.0.16-2.el7.noarch           3/20
  インストール中          : sshpass-1.06-2.el7.x86_64                      4/20
  インストール中          : python-backports-1.0-8.el7.x86_64              5/20
  インストール中          : python-backports-ssl_match_hostname-3.5.0.1    6/20
  インストール中          : python-setuptools-0.9.8-7.el7.noarch           7/20
  インストール中          : python-babel-0.9.6-8.el7.noarch                8/20
  インストール中          : libyaml-0.1.4-11.el7_0.x86_64                  9/20
  インストール中          : PyYAML-3.10-11.el7.x86_64                     10/20
  インストール中          : python-enum34-1.0.4-1.el7.noarch              11/20
  インストール中          : python-ply-3.4-11.el7.noarch                  12/20
  インストール中          : python-pycparser-2.14-1.el7.noarch            13/20
  インストール中          : python-cffi-1.6.0-5.el7.x86_64                14/20
  インストール中          : python-markupsafe-0.11-10.el7.x86_64          15/20
  インストール中          : python-jinja2-2.7.2-4.el7.noarch              16/20
  インストール中          : python-idna-2.4-1.el7.noarch                  17/20
  インストール中          : python2-cryptography-1.7.2-2.el7.x86_64       18/20
  インストール中          : python-paramiko-2.1.1-5.el7.noarch            19/20
  インストール中          : ansible-2.9.9-1.el7.ans.noarch                20/20
  検証中                  : python-idna-2.4-1.el7.noarch                   1/20
  検証中                  : python-markupsafe-0.11-10.el7.x86_64           2/20
  検証中                  : python-paramiko-2.1.1-5.el7.noarch             3/20
  検証中                  : python-ply-3.4-11.el7.noarch                   4/20
  検証中                  : ansible-2.9.9-1.el7.ans.noarch                 5/20
  検証中                  : python-enum34-1.0.4-1.el7.noarch               6/20
  検証中                  : libyaml-0.1.4-11.el7_0.x86_64                  7/20
  検証中                  : python-babel-0.9.6-8.el7.noarch                8/20
  検証中                  : python-backports-1.0-8.el7.x86_64              9/20
  検証中                  : python-cffi-1.6.0-5.el7.x86_64                10/20
  検証中                  : python-ipaddress-1.0.16-2.el7.noarch          11/20
  検証中                  : sshpass-1.06-2.el7.x86_64                     12/20
  検証中                  : python-jinja2-2.7.2-4.el7.noarch              13/20
  検証中                  : python2-pyasn1-0.1.9-7.el7.noarch             14/20
  検証中                  : PyYAML-3.10-11.el7.x86_64                     15/20
  検証中                  : python-pycparser-2.14-1.el7.noarch            16/20
  検証中                  : python-six-1.9.0-2.el7.noarch                 17/20
  検証中                  : python-setuptools-0.9.8-7.el7.noarch          18/20
  検証中                  : python2-cryptography-1.7.2-2.el7.x86_64       19/20
  検証中                  : python-backports-ssl_match_hostname-3.5.0.1   20/20

インストール:
  ansible.noarch 0:2.9.9-1.el7.ans      python-jinja2.noarch 0:2.7.2-4.el7
  sshpass.x86_64 0:1.06-2.el7

依存性関連をインストールしました:
  PyYAML.x86_64 0:3.10-11.el7
  libyaml.x86_64 0:0.1.4-11.el7_0
  python-babel.noarch 0:0.9.6-8.el7
  python-backports.x86_64 0:1.0-8.el7
  python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7
  python-cffi.x86_64 0:1.6.0-5.el7
  python-enum34.noarch 0:1.0.4-1.el7
  python-idna.noarch 0:2.4-1.el7
  python-ipaddress.noarch 0:1.0.16-2.el7
  python-markupsafe.x86_64 0:0.11-10.el7
  python-paramiko.noarch 0:2.1.1-5.el7
  python-ply.noarch 0:3.4-11.el7
  python-pycparser.noarch 0:2.14-1.el7
  python-setuptools.noarch 0:0.9.8-7.el7
  python-six.noarch 0:1.9.0-2.el7
  python2-cryptography.x86_64 0:1.7.2-2.el7
  python2-pyasn1.noarch 0:0.1.9-7.el7

完了しました!

好的,已经安装成功了。

安装 Ansible 后的确认。

为了以防万一,我们应该先确认一下可以使用Ansible命令。

# ansible --version
ansible 2.9.9
  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 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

正确安装了版本为2.9.9的Ansible。
在CentOS 7.6的离线环境下,Ansible的安装已经完成。

广告
将在 10 秒后关闭
bannerAds