20210228のLinuxに関する記事は7件です。

Ansibleのyumリポジトリを作成しスタンドアロンのサーバで使用する手順

目的と背景

スタンドアロン(社内リポジトリ及びインターネット繋がってない)にパッケージ入れたいけど、依存パッケージが多すぎて無理ゲーなのでリポジトリごと転送したい場合の方法です。今回はyumコマンドのキャッシュからリポジトリを作成し、スタンドアロンのサーバに転送してAnsibleをインストールしたいと思います。また今回の構成ではある意味矛盾しているのですが、リポジトリ作成時にyumコマンドを使用しているのでインターネット接続(yumが使える)サーバが必要です。必ずしもyumを使用する必要は無いです。

事前準備

検証構成の構築

事前にCentOS7のサーバを2台分作成、構築します。
minimal install後、IPアドレスを固定しています。

ホスト名 詳細 IPアドレス 備考 インターネット疎通
epimet-cent7-1 CentOS 7.9.2009(minimal install) 192.168.0.32 リポジトリ作成用サーバ
epimet-cent7-2 CentOS 7.9.2009(minimal install) 192.168.0.33 スタンドアロンサーバ
/etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

リポジトリ作成

【リポジトリ作成用サーバで実行】createrepoのインストール

rpmパッケージ等からリポジトリを作成するにはcreaterepoコマンドを使用しますが、デフォルトではインストールされていないので
インストールします。

#事前確認
[root@epimet-cent7-1 yum]# rpm -qa |grep createrepo
※何も出力されない
[root@epimet-cent7-1 ~]# yum install createrepo
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                      | 6.5 kB  00:00:00
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                                                      | 3.6 kB  00:00:00
epel                                                                                                      | 4.7 kB  00:00:00
extras                                                                                                    | 2.9 kB  00:00:00
updates                                                                                                   | 2.9 kB  00:00:00
(1/3): epel/x86_64/updateinfo                                                                             | 1.0 MB  00:00:00
(2/3): epel/x86_64/group_gz                                                                               |  95 kB  00:00:00
(3/3): epel/x86_64/primary_db                                                                             | 6.9 MB  00:00:19
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ createrepo.noarch 0:0.9.9-28.el7 を インストール
--> 依存性の処理をしています: python-deltarpm のパッケージ: createrepo-0.9.9-28.el7.noarch
--> 依存性の処理をしています: libxml2-python のパッケージ: createrepo-0.9.9-28.el7.noarch
--> 依存性の処理をしています: deltarpm のパッケージ: createrepo-0.9.9-28.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ deltarpm.x86_64 0:3.6-3.el7 を インストール
---> パッケージ libxml2-python.x86_64 0:2.9.1-6.el7.5 を インストール
---> パッケージ python-deltarpm.x86_64 0:3.6-3.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================================================
 Package                             アーキテクチャー           バージョン                        リポジトリー              容量
=================================================================================================================================
インストール中:
 createrepo                          noarch                     0.9.9-28.el7                      base                      94 k
依存性関連でのインストールをします:
 deltarpm                            x86_64                     3.6-3.el7                         base                      82 k
 libxml2-python                      x86_64                     2.9.1-6.el7.5                     base                     247 k
 python-deltarpm                     x86_64                     3.6-3.el7                         base                      31 k

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

総ダウンロード容量: 454 k
インストール容量: 2.0 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): createrepo-0.9.9-28.el7.noarch.rpm                                                                 |  94 kB  00:00:00
(2/4): python-deltarpm-3.6-3.el7.x86_64.rpm                                                               |  31 kB  00:00:00
(3/4): deltarpm-3.6-3.el7.x86_64.rpm                                                                      |  82 kB  00:00:00
(4/4): libxml2-python-2.9.1-6.el7.5.x86_64.rpm                                                            | 247 kB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------
合計                                                                                             2.4 MB/s | 454 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : deltarpm-3.6-3.el7.x86_64                                                                        1/4
  インストール中          : python-deltarpm-3.6-3.el7.x86_64                                                                 2/4
  インストール中          : libxml2-python-2.9.1-6.el7.5.x86_64                                                              3/4
  インストール中          : createrepo-0.9.9-28.el7.noarch                                                                   4/4
  検証中                  : createrepo-0.9.9-28.el7.noarch                                                                   1/4
  検証中                  : libxml2-python-2.9.1-6.el7.5.x86_64                                                              2/4
  検証中                  : deltarpm-3.6-3.el7.x86_64                                                                        3/4
  検証中                  : python-deltarpm-3.6-3.el7.x86_64                                                                 4/4

インストール:
  createrepo.noarch 0:0.9.9-28.el7

依存性関連をインストールしました:
  deltarpm.x86_64 0:3.6-3.el7          libxml2-python.x86_64 0:2.9.1-6.el7.5          python-deltarpm.x86_64 0:3.6-3.el7

完了しました!
#インストール後確認
[root@epimet-cent7-1 yum]# rpm -qa |grep createrepo
createrepo-0.9.9-28.el7.noarch
【リポジトリ作成用サーバで実行】epel-releaseのインストール

Ansibleをインストールする際にCentOSにデフォルトで含まれている参照先リポジトリにはansibleは含まれていないため
epel-release(EPELリポジトリ)をインストールする必要があります。
epel-releaseを入れずにyum install ansibleを打つと"パッケージ ansible は利用できません。"と出てきてインストールできません。

[root@epimet-cent7-1 ~]# yum install epel-release
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-11 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================================================
 Package                            アーキテクチャー             バージョン                   リポジトリー                  容量
=================================================================================================================================
インストール中:
 epel-release                       noarch                       7-11                         extras                        15 k

トランザクションの要約
=================================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 15 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/extras/packages/epel-release-7-11.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
epel-release-7-11.noarch.rpm の公開鍵がインストールされていません
epel-release-7-11.noarch.rpm                                                                              |  15 kB  00: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-9.2009.0.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
  インストール中          : epel-release-7-11.noarch                                                                         1/1
  検証中                  : epel-release-7-11.noarch                                                                         1/1

インストール:
  epel-release.noarch 0:7-11

完了しました!
【リポジトリ作成用サーバで実行】yumキャッシュの有効化

yumコマンドでコマンドやソフトウェアをインストールした際に取得したrpmファイルはデフォルトではインストール作業後破棄されますが
/etc/yum.confのkeepcahceを1に設定することでrpmを保持することができます。
※rpmファイルを貯め続け容量を逼迫することが考えられるので通常時は無効化(0)しておくのがベストかと思います。
今回はオンラインのサーバにAnsibleをyumでインストールし、その際に取得したrpmファイルからリポジトリを作成します。

#事前確認
[root@epimet-cent7-1 ~]# cat /etc/yum.conf|grep keepcache
keepcache=0
#/etc/yum.confを編集する
[root@epimet-cent7-1 ~]# vi /etc/yum.conf
~~~~~~~~
keepcache=0
~~~~~~~~
↓に書き換える
~~~~~~~~
keepcache=1
~~~~~~~~
#:wq!で保存する
#変更確認
[root@epimet-cent7-1 ~]# cat /etc/yum.conf|grep keepcache
keepcache=1
【リポジトリ作成用サーバで実行】Ansibleのインストール及びパッケージ取得

