GCPにNutanix CEを自力デプロイの検証をしてみる パート1
前置き
Nutanixの提案やラボ環境を作る時、demo.nutanixやravelloを使えば良いのですが、
やっぱり1から構築したいなぁと思い立った時の壁が、要求されるハイスペック機だったりします。
要件を満たす物理マシン、Nestできる仮想環境も手元になかった当時、
パブリッククラウドでできないかな〜と思ってましたが、
Intel VT-xが有効化されてなかったのでムリでした。
もう1年ほど前ですが、Google Compute EngineでNested Virtualizationが有効化されたので、
今回デプロイできるかやってみました。
Enabling Nested Virtualization for VM Instances | Compute Engine Documentation | Google Cloud
読んで頂く前に結果ですが、失敗しています。
今回はその経緯を綴りつつ、次のパート2に繋げたいと思います。
現状GCPではCentOS等のKVMの動作確認のみが実施されており、その他はサポート対象外となります。
Nutanix CE とGCP の準備
Nutanix CEダウンロード
Nutanixでアカウント登録を行い、
Download Nutanix CE, Docs, and Guides | Nutanix Community より Community Edition をダウンロードします。
今回は「ce-2018.05.01-stable.img.gz」でした。インポート用のプロジェクトを準備
手順は省略しますが、GCPのアカウント登録を行い、プロジェクトの作成を行います。
Nutanix CE のインポート
先にGoogle Cloud SDKを作業端末にインストールしておく必要があります。
Google Cloud SDK ドキュメント | Cloud SDK | Google Cloud
ダウンロードされた「ce-2018.05.01-stable.img.gz」(2018/12/18現在)を解凍します。
アップロードを実行する為、ターミナルからgcloudコマンドを実行します。
#GCPのプロジェクト一覧表示 gcloud projects list #プロジェクトの選択 gcloud config set project <project-id> #インポート gcloud compute images import <image-name> --source-file <source-file-path> --os centos-7
project-id: GCPで作成したプロジェクトのID(名前じゃないです)
image-name: インポート後のイメージ名
source-file-path: 先の手順でダウンロードしたimgのフルパス
--osは、インポート時に対象OSのGCP用ドライバーのインストールの為に使用されます。
NutanixCEだとCentOSだったら入るだろうと思い設定したら入りました。
インポートが成功すると、Compute Engine→イメージの一覧に表示されます。

Nested可能なインスタンスの作成
- ディスク作成用インスタンスの作成・削除
インポートしたイメージを使用したインスタンスを作成し、NutanixCEの入ったディスクを作成します。
今回はディスクを作成したいだけなので、スペックは問いません。
インスタンス作成時、ブートディスクでインポートしたイメージを選択します。

【インスタンスを削除する際にブートディスクを削除する】のチェックを外してください。
作成したインスタンスを削除して、ディスクだけが残る状態にします。
- Nestedイメージ作成 GCEでNested VMを有効化する為、以下のgcloudコマンドを使用します。
gcloud compute images create <nested-image-name> --source-disk <source-disk-name> --source-disk-zone <source-disk-zone> --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
nested-image-name: 作成される
source-disk-name: 先のインスタンス作成手順で作成されたディスク名
source-disk-zone: 先のインスタンス作成手順で作成されたディスクがあるゾーン(asia-northeast1-aなど)
- Nestedインスタンス作成
ここからNested可能なNutanixCEイメージを使ってインスタンスを作成していきます。
CPUやメモリは要件を満たすよう、適宜設定します。

ブートディスクには先の手順で作ったNested有効化をしたNutanixCEをしていします。

Hot TierとCold Tier用のディスクを追加します。

