はじめに
この記事はCisco Systems Japanの有志によるAdvent Calendar 2025 シリーズ1の8日目として投稿しています。
本記事でやること
グローバルIPを持たないオンプレ環境のCatalystスイッチ・Cisco ISEをWorkflowsから操作します。
Cisco Workflowsとは
Cisco Workflowsとは、Merkai上で作成・実行できる自動化ソリューションです。
複数のアクティビティを組み合わせることでHTTPリクエスト、Pythonコード実行、データ変換など幅広いタスクを自動化し、業務を効率化してくれます。
Merakiの製品・ライセンス不要で利用可能です。
まだWorkflowsを利用したことがない方は、以下の記事もご参照ください。
Workflowsから機器の操作を行う場合、Meraki基盤から対象機器へ通信できる必要があります。しかしインターネットからオンプレ機器へ通信できるよう、機器にグローバルIPを付与しFWで通信を許可するのはハードルが高いですよね。
そこで、Remote Targetを使います。
Remote Target について
Remote TargetとはグローバルIPを持たない機器とWorkflowsの通信を可能にする、ESXi上で動く仮想アプライアンスです。
オンプレ環境へ導入したRemote TargetがMerakiへ接続することで、Workflowsからオンプレ機器を扱えるようになります。

Remote Targetの構築
手順に沿ってESXi上にRemote Targetを構築します。
-
MerakiでRemote Targetを作成
Automation > Targets > Remote Targets > New remote
Remote TargetのIPアドレスはDHCP割り当てとし、プロキシサーバを経由せずインターネットへ出る設定です。

-
vCenterで仮想マシンをデプロイし、起動
デプロイの途中、手順2でダウンロードしたConfiguration Fileの値を投入する必要があります。

Workflowsでオンプレミスの機器を操作
Remote Targetがサポートしているターゲットタイプは以下の3種類です。(本記事の作成時点)
・HTTP Endpoint
・Terminal Endpoint
・Unix/Linux Endpoint
Catalyst CenterやISEは現在サポート対象外となっていますが、今後サポート予定です。最新情報は公式ドキュメントをご確認ください。
Catalyst switch(Terminal Endpointで操作)
Terminal Endpointを使うとSSHまたはTelnetで機器へ接続しコマンドを実行できるので、ターミナルエミュレータと同様に操作できます。
まずはCatalystスイッチへSSH接続し操作してみましょう。
-
クレデンシャルの作成
Automation > Targets > Account Keys > New account key
Terminal Endpointで使うため、Key TypeはTerminal Passwordを選択します。
※今回は privilege level 15 のアカウントを登録しました。

-
ターゲットの作成
Automation > Targets > Targets > New target
Terminal Endpointで使うのでTarget TypeはTerminal Endpointを選択します。

-
Account Keys
前の手順で作成したクレデンシャルを選択 -
Remote
作成済みのRemote Targetを選択 -
Connection Settings
操作対象機器の情報を入力
ターゲット作成後、正常に宛先へ到達できればStatusが
Validになります。

StatusがValidation failedになった場合、クレデンシャル誤りや宛先へ到達できていない可能性があります。

-
Account Keys
-
ログ採取
早速Terminal Endpointを操作してみましょう。
Automation > Workspace > Workflows > Create
Terminal > Execute Terminal Command(s) のアクティビティを使用し、以下の設定でWorkflowsを作成しました。

-
Target
前の手順で作成したターゲットを選択します。 -
Input Command(s)
投入したいコマンドを入力します。今回はテストでshow int statusコマンドとしました。
アクティビティごとに対象へ接続→切断されるため、切断コマンドを入れる必要はありません。ページャ無効化コマンドは毎回必要です。
Input Command(s)ter len 0 show int status設定が完了したらWorkflowsを検証し、実行しましょう。
Validate > Run

情報が取得できました!
スイッチ側でも以下のログが確認できます。(EEMにより実行されたコマンドをログに表示させています)対象機器のsyslogSwitch-2# *Dec 3 06:37:39.693: %SSH-5-SSH2_SESSION: SSH2 Session request from <Remote Target IP> (tty = 3) using crypto cipher 'aes128-gcm@openssh.com', hmac 'hmac-sha2-256-etm@openssh.com' Succeeded *Dec 3 06:37:39.833: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: aysekigu] [Source: <Remote Target IP>] [localport: 22] at 06:37:39 UTC Wed Dec 3 2025 *Dec 3 06:37:39.833: %SSH-5-SSH2_USERAUTH: User 'aysekigu' authentication for SSH2 Session from <Remote Target IP> (tty = 3) using crypto cipher 'aes128-gcm@openssh.com', hmac 'hmac-sha2-256-etm@openssh.com' Succeeded *Dec 3 06:37:41.236: %HA_EM-4-LOG: CMD: <Remote Target IP> (aysekigu): terminal length 0 *Dec 3 06:37:41.862: %HA_EM-4-LOG: CMD: <Remote Target IP> (aysekigu): show interfaces status *Dec 3 06:37:42.444: %SYS-6-LOGOUT: User aysekigu has exited tty session 4(<Remote Target IP>) *Dec 3 06:37:42.444: %SSH-5-SSH2_CLOSE: SSH2 Session from <Remote Target IP> (tty = 3) for user '' using crypto cipher 'aes128-gcm@openssh.com', hmac 'hmac-sha2-256-etm@openssh.com' closed -
Target
-
設定変更
アクティビティを追加し、以下の内容で設定変更を行います。

-
Input Command(s)
設定変更コマンドを入力します。interface Gi1/0/4のdescriptionを設定してみましょう。
Input Command(s)conf t interface gigabitEthernet1/0/4 description set-from-workflowWorkflowsを検証し、実行。