パッケージを保持する設定をしたので、yum install ansibleでAnsibleをインストールしてパッケージを取得します。
yumコマンドで取得したパッケージは/var/cache/yum/配下に保持されます。

#事前確認容量確認
[root@epimet-cent7-1 ~]# du -h /var/cache/yum/
31M     /var/cache/yum/x86_64/7/base/gen
0       /var/cache/yum/x86_64/7/base/packages
37M     /var/cache/yum/x86_64/7/base
1.2M    /var/cache/yum/x86_64/7/extras/gen
0       /var/cache/yum/x86_64/7/extras/packages
1.4M    /var/cache/yum/x86_64/7/extras
30M     /var/cache/yum/x86_64/7/updates/gen
0       /var/cache/yum/x86_64/7/updates/packages
36M     /var/cache/yum/x86_64/7/updates
73M     /var/cache/yum/x86_64/7
73M     /var/cache/yum/x86_64
73M     /var/cache/yum/
#Ansibleインストール
[root@epimet-cent7-1 ~]# yum install ansible
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                      | 6.5 kB  00:00:00
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                                                      | 3.6 kB  00:00:00
extras                                                                                                    | 2.9 kB  00:00:00
updates                                                                                                   | 2.9 kB  00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ansible.noarch 0:2.9.17-1.el7 を インストール
--> 依存性の処理をしています: PyYAML のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-httplib2 のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-jinja2 のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-paramiko のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-setuptools のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-six のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python2-cryptography のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python2-jmespath のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: sshpass のパッケージ: ansible-2.9.17-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ PyYAML.x86_64 0:3.10-11.el7 を インストール
--> 依存性の処理をしています: libyaml-0.so.2()(64bit) のパッケージ: PyYAML-3.10-11.el7.x86_64
---> パッケージ python-jinja2.noarch 0:2.7.2-4.el7 を インストール
--> 依存性の処理をしています: python-babel >= 0.8 のパッケージ: python-jinja2-2.7.2-4.el7.noarch
--> 依存性の処理をしています: python-markupsafe のパッケージ: python-jinja2-2.7.2-4.el7.noarch
---> パッケージ python-paramiko.noarch 0:2.1.1-9.el7 を インストール
--> 依存性の処理をしています: python2-pyasn1 のパッケージ: python-paramiko-2.1.1-9.el7.noarch
---> パッケージ python-setuptools.noarch 0:0.9.8-7.el7 を インストール
--> 依存性の処理をしています: python-backports-ssl_match_hostname のパッケージ: python-setuptools-0.9.8-7.el7.noarch
---> パッケージ python-six.noarch 0:1.9.0-2.el7 を インストール
---> パッケージ python2-cryptography.x86_64 0:1.7.2-2.el7 を インストール
--> 依存性の処理をしています: python-idna >= 2.0 のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
--> 依存性の処理をしています: python-cffi >= 1.4.1 のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
--> 依存性の処理をしています: python-ipaddress のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
--> 依存性の処理をしています: python-enum34 のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
---> パッケージ python2-httplib2.noarch 0:0.18.1-3.el7 を インストール
---> パッケージ python2-jmespath.noarch 0:0.9.4-2.el7 を インストール
---> パッケージ sshpass.x86_64 0:1.06-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ libyaml.x86_64 0:0.1.4-11.el7_0 を インストール
---> パッケージ python-babel.noarch 0:0.9.6-8.el7 を インストール
---> パッケージ python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 を インストール
--> 依存性の処理をしています: python-backports のパッケージ: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
---> パッケージ python-cffi.x86_64 0:1.6.0-5.el7 を インストール
--> 依存性の処理をしています: python-pycparser のパッケージ: python-cffi-1.6.0-5.el7.x86_64
---> パッケージ 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 を インストール
---> パッケージ python2-pyasn1.noarch 0:0.1.9-7.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ python-backports.x86_64 0:1.0-8.el7 を インストール
---> パッケージ python-pycparser.noarch 0:2.14-1.el7 を インストール
--> 依存性の処理をしています: python-ply のパッケージ: python-pycparser-2.14-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-ply.noarch 0:3.4-11.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

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

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

