Microsoft Copilot in Azure を試す


## はじめに

こちらの記事に影響を受けました。
[Microsoft Copilot in Azure が GA しました](
https://techblog.ap-com.co.jp/entry/2025/04/09/080000)

特にVMの停止・起動ができるという点には驚きました。
そこで、Microsoft Copilot in Azure がどこまでできるのか個人的に気になる点を検証してみました。

:::note warn
個人的に気になる点をざっくり検証しています。
結果OKだったものは◎、ダメだったものは×を付けました。
×だったものは私のプロンプトがよろしくない可能性あります。
:::

## 1. Microsoft Copilot in Azureとは

Azure portalで使用できるCopilotです。
Azure Portal上ではこのように表示されます。

![wym05l9p.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/bd7451f2-512c-4775-a606-40e2ac696282.png)


公式ドキュメントはこのあたりです：[Azure の Microsoft Copilot のドキュメント](https://learn.microsoft.com/en-us/azure/copilot/)

大きくは３つの機能があります。

1. (自分の)Azure 環境を理解する
1. Azure サービスでよりスマートに作業する
1. コードの記述と最適化

ではさっそく色々と試してみます。

## 2. 作成しているリソースの検索

自分の環境内のサービスを検索してくれる機能から試します。

### 【◎】特定サービスが存在するリソースグループを探す

![AzureFirewall検索-rg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/26335f97-d889-41b2-bd2e-c1b36d3c60ab.png)

適切なリソースグループを特定してくれました。
※正解のリソースグループが適当な名前だったので「正解RG」に修正しています。

また、探索系の指示を行うとAzure Resource Graph(テナント全体に対して探索できるサービス)を使用してくれることがわかりました。

Azure Resource GraphのLearnはこちら：[Azure Resource Graph とは](https://learn.microsoft.com/ja-jp/azure/governance/resource-graph/overview)

参考文献に載せていますが、こちらも分かりやすかったのでご紹介
[Azure Resource Graph (ARG) に馴染んでみる](https://qiita.com/task_woof/items/f3b513e745a052bccce0)

### 【×】使用していないpip特定

次に使用していないパブリックIPアドレスがあればそれを特定してみようと思いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/dc866e7c-10b7-4791-aece-7779e12749e1.png)

関連付けしていないpipが２つあるんですが、ヒットせず。
関係ない画面を開いていたので、それが原因かもしれないと思い該当リソースグループ画面を開いて実行してみましたが結果は同じでした。

クエリが綺麗に実行できるよう何度か対話すればいけるのかもしれません。

### 【◎】ピアリングやVnet設定検索

次はネットワーク関係の確認です。
プロンプトは「設定して。」になっていますが、かなり細かい設定まできちんと確認できたのでこちらで紹介します。

![peering設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/00c5603c-ceda-4f54-bf74-9ee923cf1b35.png)

回答はこちらです。

::: note warn
仮想ネットワーク「vnet１」と「vnet２」の間でピアリングが設定されています。以下の詳細があります：

VNet 名称と場所:

VNet 名称: "vnet１"
リージョン: "japaneast"
リソースグループ: "test-rg"
アドレス空間:"10.0.0.0/16"

ピアリング接続:
ピアリング名: "peer1"
接続先 VNet: "vnet２"
ピアリングステータス: "Connected"

ピアリング設定:
転送トラフィックの許可: あり
仮想ネットワークアクセスの許可: あり
リモートゲートウェイの使用: あり
ゲートウェイトランジットの許可: なし

サブネット構成:
サブネット: "default"
ルートテーブル: "test-RT" に関連付け
プライベートエンドポイント:

"default" サブネットに複数のプライベートエンドポイントが設定

DNS サーバー:
IP アドレス: "168.63.129.16"

この設定に問題がある場合や、さらなる構成が必要な場合は、具体的な詳細を提供してください。現時点では、すべてが正常に機能しているようです。
:::


## 3. コマンド実行

コマンドの実行ができるよとこちらに記載されていました。
[Azure で Microsoft Copilot を使用してコマンドを実行する](
https://learn.microsoft.com/en-us/azure/copilot/execute-commands)

どんなことができるのか？

Learnには以下のように書いていました。
>リソースまたはサービスに対して自然言語を使用して実行できるコマンドの詳細については、Azure の Copilot に直接お問い合わせください。たとえば、「仮想マシンで実行できるコマンドを教えてください」と言うことができます。

よってCopilotに聞いてみます。
![Copilotにコマンドを聞く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/1c365da4-cf50-484b-afc8-6d105b340913.png)

このあたりは高い確率で実行できそうです。
では書いてあること以外はできるのか・・・を試してみます。

### 【×】Azure Firewallの起動/停止コマンド

普段Azure Firewallにてpowershellで実行しているコマンドがあったので、Copilotで実行可能か試しました。

![Firewall-kido.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/4ab887f5-3ccd-4d0f-a935-dad0d9cbf1aa.png)

![Firewall-kido-syosai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/32307544-e398-41f1-9732-bb44ebc2a070.png)

以下のスクリプトを回答してくれました。
期待していたのは[Learn](https://learn.microsoft.com/ja-jp/azure/firewall/firewall-faq#azure-firewall-----------------)に記載されているPowershellでしたが、異なるものでした。

~~~ powershell

# Azure Firewallを起動するためのPowerShellスクリプト

# リソースグループ名を指定
$rgName = "resourceGroupName" # あなたのリソースグループ名を指定してください

# 既存の仮想ネットワークを取得
$vnet = Get-AzVirtualNetwork -ResourceGroupName $rgName -Name "vnet" # 仮想ネットワーク名を指定

# 既存のパブリックIPアドレスを取得
$pip = Get-AzPublicIpAddress -ResourceGroupName $rgName -Name "publicIpName" # パブリックIP名を指定

# Azure Firewallを再作成して起動
New-AzFirewall -Name "azFw" -ResourceGroupName $rgName -Location centralus -VirtualNetwork $vnet -PublicIpAddress $pip
~~~

次に、具体的なパラメータを指示して、実行を命じたのですがダメでした。

![Firewall-parameta.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/d5e6d70e-bad9-4bfe-95e2-649b1424582f.png)

### 【×】具体的なコマンド実行を指示してみる

Azure Firewall起動コマンドを実行するよう命じましたがダメでした。
※パラメータは事前に指示しても同じ結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/4d7ac13a-9eff-4657-bbbc-d1c3db3b6e20.png)

Copilot in Azure のLearn記載例を見てみるとやはりコード実行は難しいようです。
（コード作成補助や、Learn内容の回答まではできる）

https://learn.microsoft.com/en-us/azure/copilot/example-prompts

コード作成の精度を高めるプロンプトはトライ＆エラーが必要かもしれません。

## 4. VM起動

冒頭ご紹介したこちら：[Microsoft Copilot in Azure が GA しました](
https://techblog.ap-com.co.jp/entry/2025/04/09/080000)ではVMの起動・停止が可能でした。

では少し細かく条件を指定するとどうでしょうか。

### 【×】AVDに使用しているVMを起動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/e7a96bd8-9cce-4d14-abed-b38eeacd69b8.png)

プロンプトのせいかうまく検索できていません。
最後に「リソースの選択」ボタンを押すとVM一覧の画面に遷移しました。
（AVDに関係ないVMまで表示されました）

自分で選んで起動してくれということのようです。

## 5. トラブルシューティング

トラブルシューティングもできるようなので試します。

https://learn.microsoft.com/en-us/azure/copilot/network-management

### 【◎】VM起動してないことを指摘できるか

VMは起動していない状態で、
VMに接続できない原因を特定してもらいます。

![トラシュー１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/bada6261-658d-4722-8dab-56f063020a44.png)

![トラシュー2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/c44268dd-55f8-48b7-bd8b-f817770da528.png)

ここで該当VMを選択させる画面に遷移しました。
対象のVMをポチっと押すとNetwork Watcherぽい画面が表示されました。

![トラシュー3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/d371167e-6e63-4a6a-a38e-15c7ebc6f57f.png)
※適切なIPが入力されていました

確認を押すと以下が表示

![sukusyo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/51b5eab9-a50d-4a3a-a055-d2e5b1feb663.png)


きちんとVMがオフになっていることを特定してくれたようです。

### 【◎】P2SでVPN接続ボタンを押していないことを指摘できるか

P2S環境は[こちらの記事](https://qiita.com/yuyanz/items/ac88f795b29faf92753d)の通り構築しています。
P2Sの接続ボタンを押していない（接続されていない）状態でCopilotにVM接続できない理由を聞きます。

プロンプト送信後、VPNGWを押下する画面が表示されたので選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/2a5a0d73-5089-4bb2-929c-cdf01e4fe77c.png)

１番目に指摘してくれました。

#### トラブルシューティング(補足)

エラーが発生するとこのようにCopilotボタンが表示されます。

![ERROR-Copilot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/4553d647-8637-4bfe-91bb-e51fa2bc8b02.png)


ボタンを押すと解消するための選択肢をたくさん提示してくれます。（画像は１つですが実際は3，4個以上表示されました）
エラーに心当たりがない場合はまずCopilotボタンを押すとよいと思います。

![firewall-deploy-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/5fedf2f2-29fb-4d57-8f69-11e77bf77527.png)

※画像はAzure Firewall　Policyの更新error発生時の説明になります。Policy更新が終わってから操作するとエラー回避できたので、アドバイス内容は合っていました。


## まとめ

自分の環境を理解してくれる機能があるので検索機能は期待できそうです。
トラブルシューティングは可能性を含め解消方法を色々提示してくれるので、まず聞いてみるとよさげです。
※回答に時間がかかるので、原因がすぐにわかる有識者は自分で解決したほうが早いと思います。

## 参考文献

- [Microsoft Copilot in Azure が GA しました](
https://techblog.ap-com.co.jp/entry/2025/04/09/080000)

- [Azure Resource Graph (ARG) に馴染んでみる](https://qiita.com/task_woof/items/f3b513e745a052bccce0)