1
0

More than 1 year has passed since last update.

CP4NAを使い始める(MacOS+VSCode)

Posted at

はじめに

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とします。
image.png

以降は、ワークスペースを開くことで環境を復元できます。
(私はいつも「最近使用した項目を開く」から選択しています。)
image.png

1.2. Python仮想環境の作成

VSCodeのコマンドパレットを開き、「Python:環境の作成」を選択します。

image.png

「環境の種類の選択」→Venv
「Pythonインストール」→Python 3.11.4 64-bit 
を選択して、仮想環境を作成します。(Homebrewを使用していない場合は、3.11が入っていないかもしれません)

image.png

コマンドラインで仮想環境を作成することも可能です。

1.3. lmctlのインストール

VSCodeのコマンドパレットを開き、「Python:インタープリターを選択」を選択します。
ワークスペースを選び、作成した仮想環境を選択します。(おすすめになっています)

image.png

この状態で「ターミナルを開く」と、仮想環境のインタープリターが適用されたターミナルが起動します。プロンプトが(.venv) %となっていればOKです。
image.png

最新の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)」を選択します。
image.png

エディタで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_ISHTARhttps://cp4na-o-ishtar-<NAMESPACE>.<OCP_CLUSTER_ENDPOINT>
CP4NA_AUTHhttps://cpd-<NAMESPACE>.<OCP_CLUSTER_ENDPOINT>/icp4d-api/v1/authorize
のような文字列になる。後続の2.4で使用します。

2.3. API keyの取得

lmctlでCP4NAにログインするために使用するAPI Keyを取得します。
CP4NAのUIにアクセスし、ログインします。
ログインしたら、右上のユーザーアイコンをクリックし、「プロファイルと設定」をクリックします。
スクリーンショット 2022-08-09 17.44.36.png
右上の「API鍵」から「新規鍵の生成」をクリックします。
スクリーンショット 2022-08-09 17.45.40.png
「生成」をクリックします。
スクリーンショット 2022-08-09 17.46.11.png
「コピー」をクリックします。
スクリーンショット 2022-08-09 17.46.33.png

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を使った実際の例をまとめました。
参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0