総ダウンロード容量: 22 M
インストール容量: 124 M
Is this ok [y/d/N]: y
Downloading packages:
(1/22): PyYAML-3.10-11.el7.x86_64.rpm                                                                     | 153 kB  00:00:00
(2/22): python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm                                      |  13 kB  00:00:00
(3/22): python-cffi-1.6.0-5.el7.x86_64.rpm                                                                | 218 kB  00:00:00
(4/22): python-enum34-1.0.4-1.el7.noarch.rpm                                                              |  52 kB  00:00:00
(5/22): python-idna-2.4-1.el7.noarch.rpm                                                                  |  94 kB  00:00:00
(6/22): python-ipaddress-1.0.16-2.el7.noarch.rpm                                                          |  34 kB  00:00:00
(7/22): python-backports-1.0-8.el7.x86_64.rpm                                                             | 5.8 kB  00:00:00
(8/22): python-babel-0.9.6-8.el7.noarch.rpm                                                               | 1.4 MB  00:00:00
(9/22): libyaml-0.1.4-11.el7_0.x86_64.rpm                                                                 |  55 kB  00:00:00
(10/22): python-jinja2-2.7.2-4.el7.noarch.rpm                                                             | 519 kB  00:00:00
(11/22): python-paramiko-2.1.1-9.el7.noarch.rpm                                                           | 269 kB  00:00:00
(12/22): python-ply-3.4-11.el7.noarch.rpm                                                                 | 123 kB  00:00:00
(13/22): python-markupsafe-0.11-10.el7.x86_64.rpm                                                         |  25 kB  00:00:00
(14/22): python-six-1.9.0-2.el7.noarch.rpm                                                                |  29 kB  00:00:00
(15/22): python-setuptools-0.9.8-7.el7.noarch.rpm                                                         | 397 kB  00:00:00
(16/22): python-pycparser-2.14-1.el7.noarch.rpm                                                           | 104 kB  00:00:00
(17/22): python2-cryptography-1.7.2-2.el7.x86_64.rpm                                                      | 502 kB  00:00:00
warning: /var/cache/yum/x86_64/7/epel/packages/ansible-2.9.17-1.el7.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
ansible-2.9.17-1.el7.noarch.rpm の公開鍵がインストールされていません
(18/22): ansible-2.9.17-1.el7.noarch.rpm                                                                  |  17 MB  00:00:00
(19/22): python2-httplib2-0.18.1-3.el7.noarch.rpm                                                         | 125 kB  00:00:00
(20/22): python2-jmespath-0.9.4-2.el7.noarch.rpm                                                          |  41 kB  00:00:00
(21/22): sshpass-1.06-2.el7.x86_64.rpm                                                                    |  21 kB  00:00:00
(22/22): python2-pyasn1-0.1.9-7.el7.noarch.rpm                                                            | 100 kB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------
合計                                                                                              36 MB/s |  22 MB  00:00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-11.noarch (@extras)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python2-pyasn1-0.1.9-7.el7.noarch                                                               1/22
  インストール中          : python-ipaddress-1.0.16-2.el7.noarch                                                            2/22
  インストール中          : python-six-1.9.0-2.el7.noarch                                                                   3/22
  インストール中          : sshpass-1.06-2.el7.x86_64                                                                       4/22
  インストール中          : libyaml-0.1.4-11.el7_0.x86_64                                                                   5/22
  インストール中          : PyYAML-3.10-11.el7.x86_64                                                                       6/22
  インストール中          : python-backports-1.0-8.el7.x86_64                                                               7/22
  インストール中          : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                                        8/22
  インストール中          : python-setuptools-0.9.8-7.el7.noarch                                                            9/22
  インストール中          : python2-httplib2-0.18.1-3.el7.noarch                                                           10/22
  インストール中          : python-babel-0.9.6-8.el7.noarch                                                                11/22
  インストール中          : python2-jmespath-0.9.4-2.el7.noarch                                                            12/22
  インストール中          : python-ply-3.4-11.el7.noarch                                                                   13/22
  インストール中          : python-pycparser-2.14-1.el7.noarch                                                             14/22
  インストール中          : python-cffi-1.6.0-5.el7.x86_64                                                                 15/22
  インストール中          : python-markupsafe-0.11-10.el7.x86_64                                                           16/22
  インストール中          : python-jinja2-2.7.2-4.el7.noarch                                                               17/22
  インストール中          : python-idna-2.4-1.el7.noarch                                                                   18/22
  インストール中          : python-enum34-1.0.4-1.el7.noarch                                                               19/22
  インストール中          : python2-cryptography-1.7.2-2.el7.x86_64                                                        20/22
  インストール中          : python-paramiko-2.1.1-9.el7.noarch                                                             21/22
  インストール中          : ansible-2.9.17-1.el7.noarch                                                                    22/22
  検証中                  : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                                        1/22
  検証中                  : python-enum34-1.0.4-1.el7.noarch                                                                2/22
  検証中                  : python-setuptools-0.9.8-7.el7.noarch                                                            3/22
  検証中                  : python-jinja2-2.7.2-4.el7.noarch                                                                4/22
  検証中                  : python-six-1.9.0-2.el7.noarch                                                                   5/22
  検証中                  : python-idna-2.4-1.el7.noarch                                                                    6/22
  検証中                  : python-markupsafe-0.11-10.el7.x86_64                                                            7/22
  検証中                  : python-ply-3.4-11.el7.noarch                                                                    8/22
  検証中                  : python-paramiko-2.1.1-9.el7.noarch                                                              9/22
  検証中                  : python2-jmespath-0.9.4-2.el7.noarch                                                            10/22
  検証中                  : python-babel-0.9.6-8.el7.noarch                                                                11/22
  検証中                  : PyYAML-3.10-11.el7.x86_64                                                                      12/22
  検証中                  : python2-httplib2-0.18.1-3.el7.noarch                                                           13/22
  検証中                  : python-backports-1.0-8.el7.x86_64                                                              14/22
  検証中                  : python-cffi-1.6.0-5.el7.x86_64                                                                 15/22
  検証中                  : python-pycparser-2.14-1.el7.noarch                                                             16/22
  検証中                  : libyaml-0.1.4-11.el7_0.x86_64                                                                  17/22
  検証中                  : python-ipaddress-1.0.16-2.el7.noarch                                                           18/22
  検証中                  : sshpass-1.06-2.el7.x86_64                                                                      19/22
  検証中                  : python2-pyasn1-0.1.9-7.el7.noarch                                                              20/22
  検証中                  : ansible-2.9.17-1.el7.noarch                                                                    21/22
  検証中                  : python2-cryptography-1.7.2-2.el7.x86_64                                                        22/22

インストール:
  ansible.noarch 0:2.9.17-1.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-jinja2.noarch 0:2.7.2-4.el7
  python-markupsafe.x86_64 0:0.11-10.el7                                    python-paramiko.noarch 0:2.1.1-9.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-httplib2.noarch 0:0.18.1-3.el7
  python2-jmespath.noarch 0:0.9.4-2.el7                                     python2-pyasn1.noarch 0:0.1.9-7.el7
  sshpass.x86_64 0:1.06-2.el7

完了しました!

#インストール後容量確認(増えていることを確認)
[root@epimet-cent7-1 ~]# du -h /var/cache/yum/
31M     /var/cache/yum/x86_64/7/base/gen
4.1M    /var/cache/yum/x86_64/7/base/packages
41M     /var/cache/yum/x86_64/7/base
1.2M    /var/cache/yum/x86_64/7/extras/gen
24K     /var/cache/yum/x86_64/7/extras/packages
1.4M    /var/cache/yum/x86_64/7/extras
30M     /var/cache/yum/x86_64/7/updates/gen
0       /var/cache/yum/x86_64/7/updates/packages
36M     /var/cache/yum/x86_64/7/updates
30M     /var/cache/yum/x86_64/7/epel/gen
18M     /var/cache/yum/x86_64/7/epel/packages
56M     /var/cache/yum/x86_64/7/epel
132M    /var/cache/yum/x86_64/7
132M    /var/cache/yum/x86_64
224K    /var/cache/yum/repodata
133M    /var/cache/yum/
【リポジトリ作成用サーバで実行】リポジトリ作成

createrepoコマンドで/var/cache/yum/配下に取得したパッケージからリポジトリを作成します。

#ディレクトリ移動
[root@epimet-cent7-1 ~]# cd /var/cache/yum/
#リポジトリ作成(Sqlite DBs completeと表示されること)
[root@epimet-cent7-1 yum]# createrepo ./
Spawning worker 0 with 11 pkgs
Spawning worker 1 with 11 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
#リポジトリ作成確認
[root@epimet-cent7-1 yum]# ls -ltr ./repodata/
合計 220
-rw-r--r--. 1 root root  8158  2月 28 23:04 b7215c54bee760245df1bac93f71ac9730f7e92a134e293b87912ad2c59d3144-other.xml.gz
-rw-r--r--. 1 root root 82103  2月 28 23:04 7596da6395aef2f6a720217c8f860fbc835237c52763d8ec795cdf0dba8dc3b7-filelists.xml.gz
-rw-r--r--. 1 root root  8388  2月 28 23:04 3de5b6037c4ff97a685d94f953196d6c87ee69331f01d715234268e2d40602b1-primary.xml.gz
-rw-r--r--. 1 root root 11351  2月 28 23:04 74514e3fb7c6cd5ad587bafa8bf28c5490a4ce00af8c7759454494db3e015c7d-other.sqlite.bz2
-rw-r--r--. 1 root root 83502  2月 28 23:04 1e36e905c0531c7bb173def134aef3d6a72ac12e7a37a107e5e794dab50785fd-filelists.sqlite.bz2
-rw-r--r--. 1 root root  2982  2月 28 23:04 repomd.xml
-rw-r--r--. 1 root root 12961  2月 28 23:04 735a4fc57378dae0bcec727507395946df5f42330cc04f2e8a32891f05288c92-primary.sqlite.bz2
【リポジトリ作成用サーバで実行】yumキャッシュの無効化

Ansibleのパッケージは収集し終えたのでパッケージ保持の設定は無効化します。

