My Home NW Lab

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

Meraki-CLIの環境構築

MerakiCLIから扱うためのMeraki-CLIと呼ばれるツールがあります。

Meraki Dashboard APIを利用したサード パーティーのツールで、REST APIによる操作をCLIでWrapper化したような使い勝手になります。

Meraki-CLIの利用イメージ

Meraki-CLIの利用にあたっては、Python環境の構築と、コマンド補完で利便性を高めるための python3-argcomplete パッケージの導入が必要だったので手順を整理しました。

Meraki-CLIに関して

  • 使い方は下記のドキュメントに体系的に整理されています。

    meraki-cli.readthedocs.io

  • GitHubでソース コードが公開されています。

    github.com

    Meraki-CLIで対応しきれていない機能も出てくる可能性があります。 そのため本番環境で利用するならば、必要に応じてソース コードの改修による機能追加の検討や、未対応機能は手動対応による実施を前提に置くか等を導入前に決めた方が好ましいと思われます。

検証時の環境情報

CML-P (Cisco Modeling Labs - Personal)上のUbuntu 22.04.1 LTSで実行環境を構築しました。

Meraki-CLIは Version 1.5.0 で検証を行っております。

(.venv) cisco@ubuntu-0:~/meraki-cli$ meraki --version
Meraki-CLI v1.5.0 | Meraki API Library v1.36.0 | Python 3.10.12
(.venv) cisco@ubuntu-0:~/meraki-cli$ 

設定手順

補足

python3-argcomplete パッケージのインストールは任意です。 筆者が触った限りではMeraki-CLIのコマンド補完時に処理がモッサリするため、何度も何度も補完に頼るような使い方だとストレスが溜まるように感じました。 それもあって筆者の場合は、何度も使うようなコマンドは書き留めるようにして、補完の利用を最小限になるようにしています。

事前設定

  • apt コマンドの利用時に needrestart によって対話形式のメッセージが表示される場合があります。検証用途でのコマンドの流し込みに向かないため、非対話になるように事前設定を行います。

    needrestart による対話形式のメッセージ

  • apt コマンドの利用時に needrestart によって、必要なサービスは自動的 (automatically)に再起動されるようにします。

sudo sh -c "cat << 'EOF' > /etc/needrestart/conf.d/99_restart.conf
# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
#
# ATTENTION: If needrestart is configured to run in interactive mode but is run
# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
#
\$nrconf{restart} = 'a';
EOF"
cat /etc/needrestart/conf.d/99_restart.conf

Meraki-CLIのコマンド補完の設定 (任意)

  • Meraki-CLIでオプションの補完を行うために python3-argcomplete パッケージを任意でインストールします。
sudo apt -y update

sudo apt -y install python3-argcomplete
  • 先ほどインストールした python3-argcomplete をアクティベートします。/etc/bash_completion.d/python-argcomplete.shスクリプトがインストールされます。
sudo activate-global-python-argcomplete3
  • Meraki-CLI向けのコマンド補完が行われるように ~/.bash_profile に補完設定を読み込みためのコマンドを書き込みます。(リダイレクトによる追記のため、コマンドを何度も実行しないように注意してください。)
echo 'eval "$(register-python-argcomplete3 meraki)"' >> ~/.bash_profile

cat ~/.bash_profile

eval "$(register-python-argcomplete3 meraki)"

Meraki-CLIの実行環境

pwd

mkdir ./meraki-cli/

cd ./meraki-cli/

pwd
sudo apt -y install python3-venv

python3 -m venv .venv

source .venv/bin/activate

pip install --upgrade pip
pip3 install meraki-cli
  • Meraki-CLIの利用にあたってMeraki Dashboard API Keyを変数に指定します。YOUR_API_KEY の部分は自身のAPI Keyに書き換えてください。
    API Keyがbashの実行履歴 (bash_history)に残らないように、行頭にスペースを入れています。echo $HISTCONTROLignorespace もしくは ignoreboth になっている想定の使い方です。
  export MERAKI_DASHBOARD_API_KEY='YOUR_API_KEY'
  • Meraki-CLIが正常に実行できるか確認するために、Organization情報の取得コマンドを実行します。
meraki organizations getOrganizations
  • 先のコマンドの実行が成功すると下記のように表示されます。
(.venv) cisco@ubuntu-0:~/meraki-cli$ meraki organizations getOrganizations
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ id                 ┃ name     ┃ url                                          ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1234567890******** │ Org_Test │ https://n480.meraki.com/o/********/manage/o… │
└────────────────────┴──────────┴──────────────────────────────────────────────┘
(.venv) cisco@ubuntu-0:~/meraki-cli$ 

関連記事

myhomenwlab.hatenablog.com

myhomenwlab.hatenablog.com

myhomenwlab.hatenablog.com