Hack the World!

プログラミングや,ネットワークに関する話題を取り扱っています.知識をつけて,優雅にお仕事するのを目指しています.

閉鎖環境に Ansible をインストールする(した)

閉鎖環境にて就業中の皆様こんばんは。

弊社も漏れ無く(準)閉鎖環境を用意しているのですが、割と自由が残されていてそのせいでセキュリティ事故が起こったりと難しいものです。

 

それはさておき、閉鎖環境のせいで作業効率が落ちるのはいただけません。

ということで、私が某社の閉鎖環境にどうやってAnsibleを持ち込んだのかを少々残しておきたいと思います。

 

 

閉鎖環境にAnsibleを持ち込む手段は2つあります。

ひとつは正攻法、ひとつはちょっと(python的に)危うい裏道?です。

 

 

正攻法:egg, wheelパッケージを持ち込む

持ち込み先に管理者権限が必要ですね。

 

pip install --no-install ansible --download-cache . -U でansibleと依存関係周りがCurrent Directoryにダウンロードされるので、頑張って転送しましょう。

pycrypt とかビルドが必要なものだと、ビルドに必要なパッケージが入ってないと積みます更に頑張ってgcc やら何やら落とさなきゃダメですね。

 

頑張って一個一個回答して、依存関係を手で解消しつつ、sudo python setup.py install を実行していきましょう。

 

 

裏道:virtualenv環境を持ち込む(補償なし?)

こちらはなんと持ち込み先に管理者権限要りません。

まぁライブラリあろうが無かろうがクラッカーなら何が何でもコード書いて何とかできるので別に構わないですね。

一つ問題だとすると、クラッキング速度が向上してしまうことでしょうか。

 

概要イメージ図

こんな感じのイメージです。

f:id:graceful_life:20140928211916p:plain

 

手順

 以下の手順で閉鎖環境にAnsibleを持ち込みました。

  1.  持ち込み先のマシンと同じアーキテクチャ(i386,x86_64)のマシンを用意する。(仮想でもOK)
  2. virtualenv(virtualenvwrapperの方が楽)をインストールする。
  3. 仮想環境を作って、Ansibleをインストールする。
  4. 仮想環境を固めて、閉鎖環境に持ち込む(ここで挫折する人もいますが、管理者を説得して頑張りましょう。うちの管理者理解のある人で良かった。)
  5. 同じパスに展開する。(Virtualenvが内部的にパスを持っている)
  6. 仮想環境を有効化する。

 

 

2.virtualenv(virtualenvwrapperの方が楽)をインストールする。

とりあえず、pythonのパッケージ管理システム&virtualenvを入れる。

Installation — pip 1.5.6 documentation

$ wget https://bootstrap.pypa.io/get-pip.py

$ sudo -E install python get-pip.py

$ sudo -E pip install virtualenvwrapper

  HTTP_PROXY環境変数を読んでくれるので、proxy環境下にある人は設定しましょう。

 

 

3.仮想環境を作って、Ansibleをインストールする。

仮想環境はユーザー単位のものなので、ユーザー権限で実行します。

 

# sourceの行は、.bashrc に追加しておくと次回から不要です。

$ source `which virtualenvwrapper.sh`

$ mkvirtualenv ansible

$ pip install ansible

これで、/home/[実行ユーザー]/.virtualenvs/ansible のような環境が作成されます。 

global のpythonやライブラリに対してシンボリックリンクが張られるので、なるべくクリーンで依存性の無いような形にしておいたほうが良いと思います。 

 

 

4.仮想環境を固めて、閉鎖環境に持ち込む

以下のコマンドで、pythonの仮想環境をまるっと固めましょう。

$ tar cvzf ansible.tar.gz ~/.virtualenvs/ 

 

5.同じパスに展開する。

virtualenv の場合、デフォルトではhomeディレクトリに作成なのでhomeで実行ですね。

 

$ cd ~/

$ tar xvzf ansible.tar.gz 

 
6.仮想環境を有効化する。 

以下のsource コマンドを打てば仮想環境をロードできます。

$ source ~/.virtualenvs/ansible/bin/activate

 (ansible) $ 

 

 

以下のコマンドを打って正しく動くか確認しましょう

 (ansible) $ which ansible 

/home/[実行ユーザー]/.virtualenvs/ansible/bin/ansible

 (ansible) $ ansible  --version

Version 1.7.2

 

 

 コレで閉鎖環境にAnsibleの環境が出来ました。

 気づいたら一年ばかり使ってますが、特に問題は起こってないですね。(気づいてないかもしれませんが

CentOS6.4 -> RHEL6.4 でもとりあえずいけてます

 

 

この記事を書いた理由のもう1つは本当に裏道なのかどうかを知りたかったから、というのもあったりします。

 

ツッコミ大歓迎

&それ常套手段ですよね、等のコメントもお待ちしております。

 

 

 

 

 

 

 

あぁそれから第3の手順が有りました。

Virtualbox仮想マシンを頑張って転送する。(前PJの方法)

20GBを頑張って転送してた。

100MBで踏み台サーバのコネクションが切られるので大変でした。

圧縮するのも超大変

 

いやしかし何事も経験しておくものです。

なんか、packagingシステムやら依存関係とか気にしなきゃいけないものが身につきます。