22
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cisco Workflowsでオンプレミスの機器を操作する

22
Last updated at Posted at 2025-12-07

はじめに

この記事は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からオンプレ機器を扱えるようになります。
image.png

Remote Targetの構築

手順に沿ってESXi上にRemote Targetを構築します。

  1. MerakiでRemote Targetを作成
    Automation > Targets > Remote Targets > New remote
    Remote TargetのIPアドレスはDHCP割り当てとし、プロキシサーバを経由せずインターネットへ出る設定です。
    image.png

  2. Remote Configuration Fileをダウンロード
    image.png

  3. Remote TargetのOVAファイルをダウンロード
    image.png

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

  5. Meraki上でターゲットがConnectedになったことを確認
    image.png

Workflowsでオンプレミスの機器を操作

Remote Targetがサポートしているターゲットタイプは以下の3種類です。(本記事の作成時点)
・HTTP Endpoint
・Terminal Endpoint
・Unix/Linux Endpoint
Catalyst CenterやISEは現在サポート対象外となっていますが、今後サポート予定です。最新情報は公式ドキュメントをご確認ください。

Catalyst switch(Terminal Endpointで操作)

Terminal Endpointを使うとSSHまたはTelnetで機器へ接続しコマンドを実行できるので、ターミナルエミュレータと同様に操作できます。
まずはCatalystスイッチへSSH接続し操作してみましょう。

  1. クレデンシャルの作成
    Automation > Targets > Account Keys > New account key
    Terminal Endpointで使うため、Key TypeはTerminal Passwordを選択します。
    ※今回は privilege level 15 のアカウントを登録しました。
    image.png

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

    • Account Keys
      前の手順で作成したクレデンシャルを選択
    • Remote
      作成済みのRemote Targetを選択
    • Connection Settings
      操作対象機器の情報を入力

    ターゲット作成後、正常に宛先へ到達できればStatusがValidになります。
    image.png
    StatusがValidation failedになった場合、クレデンシャル誤りや宛先へ到達できていない可能性があります。
    image.png

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

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

    設定が完了したらWorkflowsを検証し、実行しましょう。
    Validate > Run
    image.png
    情報が取得できました!
    スイッチ側でも以下のログが確認できます。(EEMにより実行されたコマンドをログに表示させています)

    対象機器のsyslog
    Switch-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
    
  4. 設定変更
    アクティビティを追加し、以下の内容で設定変更を行います。
    image.png

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

    Workflowsを検証し、実行。
    image.png
    設定後のshowコマンド結果により正しく設定されたことが確認されました。
    スイッチ側でも設定変更中のログを確認します。

    対象機器のsyslog
    Switch-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
    
  5. 設定保存
    設定変更後に保存を忘れるほど怖いことはありません。
    Terminal Endpointアクティビティを追加し設定保存を行いましょう。
    今回はcopy run startコマンドを使うのでコマンド投入後にユーザ入力を求められます。User Responseフィールドを使って入力を行い、保存を成功させます。
    image.png

    • Expect (regex):ユーザ入力を求める状態のテキストを入力します。正規表現で入力するため[ ] ?などの記号にはエスケープが必要です。
    • User response:画像ではわかりにくいですがエンターを入力しています。
    Expect (regex)
    Destination filename \[startup-config\]\?
    

    実行し、設定保存が無事に完了しました。
    image.png

Catalyst switch(HTTP Endpointで操作)

Terminal Endpointでの操作はCLIコマンドを使用できるため扱いやすい一方、出力結果が読みづらいという難点があります。
WorkflowsではHTTP Endpointに対してRequestを送信できるので、RESTCONFでCatalystスイッチを操作できそうです。RESTCONFなら結果をJSONで取得でき、読みやすいはず。試してみましょう!
※事前にCatalystスイッチ側でRESTCONFを有効にしています。

  1. クレデンシャルの作成
    HTTP Endpointで使うために新規にクレデンシャルを作成します。
    ID/Passwordによる認証を行うためKey TypeはHTTP Basic Authenticationを選択します。
    image.png

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

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

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

    Workflowsを実行します。
    image.png
    成功しました!Json形式だと中身を読みやすいですね。

  4. 設定変更
    アクティビティを追加し、RESTCONFによる設定変更を行います。
    image.png

    • HTTP Request
      Gi1/0/4のdescriptionを設定します。Relative Urlフィールドにおいて、インタフェース名の/%2Fにエンコードする必要がある点に注意しましょう。
    Relative Url
    /Cisco-IOS-XE-native:native/interface/GigabitEthernet=1%2F0%2F4
    
    Request Body
    {
        "GigabitEthernet": [
          {
            "name": "1/0/4",
            "description": "set-from-workflow2"
          }
        ]
    }
    

    実行します。
    image.png
    無事に設定変更が完了しました。

  5. 設定保存
    設定保存に使うパスは/restconf/operations/ですが、作成済みターゲットのパスは/restconf/data/としていたので、設定保存用に別のHTTP Endpointターゲットを作成しました。
    image.png

    Path
    /restconf/operations/
    

    Workflowsを作成します。Targetは保存用に再作成したターゲットを選択します。
    image.png

    Relative Url
    /cisco-ia:save-config
    

    実行します。
    image.png
    成功しました。設定保存は大切ですね。

Cisco ISE(HTTP Endpointで操作)

記事作成時点でCisco ISE EndpointはRemote Targetの対象外となっていますが、HTTP EndpointでAPIを実行して操作が可能です。
設定の流れは前項と同様です。ISEでERS APIを有効にし、MerakiでHTTP Endpoint用のクレデンシャルとターゲットを作成します。
ターゲットのHTTPフィールドは以下です。
image.png
Workflowは以下の内容で作成しました。
image.png
実行し、ISEのSecurity GroupとSGACLを取得できました。
image.png

まとめ

オンプレミス環境の機器をWorkflowsから操作してみました。
Merakiデバイスを所有していなくても、アカウントを作成すればWorkflowsからオンプレミス環境の機器を操作することが可能です。
Automation > Rules > Webhooks をトリガーにして外出先からオンプレ機器のステータス取得を行う、実行結果を抽出してWebEXに投稿させるなど、様々な活用方法がありそうです。
自動化の幅が広がりますね!

免責事項

本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。

22
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
22
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?