作成したらインスタンスの編集に入り、「シリアルポート接続を有効化」にチェックをいれます。
Nutanix CE インストール
- SSD化
インスタンスの追加ディスクでSSDを選択しましたが、SSDとの認識になっていません。
その為、コンソール接続をしてrotationalを変更します。
※ローカルSSDスクラッチディスクを選択するとSSD認識がなされますが、インスタンスの停止ができなくなります。
rootでログインして実施します。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk └─sda1 8:1 0 7G 0 part / sdb 8:16 0 200G 0 disk sdc 8:32 0 500G 0 disk echo 0 > /sys/block/sdb/queue/rotational cat /sys/block/sdb/queue/rotational 0 exit
- インストール実行
installでログインし、実行します。
・
・
・
・
・
Installation did not succeed.
Pressto return to the login prompt.
失敗しました。
ログを確認すると、以下のようなところでエラーが出ていました。
FATAL: An exception was raised: Traceback (most recent call last): File "/ce_installer_cUB2wz/phoenix/locale_select.py",line 36, in <module> main() File "/ce_installer_cUB2wz/phoenix/locale_select.py",line 28, in main params = gui.get_params(gui.LocaleGui) File "/ce_installer_cUB2wz/phoenix/gui.py",line 1676, in get_params return run_gui(guitype, args=args) File "/ce_installer_cUB2wz/phoenix/gui.py",line 1758, in run_gui raise e error: init_pair() returned ERR
rootでログインし、中身を確認していると
/home/install/phx_iso/phoenix/gui.py
辺りでエラーが出ているようで、単純にGUIが無い為に発生している模様?
GCPだとSSHかシリアルコンソールでのみ接続可能となる為、
ESXiのNestedのように画面のコンソールが使えない…。
結論
今回のような通常のインポートの手順では、NestedでAHVをインストールする事は難しいと判断しました。
GUI周りでエラーが出ているようだったので、VNCで接続した中でinstallを走らせると動くのかと思い、
別のLINUXインスタンスの追加ディスクとしてマウントした上でpartedによってパーティションを拡張、
拡張したディスクでインスタンスを作成してGUI関連とVNCをインストールしたらどうなるか?
とも考えましたが、そもそもHyperVisorにするべき事ではないのでやめました。
以上から、今回のGCPでのNested AHVのインストールは失敗しました。
次は別の方法でデプロイをして、アップしたいと思います。
PyCharmでAnaconda(Python)とDjangoの開発環境を構築する その2
PyCharmのGUIのみでAnacondaの仮想環境と、Djangoの開発環境を作っていきます。
前提として、
- Anacondaはインストール済み
- 例題のプロジェクト名は
skyline - 例題のアプリ名は
gtr - 例題の仮想環境名は
nissan
と想定します。
Anacondaのインストールはこちらをご覧下さい。 www.techbox.jp
PyCharmを起動して、[Create New Project]を選択します。

左のツリーから[Django]を選択し、[Location]にプロジェクトの保存先を指定します。
末尾が~\untitledになっているので、作成するプロジェクトの名前に変更します。
※例ではskyline
[interpreter]の右の歯車をクリックし[Create conda env]を選択します。
ここから新規でAnacondaの仮想環境の作成が行えます。[Name]に仮想環境名を入力します。ここでは
nissan
そうすると、[Location]にはAnacondaの仮想環境保存先が指定され、末尾が[Name]で指定したディレクトリになるハズです。
最後に使用するPythonのバージョンを指定します。
OKを押すとAnacondaの仮想環境の作成が始まるので、しばらく待ちます。
終わったらロケーションに設定したディレクトリにnissanフォルダが作成されています。New Project画面に戻るので、[More Settings]をクリックし、設定画面を表示します。
[Template language]に
Django
[Application name]にgtr
を設定し、[Enable Django admin]はお好みでチェックを入れます。
ここで注意点ですが、プロジェクト名とアプリケーション名は同一の物は設定できません。
これらの名称の関係性としては、作成後のフォルダ構成を見れば分かりますが、
以下の様な形で作成されます。
skyline/ ├ gtr/ │ ├ migrations/ │ ├ _init_.py │ ├ admin.py │ ├ apps.py │ ├ models.py │ ├ tests.py │ ├ views.py ├ skyline/ │ ├ _init_.py │ ├ settings.py │ ├ urls.py │ ├ wsgi.py ├ templates/ └ manage.py
プロジェクト名配下にプロジェクト名のディレクトリと、アプリケーション名のディレクトリが作成されます。
例えばこのプロジェクトで外部にAPIを公開する様になれば、
gtrと同じ構成で、apiというディレクトリがskylineディレクトリ内に追加される感じです。
以上で完了となります。
非常に簡単に環境を整える事ができました。
AnacondaとPyCharmさえインストールしておけば、GUIだけでここまでできてしまいます。
Anacondaのコマンドも難しくないので手動でもできますが、準備は簡単に超した事はないので有り難い機能かなと思います。
PyCharmでAnaconda(Python)とDjangoの開発環境を構築する その1
今回はPyCharmでPythonとDJangoの開発環境を作っていきたいと思います。
Pycharmはデフォルト設定とプロジェクト設定、2パターンの設定方法があります。
今回は、
既に作成した仮想環境を、Pycharmデフォルトの設定にする
方法を行っていきます。
プロジェクト単位での設定と、完全にGUIで構築する手順はその2で記載します。
Anaconda、Djangoインストールと仮想環境構築
以下のリンクに沿って実行して下さい。 www.techbox.jpPycharmを起動し、スタート画面で右下の
[configure]>[settings]
をクリック
左のツリーから[Project Interpreter]を選択し、
右側上部のコンボボックスに、手順1で作成した仮想環境のpython.exeがリストアップされる事を確認し、選択します。
選択すると仮想環境にインストールされているパッケージの一覧が表示されます。
ここでDjangoがインストールされている事がわかります。
[Apply]を押し、設定を保存します。
以上でデフォルトの設定が完了しました。
後はCreate new projectやGitからリポジトリを取ってきて、
今回の設定をベースに立ち上げる事が可能です。
今回はAnacondaの仮想環境を手動で作成し、Pycharmのデフォルト設定のみを設定する方法でした。
その2では、仮想環境の構築、Djangoのインストール、新しいプロジェクトの立ち上げまでをPycharmのGUIのみで行う手順を書こうと思います。 実際の所、次の手順で立ち上げる事の方が多いような気がします。
AnacondaとPythonのインストール(python2とpython3の共存)とDjango
個人的にdjangoとnumpyなどPythonを使う機会があり、
折角なのでローカル開発環境としてのAnacondaのインストール方法をまとめました。
僕の環境がGCPのSDKが入っている関係で、Python2とPython3の共存が必要ので、その辺りもあります。