#事前確認
[root@epimet-cent7-1 ~]# cat /etc/yum.conf|grep keepcache
keepcache=1
#/etc/yum.confを編集する
[root@epimet-cent7-1 ~]# vi /etc/yum.conf
~~~~~~~~
keepcache=1
~~~~~~~~
↓に書き換える
~~~~~~~~
keepcache=0
~~~~~~~~
#:wq!で保存する
#変更確認
[root@epimet-cent7-1 ~]# cat /etc/yum.conf|grep keepcache
keepcache=0

ローカルリポジトリを使用してAnsibleインストール

【リポジトリ作成用サーバで実行】スタンドアロンサーバへリポジトリ転送

作成したリポジトリをスタンドアロンサーバ(192.168.0.33)の/tmpへ転送します。
今回はSCPコマンドを使用しますがwinscpやfilezillaなどのツールで回収と転送でも大丈夫です。

[root@epimet-cent7-1 yum]# scp -r /var/cache/yum/ root@192.168.0.33:/tmp

# scp初回時に表示されるのでyes(ここから)
The authenticity of host '192.168.0.33 (192.168.0.33)' can't be established.
ECDSA key fingerprint is SHA256:0HHnfiftvH54mLW2bzqadOGQXHsvVakmd0nIKV21Nis.
ECDSA key fingerprint is MD5:41:0d:b2:36:3b:98:9c:81:55:b7:2e:75:ce:65:f6:be.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.33' (ECDSA) to the list of known hosts.
# scp初回時に表示される(ここまで)

root@192.168.0.33's password: #スタンドアロンサーバのrootパスワードを入力して[Enter]
primary_db.sqlite                                                                              100%   30MB  76.7MB/s   00:00
PyYAML-3.10-11.el7.x86_64.rpm                                                                  100%  153KB  58.3MB/s   00:00
python-babel-0.9.6-8.el7.noarch.rpm                                                            100% 1393KB  70.8MB/s   00:00
python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm                                   100%   13KB  15.2MB/s   00:00
libyaml-0.1.4-11.el7_0.x86_64.rpm                                                              100%   55KB  42.6MB/s   00:00
python-cffi-1.6.0-5.el7.x86_64.rpm                                                             100%  218KB  64.0MB/s   00:00
python-backports-1.0-8.el7.x86_64.rpm                                                          100% 5932     9.6MB/s   00:00
python-enum34-1.0.4-1.el7.noarch.rpm                                                           100%   52KB  44.6MB/s   00:00
python-idna-2.4-1.el7.noarch.rpm                                                               100%   94KB  58.3MB/s   00:00
python-ipaddress-1.0.16-2.el7.noarch.rpm                                                       100%   34KB  30.0MB/s   00:00
python-jinja2-2.7.2-4.el7.noarch.rpm                                                           100%  519KB  74.7MB/s   00:00
python-markupsafe-0.11-10.el7.x86_64.rpm                                                       100%   25KB  23.8MB/s   00:00
python-paramiko-2.1.1-9.el7.noarch.rpm                                                         100%  269KB  63.3MB/s   00:00
python-pycparser-2.14-1.el7.noarch.rpm                                                         100%  104KB  52.0MB/s   00:00
python-ply-3.4-11.el7.noarch.rpm                                                               100%  123KB  57.3MB/s   00:00
python-setuptools-0.9.8-7.el7.noarch.rpm                                                       100%  397KB  71.3MB/s   00:00
python-six-1.9.0-2.el7.noarch.rpm                                                              100%   29KB  28.7MB/s   00:00
python2-cryptography-1.7.2-2.el7.x86_64.rpm                                                    100%  502KB  71.6MB/s   00:00
python2-pyasn1-0.1.9-7.el7.noarch.rpm                                                          100%  100KB  50.7MB/s   00:00
mirrorlist.txt                                                                                 100%  572   396.7KB/s   00:00
repomd.xml                                                                                     100% 3736     4.5MB/s   00:00
cachecookie                                                                                    100%    0     0.0KB/s   00:00
a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301-c7-x86_64-comps.xml.gz        100%  153KB  56.8MB/s   00:00
6d0c3a488c282fe537794b5946b01e28c7f44db79097bb06826e1c0c88bad5ef-primary.sqlite.bz2            100% 6203KB  78.3MB/s   00:00
timedhosts.txt                                                                                 100%  455   600.0KB/s   00:00
primary_db.sqlite                                                                              100% 1161KB  77.9MB/s   00:00
sshpass-1.06-2.el7.x86_64.rpm                                                                  100%   21KB  21.8MB/s   00:00
mirrorlist.txt                                                                                 100%  629     1.3MB/s   00:00
repomd.xml                                                                                     100% 2997     1.0MB/s   00:00
cachecookie                                                                                    100%    0     0.0KB/s   00:00
f566f80ea90a80473260b93311d51f669dedd898c7a25836b121b0e44fdc9e75-primary.sqlite.bz2            100%  225KB  65.2MB/s   00:00
primary_db.sqlite                                                                              100%   29MB  82.7MB/s   00:00
mirrorlist.txt                                                                                 100%  636   842.0KB/s   00:00
repomd.xml                                                                                     100% 3007     5.3MB/s   00:00
cachecookie                                                                                    100%    0     0.0KB/s   00:00
bcdd5a0f2053a9e3d18bc20b1b07b74e4f38ee3240897cd7202c532c2c80bc23-primary.sqlite.bz2            100% 5770KB  91.4MB/s   00:00
timedhosts                                                                                     100%  169   199.1KB/s   00:00
primary_db.sqlite                                                                              100%   29MB  77.5MB/s   00:00
ansible-2.9.17-1.el7.noarch.rpm                                                                100%   17MB  97.1MB/s   00:00
python2-httplib2-0.18.1-3.el7.noarch.rpm                                                       100%  125KB  47.7MB/s   00:00
python2-jmespath-0.9.4-2.el7.noarch.rpm                                                        100%   41KB  23.5MB/s   00:00
metalink.xml                                                                                   100% 6636     8.7MB/s   00:00
repomd.xml                                                                                     100% 4850     9.0MB/s   00:00
cachecookie                                                                                    100%    0     0.0KB/s   00:00
cef995832c63bc594991cfc00a5910c8cd3ed8c220df9aa019d62a86a22aaf49-updateinfo.xml.bz2            100% 1025KB  83.5MB/s   00:00
f7dcae2527a34760d69f8690d8049c97210f05fe3dd4a94a16ff46ce2b6cdf5f-comps-Everything.x86_64.xml.g 100%   95KB  50.7MB/s   00:00
bd5cf58fd70c5ad16ce6d814823f832382dbbb13ee5bfb74951ddb4d338ead2f-primary.sqlite.bz2            100% 7063KB 103.4MB/s   00:00
.gpgkeyschecked.yum                                                                            100%    0     0.0KB/s   00:00
74514e3fb7c6cd5ad587bafa8bf28c5490a4ce00af8c7759454494db3e015c7d-other.sqlite.bz2              100%   11KB   5.7MB/s   00:00
b7215c54bee760245df1bac93f71ac9730f7e92a134e293b87912ad2c59d3144-other.xml.gz                  100% 8158    13.2MB/s   00:00
1e36e905c0531c7bb173def134aef3d6a72ac12e7a37a107e5e794dab50785fd-filelists.sqlite.bz2          100%   82KB  46.8MB/s   00:00
7596da6395aef2f6a720217c8f860fbc835237c52763d8ec795cdf0dba8dc3b7-filelists.xml.gz              100%   80KB  47.0MB/s   00:00
735a4fc57378dae0bcec727507395946df5f42330cc04f2e8a32891f05288c92-primary.sqlite.bz2            100%   13KB  16.4MB/s   00:00
3de5b6037c4ff97a685d94f953196d6c87ee69331f01d715234268e2d40602b1-primary.xml.gz                100% 8388     8.3MB/s   00:00
repomd.xml                                                                                     100% 2982     4.5MB/s   00:00
【スタンドアロンサーバで実行】ローカルリポジトリ転送確認
[root@epimet-cent7-2 ~]# cd /tmp 
[root@epimet-cent7-2 tmp]# ls -l
drwx------. 3 root root 17  2月 28 22:42 systemd-private-4357595e64bc4f7c94518f23f602643c-chronyd.service-QO621e
drwx------. 2 root root  6  3月  1  2021 vmware-root_780-2957124724
drwxr-xr-x. 4 root root 36  2月 28 23:06 yum #転送してきたリポジトリファイル
【スタンドアロンサーバで実行】ローカルリポジトリ設定