設定後のshowコマンド結果により正しく設定されたことが確認されました。
スイッチ側でも設定変更中のログを確認します。対象機器のsyslogSwitch-2# *Dec 3 06:47:12.053: %SSH-5-SSH2_SESSION: SSH2 Session request from <Remote Target IP> (tty = 2) using crypto cipher 'aes128-gcm@openssh.com', hmac 'hmac-sha2-256-etm@openssh.com' Succeeded *Dec 3 06:47:12.201: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: aysekigu] [Source: <Remote Target IP>] [localport: 22] at 06:47:12 UTC Wed Dec 3 2025 *Dec 3 06:47:12.201: %SSH-5-SSH2_USERAUTH: User 'aysekigu' authentication for SSH2 Session from <Remote Target IP> (tty = 2) using crypto cipher 'aes128-gcm@openssh.com', hmac 'hmac-sha2-256-etm@openssh.com' Succeeded *Dec 3 06:47:13.619: %HA_EM-4-LOG: CMD: <Remote Target IP> (aysekigu): configure terminal *Dec 3 06:47:14.256: %HA_EM-4-LOG: CMD: <Remote Target IP> (aysekigu): interface GigabitEthernet1/0/4 *Dec 3 06:47:14.862: %HA_EM-4-LOG: CMD: <Remote Target IP> (aysekigu): description set-from-workflow *Dec 3 06:47:15.457: %SYS-5-CONFIG_I: Configured from console by aysekigu on vty2 (<Remote Target IP>) *Dec 3 06:47:15.459: %SSH-5-SSH2_CLOSE: SSH2 Session from <Remote Target IP> (tty = 2) for user '' using crypto cipher 'aes128-gcm@openssh.com', hmac 'hmac-sha2-256-etm@openssh.com' closed -
Input Command(s)
-
設定保存
設定変更後に保存を忘れるほど怖いことはありません。
Terminal Endpointアクティビティを追加し設定保存を行いましょう。
今回はcopy run startコマンドを使うのでコマンド投入後にユーザ入力を求められます。User Responseフィールドを使って入力を行い、保存を成功させます。

-
Expect (regex):ユーザ入力を求める状態のテキストを入力します。正規表現で入力するため
[]?などの記号にはエスケープが必要です。 - User response:画像ではわかりにくいですがエンターを入力しています。
Expect (regex)Destination filename \[startup-config\]\? -
Expect (regex):ユーザ入力を求める状態のテキストを入力します。正規表現で入力するため
Catalyst switch(HTTP Endpointで操作)
Terminal Endpointでの操作はCLIコマンドを使用できるため扱いやすい一方、出力結果が読みづらいという難点があります。
WorkflowsではHTTP Endpointに対してRequestを送信できるので、RESTCONFでCatalystスイッチを操作できそうです。RESTCONFなら結果をJSONで取得でき、読みやすいはず。試してみましょう!
※事前にCatalystスイッチ側でRESTCONFを有効にしています。
-
クレデンシャルの作成
HTTP Endpointで使うために新規にクレデンシャルを作成します。
ID/Passwordによる認証を行うためKey TypeはHTTP Basic Authenticationを選択します。

-
ターゲットの作成
Target TypeはHTTP Endpointを選択します。

-
HTTP
操作対象機器の情報、RESTCONFで使用するPathを入力
Path/restconf/data/ -
HTTP
-
情報取得
HTTP Endpointにより機器の情報を取得します。
Web Service > HTTP Request のアクティビティを使用し、以下の設定でWorkflowsを作成しました。

-
HTTP Request
取得したい内容にあわせてパスとメソッドを入力します。今回はインタフェースの情報を取得します。 -
Headers
RESTCONFを使う場合、Content Typeはapplication/yang-data+jsonを指定する必要がありますが、WorkflowsのContent Typeフィールドには選択肢が存在しないためCustom headersへ設定します。
Relative Url/Cisco-IOS-XE-native:native/interface -
HTTP Request
-
設定変更
アクティビティを追加し、RESTCONFによる設定変更を行います。

-
HTTP Request
Gi1/0/4のdescriptionを設定します。Relative Urlフィールドにおいて、インタフェース名の/は%2Fにエンコードする必要がある点に注意しましょう。
Relative Url/Cisco-IOS-XE-native:native/interface/GigabitEthernet=1%2F0%2F4Request Body{ "GigabitEthernet": [ { "name": "1/0/4", "description": "set-from-workflow2" } ] } -
HTTP Request
-
設定保存
設定保存に使うパスは/restconf/operations/ですが、作成済みターゲットのパスは/restconf/data/としていたので、設定保存用に別のHTTP Endpointターゲットを作成しました。
Path/restconf/operations/Workflowsを作成します。Targetは保存用に再作成したターゲットを選択します。
Relative Url/cisco-ia:save-config
Cisco ISE(HTTP Endpointで操作)
記事作成時点でCisco ISE EndpointはRemote Targetの対象外となっていますが、HTTP EndpointでAPIを実行して操作が可能です。
設定の流れは前項と同様です。ISEでERS APIを有効にし、MerakiでHTTP Endpoint用のクレデンシャルとターゲットを作成します。
ターゲットのHTTPフィールドは以下です。

Workflowは以下の内容で作成しました。

実行し、ISEのSecurity GroupとSGACLを取得できました。

まとめ
オンプレミス環境の機器をWorkflowsから操作してみました。
Merakiデバイスを所有していなくても、アカウントを作成すればWorkflowsからオンプレミス環境の機器を操作することが可能です。
Automation > Rules > Webhooks をトリガーにして外出先からオンプレ機器のステータス取得を行う、実行結果を抽出してWebEXに投稿させるなど、様々な活用方法がありそうです。
自動化の幅が広がりますね!
免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。






