My Home NW Lab

逸般の誤家庭のネットワーク

CML-P上にMerakiのPythonスクリプト開発環境を用意

MerakiPythonスクリプト開発環境をCML-Pで準備するためのメモ書きです。 手っ取り早さを意識して細かいチューニングは避けるようにしています。

構成

  • CML-P上でのネットワーク構成は、NAT設定のExternal Connectorの配下にUbuntuを直接繋げる想定にしております。結線ポートの組み合わせはデフォルトのままにしております。UbuntuIPアドレスはExternal ConnectorからDHCPで払い出されます。

MerakiPythonスクリプト開発環境 on CML-P

CML-P上の構成

  • 実行環境はUbuntuとして、External ConnectorでMeraki Cloudへの疎通性を確保します。

  • ネットワークの個別設定が発生すると手間がかかるので、External Connectorはデフォルト値の NAT 設定のままにします。

  • NAT配下に実行環境のUbuntuが存在するようになっており、外部ネットワークからのSSHはできなくなります。そのため、CML-PのCONSOLEから操作を行う方針になります。

Ubuntuのログイン情報

CML-Pで予め用意されているUbuntuでは、デフォルトのログイン情報がUsernameとPasswordともに cisco となります。

項目
Username cisco
Password cisco

検証当時の環境情報

cisco@ubuntu:~$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
cisco@ubuntu:~$ 
cisco@ubuntu:~$ python3 --version
Python 3.8.10
cisco@ubuntu:~$ 

設定作業

MerakiPythonスクリプト開発環境をUbuntu上に用意していきます。

作業ディレクトリの作成

Pythonスクリプトを配置するディレクトリを作成します。 他の環境での構築時にコマンドが流用しやすいように、カレント ディレクトリの確認作業を意図的に入れています。

pwd

mkdir ./work_dir/

cd ./work_dir/

pwd

Python Libraryの準備

Meraki Dashboard API Python Libraryを導入します。

github.com

pypi.org

CML-P上のNodeの場合は作業環境を占有できると思いますが、他の環境での構築時にコマンドが流用しやすいように venv を用いるようにしています。

sudo apt -y update

sudo apt -y install python3-venv

python3 -m venv .venv

source .venv/bin/activate

pip install --upgrade pip

pip install meraki

サンプル スクリプト

Merakiアカウントに紐付くOrganizationを取得する参照系のサンプル スクリプトです。 開発環境の動作確認用に適宜活用してください。

cat > ./get_meraki_orgs.py << EOF
#!/usr/bin/env python3

import meraki
import pprint

dashboard = meraki.DashboardAPI(print_console=False, output_log=False)

orgs = dashboard.organizations.getOrganizations()

org_list = []

for org in orgs:
    org_list.append(org['name'])

org_list.sort()

pprint.pprint(org_list)

EOF

サンプル スクリプトの内容がファイルに書き込めているか確認します。

cat ./get_meraki_orgs.py 

サンプル スクリプトに実行権限を与えます。

chmod u+x ./get_meraki_orgs.py

サンプル スクリプトの実行にあたってMeraki Dashboard API Keyを変数に指定します。YOUR_API_KEY の部分は自身のAPI Keyに書き換えてください。

export MERAKI_DASHBOARD_API_KEY='YOUR_API_KEY'

実行時のサンプル出力は下記のようになります。

(.venv) cisco@ubuntu:~/work_dir$ ./get_meraki_orgs.py
['Test_Org_0000',
 'Test_Org_0001',
 'Test_Org_0002',
 'Test_Org_0003',
 'Test_Org_0004',
 'Test_Org_0005',
 'Test_Org_0006',
 'Test_Org_0007',
 'Test_Org_0008',
 'Test_Org_0009',
 'Test_Org_0010']
(.venv) cisco@ubuntu:~/work_dir$