前提
- Windows(Macと手順のベースは変わらないですが、コマンドに若干再有り)
- pythonコマンドだとPython2が動作し、python3だとPython3が動作します
手順
Anacondaのインストーラーをダウンロードしインストール
※ Python2と3を共存させる場合、インストーラーでPathは通さない。Pathを通す
インストールディレクトリ\Anaconda3
インストールディレクトリ\Anaconda3\Scripts
インストールディレクトリ\Anaconda3\Library\binAnaconda3内のシンボリックリンクを作成する
それぞれAnaconda3内にあるexeです。
元のexeがある場所にそれぞれに3を付けたシンボリックリンクを作成します。
ショートカットだと上手く動作しなかったので、シンボリックリンクとしました。
python.exe -> python3.exe anaconda.exe -> anaconda3.exe anaconda-script.py -> anaconda3-script.py conda.exe -> conda3.exe conda-script.py -> conda3-script.py easy_install.exe -> easy_install3.exe easy_install-script.py -> easy_install3-script.py pip.exe -> pip3.exe pip-script.py ->pip3-script.py spyder.exe -> spyder3.exe spyder-script.py -> spyder3-script.py
動作確認
コマンドプロンプトでpythonとpython3でそれぞれのバージョンのPythonが起動する事を確認します。仮想環境作成
実際に開発する際に使用する仮想環境を作成します。
これを作る事で、djangoなどのパッケージをインストールしても、
プロジェクト毎に開発環境を分けられるというメリットがあります。
conda create -n py36 python=3.6仮想環境確認
今ある仮想環境の確認ができます。
念のため、先の手順で作成した仮想環境があるか確認を行います。
conda env list仮想環境有効化
実際に使用する仮想環境を選択します。
activateした環境で動作する事になります。activate py36仮想環境無効化
やらなくても良い手順です。 仮想環境をオフにする場合に行って下さい。
deactivateザックリ環境説明
仮想環境などを作成すると、最初はどうゆう構成になっているのか掴めなくなる事もあるので、
超簡単にですが、こんな感じです。
windows - python2(Myの環境場合)
- anaconda3(python3.6) - py36(ここを開発環境とする)
- pytest(仮想環境を作成するとこんな感じで追加されます)
- condaコマンド
インストールから仮想環境の構築までは完了しました。
今後は仮想環境にパッケージをインストールしたりして、開発をしていきます。
その際に使用するのがcondaコマンドです。
よく使いそうなコマンドが以下かなと思います。
conda list [ インストール済みのパッケージ一覧 ] conda search django [ パッケージ検索 ] conda install django [ パッケージインストール ] conda update django [ パッケージアップグレード ] conda remove django [ パッケージアンインストール ]
以上で取り敢えずAnacondaの環境は整いました。 今後はpycharmを使用したdjango開発環境を作っていきたいと思います。
【2017/9/20 追記】
仮想環境へのDjangoのインストールを追記します。
仮想環境を
activate <仮想環境名>
で有効化し、
conda install django
でインストールします。
これだけです。
仮想環境の意味が把握できていない場合、この手順の後にdeactivateし、
conda list
を実行してみて下さい。djangoが入っていないと思います。
これは、仮想環境でconda installでDjangoをインストールしたので、
rootにはインストールされていないという事です。
この様に、仮想環境事にパッケージのバージョンなども変更できるので、
一つAnacondaを入れておけば、複数のPython環境を切り替えて使えるようになるというのがメリットです。