はじめに
Cloud Pak for Network Automation (CP4NA)を使い始める時に、まずはローカルの環境のセットアップが必要となります。ドキュメントにも導入方法が記載されていますがだいぶサラッとしていますので、実際にVSCodeを使ってセットアップしてみた例をご紹介します。
本手順は以下の環境で実施しています。
- クライアントPC: macOS 13.4
- エディタ: Visual Studio Code 1.80.1
- Python: 3.11.4
- lmctl: 3.5.0
- CP4NA: 2.4
本手順の対象・流れ
VSCode上でPythonの仮想環境を作成し、CP4NAのコマンドラインツールであるlmctl
をインストールします。lmctlを使用して、CP4NAの環境に接続するための設定を行います。
1. Python環境セットアップ
1.1. VSCodeワークスペースの作成
CP4NAのワークスペースのディレクトリを作成します。環境変数CP4NA_HOME
を設定しておきます。
% export CP4NA_HOME=~/work/cp4na-dev
% export LMCONFIG=${CP4NA_HOME}/.lmctl/lmctl-config.yaml
% mkdir -p ${CP4NA_HOME}/.lmctl
後々のために、.zshrc
にも設定を入れておきます。
% echo "export CP4NA_HOME=${CP4NA_HOME}" >> ~/.zshrc
% echo 'export LMCONFIG=${CP4NA_HOME}/.lmctl/lmctl-config.yaml' >> ~/.zshrc
「フォルダーを開く」で上記で作成したディレクトリを開きます。その後、「名前を付けてワークスペースを保存」で、ワークスペースとして保存します。名前は任意ですが、ここではcp4na-dev
とします。
以降は、ワークスペースを開くことで環境を復元できます。
(私はいつも「最近使用した項目を開く」から選択しています。)
1.2. Python仮想環境の作成
VSCodeのコマンドパレットを開き、「Python:環境の作成」を選択します。
「環境の種類の選択」→Venv
「Pythonインストール」→Python 3.11.4 64-bit
を選択して、仮想環境を作成します。(Homebrewを使用していない場合は、3.11が入っていないかもしれません)
コマンドラインで仮想環境を作成することも可能です。
1.3. lmctlのインストール
VSCodeのコマンドパレットを開き、「Python:インタープリターを選択」を選択します。
ワークスペースを選び、作成した仮想環境を選択します。(おすすめになっています)
この状態で「ターミナルを開く」と、仮想環境のインタープリターが適用されたターミナルが起動します。プロンプトが(.venv) %
となっていればOKです。
最新のlmctlをインストールするには、以下のコマンドを実行します。
(.venv) % pip install lmctl
インストールを確認するには、以下のコマンドを実行します。
(.venv) % lmctl --version
lmctl, version 3.5.0
(.venv) %
最新のlmctlがお使いのCP4NAのバージョンに互換性がない場合は古いバージョンのlmctlを導入してください。lmctlのバージョンが古いとCP4NAの環境を認識できないなど問題が生じる原因になりますので、なるべく新しいバージョンを使用することをお勧めします。
1.4. Python仮想環境の自動有効化
ワークスペースを一旦閉じると、都度インタープリターの設定をし直す必要があります。
ターミナルで1行コマンドを打てばロードされます。
% source ${CP4NA_HOME}/.venv/bin/activate
(.venv) %
それすら面倒な時に、自動的にインタープリターを設定するには、ワークスペースの設定にpython.defaultInterpreterPath
を追加します。
VSCodeのコマンドパレットを開き、「基本設定:ワークスペース設定を開く(JSON)」を選択します。
エディタでcp4na-dev.code-workspace
が開くので、settingsに以下のように追記します。
{
"folders": [
{
"path": "../work/cp4na-dev"
}
],
"settings": {
"python.defaultInterpreterPath": "${workspaceFolder}/.venv"
}
}
保存して閉じます。
この設定だけでは、ワークスペースを開くと同時にはインタープリターはロードされませんでした。
どうやらpythonファイルを開くなりプレビューをするなど触れる必要があるみたいです。
試しにワークスペースの好きな場所に空のpythonスクリプトファイルを作成します。
% touch _.py
ワークスペースを閉じて再度開いた後に、.pyファイルを開くと右下のステータスバーで仮想環境が選択されていることが分かります。この状態で新しいターミナルを開くと、仮想環境が自動でアクティベートされます。(復元されたターミナルでは、いずれにせよコマンドを打つ必要あり。)
#もっといい方法をご存知の方がいれば教えていただけると嬉しいです。
2. CP4NA環境への接続
2.1. oc login
CP4NAがインストールされたOpenshiftクラスタにログインします。
以下でログイン済みであることを確認します。
% oc version
Client Version: 4.10.25
Server Version: 4.10.22
Kubernetes Version: v1.23.5+3afdacb
2.2. CP4NAインストール情報
CP4NAのインストール情報を取得するため、CP4NAをインストールした名前空間を設定します。
#インストールに使用したネームスペース
export NAMESPACE="cp4na-enablement"
以下はコピペでOK。
export CP4NA_ISHTAR=https://$(oc get route -n ${NAMESPACE} cp4na-o-ishtar -o jsonpath='{.spec.host}')
echo ${CP4NA_ISHTAR}
export CP4NA_AUTH=$(oc get orchestration -n ${NAMESPACE} -o jsonpath='{.items[*].status.uiendpoints.orchestration}')/icp4d-api/v1/authorize
echo ${CP4NA_AUTH}
CP4NA_ISHTAR
はhttps://cp4na-o-ishtar-<NAMESPACE>.<OCP_CLUSTER_ENDPOINT>
CP4NA_AUTH
はhttps://cpd-<NAMESPACE>.<OCP_CLUSTER_ENDPOINT>/icp4d-api/v1/authorize
のような文字列になる。後続の2.4
で使用します。
2.3. API keyの取得
lmctlでCP4NAにログインするために使用するAPI Keyを取得します。
CP4NAのUIにアクセスし、ログインします。
ログインしたら、右上のユーザーアイコンをクリックし、「プロファイルと設定」をクリックします。
右上の「API鍵」から「新規鍵の生成」をクリックします。
「生成」をクリックします。
「コピー」をクリックします。
2.4. lmctl configの設定
CP4NAの環境についての情報を設定します。
CP4NA_ENV_NAME
は複数のCP4NAを識別するための名前を設定します。
例えば、開発環境と本番環境でCP4NA環境が分かれている場合は、dev, prodなどとします。
CP4NA_ENV_DESC
は環境の説明を記載します。
CP4NA_USER
はCP4NAのAPI Keyを発行したユーザーを設定します。
CP4NA_APIKEY
には2.3
節で取得したAPI keyを設定します。
export CP4NA_ENV_NAME="dev"
export CP4NA_ENV_DESC="CP4NA dev environment"
export CP4NA_USER="yukikod" #デフォルトはadmin
export CP4NA_APIKEY="xxxxxxxxxxxxxxxxxxxxxx"
以下のように、lmctl-config.yaml
を作成します。
複数の環境を定義する場合は、environmentsの下に並記していきます。
cat << EOF > ${LMCONFIG}
environments:
${CP4NA_ENV_NAME}:
description: ${CP4NA_ENV_DESC}
tnco:
address: ${CP4NA_ISHTAR}
secure: true
auth_mode: zen
auth_address: ${CP4NA_AUTH}
username: ${CP4NA_USER}
api_key: ${CP4NA_APIKEY}
EOF
2.5. 確認
設定ができたら、lmctl
コマンドでCP4NAの環境が登録されていることを確認します。
lm
列にCP4NAのAPIのURLが記載されていることを確認します。
(.venv) % lmctl env list
| name | description | lm | arms |
|------+-----------------------+-----------------------------------------------------------+--------|
| dev | CP4NA dev environment | https://cp4na-o-ishtar-<NAMESPACE>.<OCP_CLUSTER_ENDPOINT> | N/A |
(.venv) %
まとめ
CP4NAのローカル環境のセットアップについて、VSCodeを使った実際の例をまとめました。
参考になれば幸いです。