オンラインのサーバから取得したリポジトリを登録します。

[root@epimet-cent7-2 tmp]# cd /etc/yum.repos.d/
[root@epimet-cent7-2 yum.repos.d]# ll #デフォルトで登録してあるリポジトリ定義の確認
合計 40
-rw-r--r--. 1 root root 1664 10月 23 23:53 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 10月 23 23:53 CentOS-CR.repo
-rw-r--r--. 1 root root  649 10月 23 23:53 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 10月 23 23:53 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 10月 23 23:53 CentOS-Sources.repo
-rw-r--r--. 1 root root 8515 10月 23 23:53 CentOS-Vault.repo
-rw-r--r--. 1 root root  314 10月 23 23:53 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  616 10月 23 23:53 CentOS-x86_64-kernel.repo
[root@epimet-cent7-2 yum.repos.d]# vi Ansible.repo #"Ansible.repo"という名前でリポジトリ定義の作成
##--ここから--
[ansible_repo]
name=absible Repository
baseurl=file:///tmp/yum/
gpgcheck=0

##--ここまでコピーアンドペースト--※最終行は空行
#:wq!で保存
#Ansible.repo作成確認
[root@epimet-cent7-2 yum.repos.d]# cat Ansible.repo
[ansible_repo]
name=absible Repository
baseurl=file:///tmp/yum/
gpgcheck=0

#Ansible.repoの登録確認※Ansible.repoが表示されることを確認します
[root@epimet-cent7-2 yum.repos.d]# yum repolist
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
ansible_repo                                                                                                            | 2.9 kB  00:00:00     
base                                                                                                                    | 3.6 kB  00:00:00     
extras                                                                                                                  | 2.9 kB  00:00:00     
updates                                                                                                                 | 2.9 kB  00:00:00     
(1/5): ansible_repo/primary_db                                                                                          |  13 kB  00:00:00     
(2/5): base/7/x86_64/group_gz                                                                                           | 153 kB  00:00:00     
(3/5): extras/7/x86_64/primary_db                                                                                       | 225 kB  00:00:00     
(4/5): base/7/x86_64/primary_db                                                                                         | 6.1 MB  00:00:00     
(5/5): updates/7/x86_64/primary_db                                                                                      | 5.6 MB  00:00:00     
リポジトリー ID                                                    リポジトリー名                                                        状態
ansible_repo                                                       absible Repository                                                        22
base/7/x86_64                                                      CentOS-7 - Base                                                       10,072
extras/7/x86_64                                                    CentOS-7 - Extras                                                        453
updates/7/x86_64                                                   CentOS-7 - Updates                                                     1,687
repolist: 12,234
【スタンドアロンサーバで実行】ローカルリポジトリからAnsibleインストール

ローカルリポジトリの設定が済んだので、Ansibleのインストールを行います。

#事前確認
[root@epimet-cent7-2 yum.repos.d]# rpm -qa |grep ansible
※何も出力されないこと
[root@epimet-cent7-2 yum.repos.d]# yum install ansible
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ansible.noarch 0:2.9.17-1.el7 を インストール
--> 依存性の処理をしています: sshpass のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python2-jmespath のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python2-cryptography のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-six のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-setuptools のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-paramiko のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-jinja2 のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: python-httplib2 のパッケージ: ansible-2.9.17-1.el7.noarch
--> 依存性の処理をしています: PyYAML のパッケージ: ansible-2.9.17-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ PyYAML.x86_64 0:3.10-11.el7 を インストール
--> 依存性の処理をしています: libyaml-0.so.2()(64bit) のパッケージ: PyYAML-3.10-11.el7.x86_64
---> パッケージ python-jinja2.noarch 0:2.7.2-4.el7 を インストール
--> 依存性の処理をしています: python-babel >= 0.8 のパッケージ: python-jinja2-2.7.2-4.el7.noarch
--> 依存性の処理をしています: python-markupsafe のパッケージ: python-jinja2-2.7.2-4.el7.noarch
---> パッケージ python-paramiko.noarch 0:2.1.1-9.el7 を インストール
--> 依存性の処理をしています: python2-pyasn1 のパッケージ: python-paramiko-2.1.1-9.el7.noarch
---> パッケージ python-setuptools.noarch 0:0.9.8-7.el7 を インストール
--> 依存性の処理をしています: python-backports-ssl_match_hostname のパッケージ: python-setuptools-0.9.8-7.el7.noarch
---> パッケージ python-six.noarch 0:1.9.0-2.el7 を インストール
---> パッケージ python2-cryptography.x86_64 0:1.7.2-2.el7 を インストール
--> 依存性の処理をしています: python-idna >= 2.0 のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
--> 依存性の処理をしています: python-cffi >= 1.4.1 のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
--> 依存性の処理をしています: python-ipaddress のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
--> 依存性の処理をしています: python-enum34 のパッケージ: python2-cryptography-1.7.2-2.el7.x86_64
---> パッケージ python2-httplib2.noarch 0:0.18.1-3.el7 を インストール
---> パッケージ python2-jmespath.noarch 0:0.9.4-2.el7 を インストール
---> パッケージ sshpass.x86_64 0:1.06-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ libyaml.x86_64 0:0.1.4-11.el7_0 を インストール
---> パッケージ python-babel.noarch 0:0.9.6-8.el7 を インストール
---> パッケージ python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 を インストール
--> 依存性の処理をしています: python-backports のパッケージ: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
---> パッケージ python-cffi.x86_64 0:1.6.0-5.el7 を インストール
--> 依存性の処理をしています: python-pycparser のパッケージ: python-cffi-1.6.0-5.el7.x86_64
---> パッケージ 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 を インストール
---> パッケージ python2-pyasn1.noarch 0:0.1.9-7.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ python-backports.x86_64 0:1.0-8.el7 を インストール
---> パッケージ python-pycparser.noarch 0:2.14-1.el7 を インストール
--> 依存性の処理をしています: python-ply のパッケージ: python-pycparser-2.14-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-ply.noarch 0:3.4-11.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

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

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

