headerInvoke-webrequestで送信VMコマンド実行サンプル最後に説明を始める前に説明を始める前に、まず簡単にRestAPIについて、軽く触れていこうと思います。開発者の方でしたらすごく詳しいと思いますが、私みたいなインフラエンジニアにとっては「?」しか浮かないかもしれません。APIの略称で、簡単にいうと、事前に決めたURI(URL)にPOSTやGETなどリクエストを出すことで、このURLに紐づく動作を実行させる仕組みです。※動作の内容は、リクエストを受け付けているWEBサーバのプログラムで事前に定義している要するに、実行したい動作のURIにリクエストを出すだけで、操作が実施させることができる仕組みです。リクエストについてですが、基本HEADERとBODYの部分がありまして、それぞれ必要なデータを書くわけですが、これはサーバ側のプログラムで定義するので、開発の話になってしまうため、ここでは割愛いたします。本記事では、RestAPIを使って仮想マシンのOSにコマンド実行させるための内容をまとめるので、そのHEADERやBODYはサンプルとして上げていきます。仮想マシンにコマンドをリモートで実行させるには、様々な方法があります。以下の方法(ツール)があります。sshopensshrshAzureの場合、上記のツール以外に、RestAPIでコマンドを実行させることを可能になっています。Azure仮想マシンにはRestAPIを提供しています。POSTリクエストを仮想マシンに送信することで、コマンドを実行させることが可能です。この記事では、以下の記事を参考に、検証などを行ってから、書いたものとなります。公式ドキュメント仮想マシンのPOSTのURI仮想マシンにコマンドを実行させるためのURIは以下となっています。※バージョン変更する可能性があるので、仕様する前に上記公式ドキュメントを確認してください。https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/runCommand?api-version=2020-06-01また、上記URIの以下の部分は自分の環境に合わせて、置き換えてください。仮想マシンのPOSTの本体(body)POST内容は事前に定義されているので、正しくPOSTするには、定められた内容でPOSTする必要があります。※RestAPIの一般的な話ですが、POSTの本体(body)は基本JSON形式(key-value)のデータです。他の形式はできるものの、汎用性が低いです。Bodyは以下の三つの情報(key)が入れられます。world"}]script:実行するコマンドオプション:省略可データ型:文字列の配列。--identity"]この値を指定すると、指定したスクリプトによってコマンドの既定のスクリプトがオーバーライドされます。この部分はイメージが湧かないと思いますが、記事の最後のサンプルのbodyを確認していただくと、どんな風に書くかが分かっていただけると思います。restAPI送信するためのツール現時点、簡単にrestAPIを送信できるツールは以下の2つあります。5.0以降)今回はpowershellをベースに説明していきます。慣れている方は、内容をcurlに変換すれば、うまくいくはずです。powershellデータ型の簡単紹介Invoke-webrequestをご紹介する前に、前提知識として、簡単にPowershellのハッシュテーブル(jsonみたいなkey-value形式)とArray(配列)のデータ型の定義の仕方をご紹介します。headerAzureのリソースを操作するために、認証が必要です。認証情報は基本Headerに記載するので、POSTリクエストにHeaderに認証情報を付けて、認証させる必要があります。※Headerの本質もkey-valueとなります。ヘッダーのvalue部分にあるBearerは固定の文字列で、"token_type"というものの指定となっています。::は静的メンバにアクセスする演算子です。参考:Invoke-webrequestInvoke-webrequestの使い方を例を使って、簡単に紹介します。Invoke-webrequestはアクセス結果を返してくれるので$response変数で受け取っている。結果を出力する※Invoke-RestMethodというコマンドもありますが、出力内容が違いみたいなので、基本curlと対等なのがInvoke-webrequestです。VMコマンド実行サンプル前提知識を以上ご紹介しました。それでは、VMコマンド実行するためのサンプルコードを以下に置きます。前提知識が理解していればすぐわかると思います。commandIdの定義は必須。Invoke-webrequestはアクセス結果を返してくれるので$response変数で受け取っている。結果を出力するサンプルの参考サイト最後にクラウドサービスはホント便利ですね、こんなこともできるなんて、と感心しました。Azureを使う場合のみ、仮想マシンにコマンドを実行させる手法が一つ増えていますね。これでツールを導入せずとも、リモートからコマンドを実行させることが可能になるし、認証もAzure認証のみでよいです。ここまで読んでいただいて、お疲れ様でした。Monitorは、クラウドおよびオンプレミス環境の利用統計情報を収集、分析し、それに対応する包括的なソリューションを提供する。要するに、監視・監査用なサービスです。Databaseなど)は、デフォルトではインターネットからアクセスされるようなものです。Azure仮想ネットワーク(以下vNetと書く)と他のネットワークを接続するには、以下の3つの手段があります。基礎概念について、こちらの記事でご紹介しました。環境のみで試してみることにします。クラスタのマネージドサービスです。コメントをキャンセルコメントを投稿するにはログインしてください。(インフラ)-----------------------------投稿する内容は自分の専門に関わるものが多いですが、たまに趣味で調べたものも投稿します。記事の内容はあくまで個人の見解となりますので、ご了承ください。(インフラ)-----------------------------投稿する内容は自分の専門に関わるものが多いですが、たまに趣味で調べたものも投稿します。記事の内容はあくまで個人の見解となりますので、ご了承ください。Serverメタ情報ログイン投稿フィードコメントフィードWordPress.org広告タイトルとURLをコピーしました。