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

2020.08.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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

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

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

2021/7/15追記
ParallelCluster 2.9の頃から下位バージョンのクラスターの削除はできるようになったため、以前と比べると完全に下位互換がないわけではなくなっております。

実行環境

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

IAMロール・ポリシー

クラスターを作成、管理するためには様々なリソースへアクセスする権限が必要になります。 pclusterコマンドのバージョンに応じたIAMポリシーを作成します。 最新のバージョンをお使いの場合はドキュメント通りIAMポリシーを作成すれば問題ありません。 過去のバージョンを使う場合はドキュメントの履歴からその当時のIAMポリシーを確認して作成した方が無難です。

AWS Identity and Access Management roles in AWS ParallelCluster - AWS ParallelCluster

おわりに

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

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

参考

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