2016年4月29日金曜日

スタンドアロン Oracle Linux 6 に Ansible インストール。(苦行編)

インターネット接続できない Oracle Linux 6.x で Ansible を使用しようと思い、
ためしに Python モジュールを個別にダウンロードして、インストールした時の記録です。
  • Yum は、インストーラの ISO イメージをマウントしてそこからインストール。
  • ORACLE オフィシャルの Ansible RPM はまだ無そうなので、今回は PyPI から tar.gz ファイルをダウンロードしてみた。
  • ほかの関連する Python モジュールも、PyPI から tar.gz ファイルをダウンロードしておく。
  • 一応 Python の virtualenv は利用。

インストール対象は Oracle Linux 6.7 で、Python はデフォルトの 2.6.6 でした。
[root@sv01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.7
[root@sv01 ~]# python -V
Python 2.6.6

準備

Oracle Linux 6.7 の ISO ファイルをマウントしておきます。
[root@sv01 ~]# mount /dev/cdrom /media/
mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
[root@sv01 ~]# cat /media/media.repo
[InstallMedia]
name=Oracle Linux 6.7
mediaid=1438065927.78
metadata_expire=-1
gpgcheck=0
cost=500

マウントした ISO を参照する Yum リポジトリ設定です。
[root@sv01 ~]# cat /etc/yum.repos.d/iso.repo
[ol6_iso]
name=Oracle Linux ISO
baseurl=file:///media/Server/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

上記のリポジトリだけ有効にしています。
[root@sv01 ~]# yum repolist
読み込んだプラグイン:ulninfo
リポジトリー ID                      リポジトリー名                        状態
ol6_iso                              Oracle Linux ISO                      3,800
repolist: 3,800

インストールする Python モジュールは他の環境でダウンロードして、まとめて配置済みです。
[root@sv01 ~]# ls -l pkg/
合計 5920
-rw-r--r-- 1 root root  357055  1月  8 14:26 2016 Jinja2-2.8.tar.gz
-rw-r--r-- 1 root root   13416  1月  8 14:37 2016 MarkupSafe-0.23.tar.gz
-rw-r--r-- 1 root root  248685  1月  8 15:41 2016 PyYAML-3.11.tar.gz
-rw-r--r-- 1 root root 1510155  2月 25 12:01 2016 ansible-2.0.1.0.tar.gz
-rw-r--r-- 1 root root   55579  1月  9 00:12 2016 ecdsa-0.13.tar.gz
-rw-r--r-- 1 root root  205165  1月  9 02:40 2016 httplib2-0.9.2.tar.gz
-rw-r--r-- 1 root root 1335094  1月  9 07:10 2016 paramiko-1.16.0.tar.gz
-rw-r--r-- 1 root root  446240  1月  9 08:54 2016 pycrypto-2.6.1.tar.gz
-rw-r--r-- 1 root root   29630  1月  9 12:42 2016 six-1.10.0.tar.gz
-rw-r--r-- 1 root root 1842776  3月 18 00:18 2016 virtualenv-15.0.1.tar.gz

前提 RPM のインストール。

gcc、python-setuptools、python-devel は RPM をインストールしておきます。
[root@sv01 ~]# yum install -y gcc python-setuptools python-devel
(省略)
インストール:
  gcc.x86_64 0:4.4.7-16.el6
  python-devel.x86_64 0:2.6.6-64.0.1.el6
  python-setuptools.noarch 0:0.6.10-3.el6

依存性関連をインストールしました:
  cloog-ppl.x86_64 0:0.15.7-1.2.el6       cpp.x86_64 0:4.4.7-16.el6
  glibc-devel.x86_64 0:2.12-1.166.el6     glibc-headers.x86_64 0:2.12-1.166.el6
  kernel-headers.x86_64 0:2.6.32-573.el6  libgomp.x86_64 0:4.4.7-16.el6
  mpfr.x86_64 0:2.4.1-6.el6               ppl.x86_64 0:0.10.2-11.el6

完了しました!

VirtualEnv のインストール。

あとで便利かな、と思い VirtualEnv を使用しました。

easy_install で インストールします。
[root@sv01 ~]# easy_install pkg/virtualenv-15.0.1.tar.gz

VirutalEnv 作成。
[root@sv01 ~]# virtualenv --no-download ansible/
New python executable in /root/ansible/bin/python
Installing setuptools, pip, wheel...done.
[root@sv01 ~]# ls -l ./ansible/
合計 12
drwxr-xr-x 2 root root 4096  4月 17 17:53 2016 bin
drwxr-xr-x 2 root root 4096  4月 17 17:53 2016 include
drwxr-xr-x 3 root root 4096  4月 17 17:53 2016 lib
lrwxrwxrwx 1 root root    3  4月 17 17:53 2016 lib64 -> lib

環境変数ファイルを読み込んで、VirtualEnv に切り替えます。
[root@sv01 ~]# source ansible/bin/activate
(ansible) [root@sv01 ~]#

Python モジュール(Ansible 含む) のインストール。

地道に1つずつ、 easy_install コマンドでインストールしてみました。

paramiko
(ansible) [root@sv01 ~]# easy_install pkg/pycrypto-2.6.1.tar.gz
(ansible) [root@sv01 ~]# easy_install pkg/ecdsa-0.13.tar.gz
(ansible) [root@sv01 ~]# easy_install pkg/paramiko-1.16.0.tar.gz

Jinja2
(ansible) [root@sv01 ~]# easy_install pkg/MarkupSafe-0.23.tar.gz
(ansible) [root@sv01 ~]# easy_install pkg/Jinja2-2.8.tar.gz

のこりの依存モジュール
(ansible) [root@sv01 ~]# easy_install pkg/httplib2-0.9.2.tar.gz
(ansible) [root@sv01 ~]# easy_install pkg/six-1.10.0.tar.gz
(ansible) [root@sv01 ~]# easy_install pkg/PyYAML-3.11.tar.gz

Ansible
※最新バージョンではないですが・・・
(ansible) [root@sv01 ~]# easy_install pkg/ansible-2.0.1.0.tar.gz

とりあえず確認。

本当にとりあえず確認。
(ansible) [root@sv01 ~]# which ansible/root/ansible/bin/ansible
(ansible) [root@sv01 ~]# ansible localhost -m pinglocalhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
(ansible) [root@sv01 ~]# ansible localhost -m command -a "uname -n"localhost | SUCCESS | rc=0 >>
sv01

感想など。

Oracle Linux はインターネットつながせてもらえないケースがありそうと思い
ためしにやってみましたが、面倒なのでやっぱりインターネット経由のインストールで、
RPM 使用しないとしても普通に下記のような手順がいいと思いました。


[root@vm01 ~]# easy_install pip
[root@vm01 ~]# pip install ansible
※RPM は同様にインストールしておく必要がありますが、それにしても簡単です。

ちなみに、Oracle Linux 7 の場合は、なんと public-yum.oracle.com で RPM が提供されています。
ただし、Oracle OpenStack R2 の kolla デプロイのために用意されているようなので、
それ以外の用途で使用するのは微妙だと思われます。

以上。OL6 への Ansible インストール(バッドプラクティス編)でした。

0 件のコメント:

コメントを投稿