AWS ParallelCluster 管理コマンドのインストールとバージョン管理

2020.08.31

AWS ParallelCluster 管理コマンドのインストールとバージョン管理

  • AWS ParallelClusterはAWSがサポートするHPCクラスターの管理ツールです。
  • クラスターを作成、管理するためのコマンドpclusterのインストール手順を紹介します。
  • pclusterコマンドのバージョン管理も合わせて紹介します。

バージョン管理する意味あるの?

pclusterコマンドのバージョン = 作成、管理できるAWS ParallelClusterのバージョンになります。 例えば新バージョンがリリースされ最新のAWS ParallelClusterを作成する場合、pclusterのコマンドのバージョンをアップグレードするするところから始まります。難点は古いバージョンのpclusterコマンドで作成済みのクラスター環境があった場合、新しいバージョンのコマンドから古いバージョンのクラスターを管理することができません。今後の運用を考えると任意のバージョンでpclusterコマンドを利用できる環境を作った方が良いでしょう。

実行環境

Amazon Linux2にpclusterコマンドをインストールします。

$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
$ /opt/aws/bin/ec2-metadata | grep ^ami-id
ami-id: ami-0cc75a8978fbbc969

pclusterコマンドのインストール

公式のドキュメントにはParallelClusterのインストールに仮想環境を利用することが推奨と書かれています。ParallelCluster独自のバージョン管理機能があるわけではなく、Pythonのvenvを利用しバージョンを管理するだけです。それではvenvで環境を分けて2つのバージョンのpclusterコマンドをインストールします。

AWS ParallelCluster のインストール - AWS ParallelCluster

Python3インストール

まず、Python3をインストールします。

$ sudo yum install python3 -y
$ python3 -V
Python 3.7.8

最新版pclusterコマンドインストール

ここではホームディレクトリをカレントディレクトリとして作業をはじめます。

$ pwd
/home/ec2-user

venvを利用し仮想環境を作成します。ディレクトリの名(pcluster281)は任意です。今現在のParallelClusterの最新バージョンに合わせて名前を決めました。

  • pip3 install aws-parallelclusterpclusterコマンドのインストールは完了です。
$ python3 -m venv pcluster281
$ cd pcluster281/
$ source ./bin/activate
$ pip3 install aws-parallelcluster
$ pcluster version
2.8.1

仮想環境を抜けて次に別のバージョンのpclusterコマンドをインストールしてみます。

$ deactivate

pclusterバージョン指定インストール

ここでもホームディレクトリをカレントディレクトリとして作業をはじめます。ひとつ前のバージョンを試しにインストールします。

$ pwd
/home/ec2-user

venvを利用し仮想環境を作成します。ディレクトリの名はpcluster27としました。

  • pip3 install aws-parallelcluster==[version]で指定バージョンのpclusterコマンドをインストールできます。
$ python3 -m venv pcluster27
$ cd pcluster27
$ source ./bin/activate
$ pip3 install aws-parallelcluster==2.7
$ pcluster version
2.7.0

仮想環境を抜けます。

$ deactivate

バージョンの切り替え方法

ディレクトリで環境分けてpclusterコマンドをインストールしました。 利用したいpclusterのバージョンのディレクトリを指定してactivateします。

  • source ~/[directory]/bin/activate
$ tree -L 1
.
├── pcluster27
└── pcluster281

2 directories, 0 files

2.8.1を使う場合

$ source ~/pcluster281/bin/activate
$ pcluster version
2.8.1

2.7を使う場合

$ source ~/pcluster27/bin/activate
$ pcluster version
2.7

ログイン時に指定のバージョンをアクティベート

毎度activateを打つのは少々手間です。普段を使うバージョンを.bashrcに書いておくとログイン後にアクティベートされた状態になります。 この例の場合ですとログイン時にpcluster 2.8.1のバージョンがすぐ使える状態です。

$ echo 'source ~/pcluster281/bin/activate' >> ~/.bashrc
$ cat ~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
source ~/pcluster281/bin/activate

おわりに

ひと手間増えますが推奨する形式です。pclusterコマンドは仮想環境で分けてバージョンを管理しておきましょう。

以上、コンサル部の大村@網走でした。

参考

venv --- 仮想環境の作成 — Python 3.8.5 ドキュメント