総ダウンロード容量: 22 M
インストール容量: 124 M
Is this ok [y/d/N]: y
Downloading packages:
-------------------------------------------------------------------------------------------------------------------------------
合計                                                                                           236 MB/s |  22 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python2-pyasn1-0.1.9-7.el7.noarch                                                             1/22
  インストール中          : python-ipaddress-1.0.16-2.el7.noarch                                                          2/22
  インストール中          : python-six-1.9.0-2.el7.noarch                                                                 3/22
  インストール中          : sshpass-1.06-2.el7.x86_64                                                                     4/22
  インストール中          : libyaml-0.1.4-11.el7_0.x86_64                                                                 5/22
  インストール中          : PyYAML-3.10-11.el7.x86_64                                                                     6/22
  インストール中          : python-backports-1.0-8.el7.x86_64                                                             7/22
  インストール中          : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                                      8/22
  インストール中          : python-setuptools-0.9.8-7.el7.noarch                                                          9/22
  インストール中          : python2-httplib2-0.18.1-3.el7.noarch                                                         10/22
  インストール中          : python-babel-0.9.6-8.el7.noarch                                                              11/22
  インストール中          : python2-jmespath-0.9.4-2.el7.noarch                                                          12/22
  インストール中          : python-ply-3.4-11.el7.noarch                                                                 13/22
  インストール中          : python-pycparser-2.14-1.el7.noarch                                                           14/22
  インストール中          : python-cffi-1.6.0-5.el7.x86_64                                                               15/22
  インストール中          : python-markupsafe-0.11-10.el7.x86_64                                                         16/22
  インストール中          : python-jinja2-2.7.2-4.el7.noarch                                                             17/22
  インストール中          : python-idna-2.4-1.el7.noarch                                                                 18/22
  インストール中          : python-enum34-1.0.4-1.el7.noarch                                                             19/22
  インストール中          : python2-cryptography-1.7.2-2.el7.x86_64                                                      20/22
  インストール中          : python-paramiko-2.1.1-9.el7.noarch                                                           21/22
  インストール中          : ansible-2.9.17-1.el7.noarch                                                                  22/22
  検証中                  : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                                      1/22
  検証中                  : python-enum34-1.0.4-1.el7.noarch                                                              2/22
  検証中                  : python-setuptools-0.9.8-7.el7.noarch                                                          3/22
  検証中                  : python-jinja2-2.7.2-4.el7.noarch                                                              4/22
  検証中                  : python-six-1.9.0-2.el7.noarch                                                                 5/22
  検証中                  : python-idna-2.4-1.el7.noarch                                                                  6/22
  検証中                  : python-markupsafe-0.11-10.el7.x86_64                                                          7/22
  検証中                  : python-ply-3.4-11.el7.noarch                                                                  8/22
  検証中                  : python-paramiko-2.1.1-9.el7.noarch                                                            9/22
  検証中                  : python2-jmespath-0.9.4-2.el7.noarch                                                          10/22
  検証中                  : python-babel-0.9.6-8.el7.noarch                                                              11/22
  検証中                  : ansible-2.9.17-1.el7.noarch                                                                  12/22
  検証中                  : python2-httplib2-0.18.1-3.el7.noarch                                                         13/22
  検証中                  : python-backports-1.0-8.el7.x86_64                                                            14/22
  検証中                  : python-cffi-1.6.0-5.el7.x86_64                                                               15/22
  検証中                  : python-pycparser-2.14-1.el7.noarch                                                           16/22
  検証中                  : libyaml-0.1.4-11.el7_0.x86_64                                                                17/22
  検証中                  : python-ipaddress-1.0.16-2.el7.noarch                                                         18/22
  検証中                  : sshpass-1.06-2.el7.x86_64                                                                    19/22
  検証中                  : python2-pyasn1-0.1.9-7.el7.noarch                                                            20/22
  検証中                  : PyYAML-3.10-11.el7.x86_64                                                                    21/22
  検証中                  : python2-cryptography-1.7.2-2.el7.x86_64                                                      22/22

インストール:
  ansible.noarch 0:2.9.17-1.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-jinja2.noarch 0:2.7.2-4.el7
  python-markupsafe.x86_64 0:0.11-10.el7                                   python-paramiko.noarch 0:2.1.1-9.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-httplib2.noarch 0:0.18.1-3.el7
  python2-jmespath.noarch 0:0.9.4-2.el7                                    python2-pyasn1.noarch 0:0.1.9-7.el7
  sshpass.x86_64 0:1.06-2.el7

完了しました!
#インストール後確認
[root@epimet-cent7-2 yum.repos.d]# rpm -qa|grep ansible
ansible-2.9.17-1.el7.noarch

所感

駆け足気味でしたが以上で、リポジトリ作成と転送、ローカルリポジトリとして使用するまでの手順となります。

参考

【Linuxを使いこなす】 CentOSのローカルリポジトリを構築しよう | システムや業務のプロデュースカンパニー | 株式会社アドックインターナショナル
[CentOS7]EPELリポジトリの簡単な追加方法 | Zero Configuration

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WebARENA VPSクラウドで新規ユーザーを作成し、ssh接続をするまで

はじめに

初めての記事です。
拙い日本語になると思いますが、ご容赦願います。
本記事では、WebARENAのVPSクラウドで起動させたUbuntuサーバーに、新規作成したユーザーでsshログインをするまでにハマったことと、その解決策について書いていきます。

結論

  • WebARENA VPSクラウドのUbuntu 18.04インスタンスの初期ユーザー名はubuntu、パスワードはインスタンス名のi-以降の文字列。
  • sshログイン用の新規ユーザー作成時には、ディレクトリやファイルの所有者に注意

ハマりポイント#1 そもそも初期ユーザーでsshログインができない

WebARENA VPSクラウドのブラウザ管理画面には簡易マニュアルなるものがあります。私は始めてこのサービスを利用するため、このマニュアルに従ってセットアップを行いました。インスタンス生成、キーペア作成、セキュリティグループ作成まで進めていざssh接続をしようとしたところ...Permission denied (Publickey).

root@xxx.xxx.xxx.xxx: Permission denied (publickey).

確かにマニュアルではブラウザ上でキーペアを生成しダウンロードした.pemファイルから認証をする方法が書かれているにも関わらず、私は自前の公開鍵を登録しました。だって公開鍵コピペ用の入力ボックスがあるのだもの。

スクリーンショット_2021-02-28_21-21-57.png
なんか文字重なってるし...

一応マニュアル通りブラウザ上で生成したペアから認証を試みても...Permission denied。つまり、公開鍵が自前のものかブラウザから生成したものかはあまり関係ないようです。ログインユーザーもマニュアルに記載してある"root"で間違えないハズです
そこで安直に「webarena ubuntu ssh できない」とggったところ衝撃の事実が。なんとUbuntuインスタンスのログイン用初期ユーザーは"root"ではなく"ubuntu"だそうで。

一応このことは公式サイトにも記載してありました。

しかし一番最初に目につくであろう簡易マニュアルと記載が違うのはまさに罠...。
ちなみにCentOSインスタンスの場合の初期ユーザー名は"centos"。今確認してみたら、マニュアルには一応「CentOS用」と記載してはありました。でも、CentOSインスタンスを作成したとしてもおそらく"root"ではログインできない(未検証です)のだと思うと...。

