#author("2020-09-10T03:10:57+00:00","","") #mynavi(Azureメモ) #setlinebreak(on); #html(){{ <style> .images img { border: 1px solid #333; } </style> }} * 概要 [#p7a156d6] #html(<div class="pl10">) [[Gitea&DroneでCI/CD環境構築]] や [[Gitea&Drone&リバースプロキシ]] で構築した環境を Azure の仮想マシン上に作成し、 処理ソースを git push すれば Azure リソースを自動でデプロイする仕組みを構築する。 尚、Gitea、Drone の構築に関しては [[Gitea&DroneでCI/CD環境構築]] や [[Gitea&Drone&リバースプロキシ]] で実施した内容と変わらない為、 当記事では Azureリソースの デプロイや再起動に係る事項のみを記載する事とする。(下図のオレンジ枠のテキスト) #html(){{ <div style="padding: 5px 10px; background: #fee; border-left: 4px solid #900;"> [補足]<br /> <a href="https://azure.microsoft.com/ja-jp/services/devops/pipelines/">Azure Pipelines</a> が利用できる場合は、多分そっちを利用した方が賢い。 </div> }} #html(<div class="images">) &ref(azure_drone_image.png,nolink); #html(</div>) #html(</div>) * 目次 [#kc283bd7] #contents - 関連 -- [[Azureメモ]] -- [[Azure CLI の操作]] -- [[Gitea&DroneでCI/CD環境構築]] -- [[Gitea&Drone&リバースプロキシ]] - 参考 -- [[Docker コンテナーでの Azure CLI の実行>https://docs.microsoft.com/ja-jp/cli/azure/run-azure-cli-docker?view=azure-cli-latest]] * Drone Runner から Azureリソースを扱うには [#a07ce4d9] #html(<div class="pl10">) Azure CLI がセットアップ済みの docker イメージが公式で提供されているので、これを利用する。 (参考: [[Docker コンテナーでの Azure CLI の実行>https://docs.microsoft.com/ja-jp/cli/azure/run-azure-cli-docker?view=azure-cli-latest]] ) .drone.yml #mycode2(){{ kind: pipeline type: docker name: default steps: - name: build image: .... commands: - "....." when: branch: - master - name: deploy # Azure CLI が利用できる dockerイメージ image: mcr.microsoft.com/azure-cli # az コマンドの発行 commands: - "az ....." - "az ....." when: branch: - master }} #html(</div>) * どうやってaz login するのか [#yfa78c87] #html(<div class="pl10">) az コマンドから Azureリソースを扱うには、事前に az login が必要になるが、このようなケース(自動運転)ではどのようなログイン方法が最適なのか。 以下のドキュメントをみる限り、サービス プリンシパルを使ってサインインするのが良さそう。 https://docs.microsoft.com/ja-jp/cli/azure/authenticate-azure-cli?view=azure-cli-latest#sign-in-with-a-service-principal 以下、抜粋 #html(){{ <div style="padding: 10px; background: #eee; border-left: 4px solid #333;"> サービス プリンシパルは、特定のユーザーに関連付けられていないアカウントであり、定義済みのロールによってアクセス許可を割り当てることができます。 <br /> サービス プリンシパルを使用した認証は、セキュリティで保護されたスクリプトやプログラムを記述するのに最適な方法で、アクセス許可の制限と、ローカルに保存された静的な資格情報の両方を適用できます。 </div> }} サービス プリンシパルの利用方法については、別記事 [[Azureサービスプリンシパルの使用]] に記載している為、ここでは省略する。 #html(</div>) * 証明書を Drone runner に渡す方法 [#gd7163ca] #html(<div class="pl10">) サービスプリンシパルを使用して az login をする際のコマンドは以下のようになる。 #myterm2(){{ az login --service-principal -u http://サービスプリンシパル名 -p ./my_cert.pem --tenant テナント }} Runner で drone-runner-docker を利用している場合、証明書(上記のmy_cert.pem) を渡すにはひと手間必要となる。 ※サービスプリンシパル名やテナントは環境変数として渡すとして。 https://docker-runner.docs.drone.io/configuration/volumes/host/ #html(</div>)