そしてこれは1番目に載せたサイトに記載してあったことですが、sshログイン自体は公開鍵認証方式でできるもののssh接続先のパスワードとなるとまた話は別のようです。パスワードはWebARENA VPSクラウドのブラウザ管理画面から見れるインスタンス名のうち、i-以降の文字列になっています。sshでログインできた場合はプロンプト文字列のユーザー名@以降にあたる文字列がパスワードです。こちらの場合先頭のi-はもとからありません。
ざっと調べてみてもこの情報が公式で載ってないんですよね...

ハマりポイント#2 新規作成したユーザーのssh認証に失敗

※以下のことはWebARENA VPSクラウド特有のハマりではありません。

最初からあるユーザー"ubuntu"とは別にユーザーを作成し、そのユーザーでsshログインしようとした際に失敗した話です。ここでは新たに作成したユーザーを"caffeine"としています。
ユーザー作成は至って普通です。ユーザー"ubuntu"でログインした状態で作業を行います。

sudo useradd caffeine -m

-mオプションによってcaffeineのホームディレクトリを作成しています。)

sudo passwd caffeine
sudo usermod -G sudo caffeine

(caffeineのパスワードを設定し、sudoが使えるようにグループ設定を行います。)

次に、/home/caffeine/.ssh/下に/home/ubuntu/.ssh/authorized_keysをコピーします。ブラウザ上から私の環境の公開鍵を登録したので、ユーザー"ubuntu"のauthorized_keysを持ってくればOKです。

ここからがミスポイント。コピペして真似しないで下さい。

まずは.sshディレクトリを作成

sudo mkdir /home/caffeine/.ssh

root権限で行わないとPermission deniedとなるので安直にsudoをつけてしまいました。
そして

sudo cp /home/ubuntu/.ssh/authorized_keys /home/caffeine/.ssh

さて、これでcaffeineのホームディレクトリ以下にssh接続をするための材料が揃いました。
一度ユーザー"ubuntu"としてはログアウトし、クライアント側からユーザー"caffeine"として再度ログイン

ssh caffeine@xxx.xxx.xxx.xxx
caffeine@xxx.xxx.xxx.xxx: Permission denied (publickey).

ぱーみっしょんでぃないど ぱぶりっくきー。もう何度見たことか。ほんとこいつにはうんざりしますね。
ここからかなり消耗しました。ssh caffeine@xxx.xxx.xxx.xxx -vvvでデバッグ情報を確認したり、サーバー側で/var/log/auth.logを確認したり...
定番のパーミッション強度の確認や/home/caffeine/.ssh/authorized_keysに登録された公開鍵が自前のものと一致することの確認も行いました。それでも直らず...

ただ、原因はほんとにつまらないものです。/home/caffeine以下への.ssh/ディレクトリの作成、及びそのディレクトリ以下へのauthorized_keysのコピーをrootユーザーとして行っていたことで、ディレクトリとファイルがどちらもroot:rootの所有物になっていました。したがってPermission deniedが発生していたのです。

解決策は

sudo chown caffeine:caffeine /home/caffeine/.ssh
sudo chown caffeine:caffeine /home/caffeine/.ssh/authorized_key

これで所有者がcaffeineとなり、無事にcaffeineとしてsshログインができました。
めでたしめでたし。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LPIC1とLPIC2を取得時のメモ

LPIC1とLPIC2を取得したのでメモ

1.資格勉強に対する考え方

・資格は勉強した証拠としては使える。
・実力の証明には正直ならないと思った。(勉強した内容は忘れかけている…わからん時はぐぐれ)

なので、すべてを理解しないで良い。ざっくり理解

2.勉強方法

①小豆本でざっくり理解
②ping-tを解きまくる。わからない部分は小豆本で復習して理解する。
③模擬試験で安定で80%出せるようになる。もしくは勉強にあきる。
④1週間後くらいに試験を申し込む
⑤あとはひたすら、問題を解く

ping-tのコマンド問題について
特にやらないくて良いと思った。
・試験のコマンド問題は〇〇するためのコマンドは?コマンドのみ書いて とかなので…
・コマンドとそのオプションの意味くらい覚えていれば良いと思う。
・設定ファイル系はしっかり覚えた方が良いと思うので、活用はありだと思う。

LPIC101,102,201までは毛色が似ている。(ここまではすんなりいけた!)
LPIC202からはbind,Apacheなどの設定項目の意味とか、覚えることが多すぎる

(以下を参考にして、自宅PCのVitrualBoxで手を動かして作ったりした。)
Linuxサーバー構築標準教科書

3.よかったこと

・Linuxに対する抵抗感が少し減った
・勉強すれば、ある程度は理解できることがわかった。
(仕事だと分からんこと多すぎて、しゅんですが時間しっかり勉強すれば、理解できるかもという自信になった。)
・現場の人に褒められた

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ドメイン名をミスタイプしてLDAPインストールに苦戦した話

ブログで掲載している内容から一部抜粋。

Debian(bullseye/sid)でLDAPサーバーの構築中に少しハマりました。

インストール時にパスワードの設定をすると以下のエラー

入力された設定は無効です。DNS ドメイン名が有効な文法になっていること、組織名のフィールドが空になっていないことと、管理者パスワードが合っていることを確認してください。設定を再試行しないと、LDAP サーバはセットアップされません。あとで再試行するときには、"dpkg-reconfigure slapd" を実行してください。

ldap_error.png

パスワードの再入力を間違ったとも思わなかったのでとりあえず<いいえ>で進むと、エラー発生。
いろいろ試しましたが、結果から言うと、ドメインの設定に間違いがありました。
まさか初期セットアップ時からミスしているとは思わなくて気が付くまでしばらく時間を使いました。

slapdの削除 apt remove --purge slapd
/etc/hostsを修正した後にslapdの再インストールで無事解決しました。

以下で構築したときのことまとめています。
https://tamu-labo.net/posts/2021/02/28/ldap.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【3ステップで解説!】LinuC101(LPIC101)を取得するための勉強方法

こちらのURLに移行しました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ps aux | grepは何を行っているコマンドなのか?

OS上で動いているプロセスの確認をする際に使用するps aux|grep <process_name>
このコマンドはに、検索したいプロセスの名前を入れると、該当のプロセスが稼働しているかどうかを確認することができる便利なコマンドです。

ですが、実際、なんでps aux|grep <process_name>と叩くと、このような出力結果を得ることができるのでしょうか?
今回はps aux|grep <process_name>にあるパイプライン|に焦点をあてて解説したいと思います。

コマンドの解説

まずは前提となるps auxgrepについて簡単に解説します。

ps auxについて

ps auxのみを走らせてみましょう

~ ❯❯❯ ps aux
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
toshiokun  1465  18.4  2.7  6631496 448688   ??  S     6:19AM   1:15.15 com.docker.hyper
_windowserver      129   6.5  0.7  7502272 122076   ??  Ss    6:18AM   1:02.39 /System/Library/
toshiokun   511   5.7  0.4  5227076  64424   ??  S     6:19AM   0:03.67 /Applications/iT
toshiokun   682   2.7  1.4 23820844 243012   ??  S     6:19AM   0:16.65 /Applications/Vi
root               304   2.0  1.0  7502908 162908   ??  Ss    6:19AM   0:54.12 /System/Library/
toshiokun   625   1.9  0.4  4822416  74404   ??  S     6:19AM   0:13.14 /Applications/Vi
root                65   1.5  0.1  4418140  10388   ??  Ss    6:18AM   0:04.61 /Library/Applica
root                85   1.4  0.2  4566788  38356   ??  Ss    6:18AM   0:14.30 /System/Library/
_driverkit         288   1.2  0.0  4806844   2308   ??  Ss    6:19AM   0:03.48 /System/Library/
toshiokun   493   0.7  1.3  5568640 217188   ??  S     6:19AM   0:29.34 /Applications/Go

こんな感じで表示されると思います。

ps単体がそもそもLinux上で動いているプロセスを確認するコマンドなのですが、ps auxとオプションも指定してあげることで、「端末操作の」「CPUやメモリの使用率を付与した」「現在実行中の」プロセスを確認することができます。
基本的にはps auxとセットで覚えている方が多いでしょう。

grepについて

grepはある特定の単語を含む行を返すためのメソッドです。
例えば下記のようなファイルがあったとします。

hoge.txt
hoge
fuga
piyo
hogehoge
fugafuga
piyopiyo

この中から、hogeの文字を含む行を検索したいときには下記のコマンドを叩きます。

~ ❯❯❯ grep hoge hoge.txt
hoge #検索結果1
hogehoge #検索結果2

この場合、

  • 第1引数のhogeが検索単語
  • 第2引数のhoge.txtが後述する標準入力
  • 出力結果が後述する標準出力

となっています。

パイプライン(|)の意味

さて、今回のテーマであるps aux | grepの中にあるパイプライン(|)は何を意味しているのでしょうか。これを説明するにあたって、「標準入力」と「標準出力」について説明したいと思います。

標準入力とは?

標準入力とは、コマンドに対して入力する情報のことを指します。
それはコマンドラインで入力することもあるし、ファイルのこともあります。

先ほどのgrepの例で言えば、hoge.txtというファイルが標準入力になっているわけですが、コマンドラインの入力を標準入力にすることもできます。

~ ❯❯❯ grep hoge                                                        ✘ 130
hogehoge #コマンドラインから入力した標準入力
hogehoge #検索結果

~ ❯❯❯ grep hoge                                                        ✘ 130
fugafuga #コマンドラインから入力した標準入力
#標準入力の内容にhogeが含まれている行が存在しないため、検索結果が出力されない

標準出力とは?

対して標準出力というのは、コマンドの出力結果のことを指します。
これも出力先がコマンドラインのこともあるし、ファイルのこともあります。

少し余談ですが、もし標準出力をファイルにしたいときには下記のように>をつけてあげます。

grep hoge hoge.txt > result.txt
result.txt
hoge
hogehoge

パイプラインは標準出力を次のコマンドの標準入力に渡す仕組み

さてここでようやく本題に入れます。
パイプラインというのは、前のコマンドの標準出力をそのまま次のコマンドの標準入力として渡す仕組みのことを言います。

ps aux|grep node
というコマンドを叩くとすると、

  1. ps auxでOS上で実行中のプロセスが一覧として表示され、標準出力される
  2. grep nodeの標準入力として、1.で標準出力されたプロセスの一覧が渡される
  3. 結果として、OS上で実行中のプロセスの中で、nodeという文字列を含んだプロセスが標準出力としてコマンドライン上に表示される

というフローになるわけです。
なので、node index.jsというコマンドを実行中にps aux|grep nodeというコマンドを叩くと以下のような標準出力を得ることができます。

~ ❯❯❯ ps aux|grep node
toshiokun  3094   0.0  0.0  4268424    684 s002  R+   11:04AM   0:00.00 grep --color=auto node
toshiokun  3003   0.0  0.3  4602960  46216 s000  S+   11:03AM   0:00.94 node index.js

明示的に標準入力を受け付ける部分を指定する際には-(ハイフン)を使用することもできます。

~ ❯❯❯ ps aux|grep node -
toshiokun  3094   0.0  0.0  4268424    684 s002  R+   11:04AM   0:00.00 grep --color=auto node -
toshiokun  3003   0.0  0.3  4602960  46216 s000  S+   11:03AM   0:00.94 node index.js

まとめ

いかがだったでしょうか。
普段ps aux|grep <process_name>のコマンドを叩いている方の中にも、パイプラインの正確な定義を知らなかった方もいたのではないでしょうか。

パイプラインが「標準出力を次のコマンドの標準入力として渡す」ということを明確に理解していると、複雑なコマンドも比較的簡単に書くことができるようになるかと思います。

是非参考になれば幸いです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux基礎知識①

※個人的な学習のアウトプットとなりますので間違い等あった場合ご指摘いただけると大変助かります。

Linux

LinuxとはOS(Operating System)のひとつでPCを動作させるために必要なシステム。

キーボード入力やマウス操作、サーバーへのリクエストやレスポンスの受信などPCを動かす際に必要で当然のように存在しているソフトウェアがOS。複数種類があるOSの中のひとつがLinux。

GUIとCUI

OSの環境には2種類あり、GUI (Graphical User Interface)CUI (Character User Interface) がある。

GUIは一般的なPCで採用されているWindowsやMac OSのようなマウス操作によってファイルやフォルダ操作をするような視覚的にわかりやすいインターフェース。

一方CUIはいわゆる「黒い画面」に対してコマンドを打ち込むことで操作を行う一般人にはやさしくない環境。
ディレクトリという概念の理解した上で自分の現在地を把握することが重要。

スクリーンショット 2021-02-27 9.01.54.png

こんな感じのやつ。
今回の記事に取り上げているLinuxはCUI環境に該当するOS

Linuxの歴史

元はアメリカのAT&T社で開発されたUNIXというOSがありSystemⅤ系BSD(Berkley Software Distribution)系の2つの系列で発展していた。

Linuxはその発展の先にいるわけではなく、UNIXを参考にLinus Tovaldsがゼロから作り上げたOSがLinux。

UNIXを参考にしているのでコマンドは似ているがソースは全くの別物となる。

Linuxはオープンソース (ソースコードを一般公開して誰でも使えるようにしている)になっており、企業や団体等がこれに独自ツールやサポートを付け加えてパッケージにすることをディストリビューション (配布形態)という。

有名なディストリビューションにはCentOSUbuntuなどがある。

コンソール

LinuxではLinuxがインストールされたPC(ホスト)へネットワーク経由で別のPC(端末・ターミナル)から接続するような使い方が中心になる。

こういったCUI環境でコマンドを受け取り、ホストへ渡す役割を果たしているのがコンソールである。

仮想環境

Linuxを使う際にはOS上にハードウェアをエミュレート(模倣)して仮想環境を作り出すという方法がある。

ここで作られた仮想のハードウェアを仮想マシン(仮想PC・仮想サーバー)と言う。

仮想環境の管理ツールで有名なものにはVirtual Boxといったものがある。

この方法で環境を構築すると、CPUやメモリ、ディスク容量を多く必要とするので導入するPCにそれなりのスペックが必要となる。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む