のタレントフォームを使用してAzureウェブアプリケーションの設定CD
バックルアップしましょう.
工具
地形
私は必要
terraform
私のマシンでオクトパス展開
このポストのために、私はAにサインアップしましたfree tier of Octopus Deploy SaaS offering . もちろん、自己ホストのバージョンも同様に動作します.
サインアップして、私のアカウントを構成するとき、私はTerraformで使用するつもりである新しいAPIキーを生成することができます
すべての設定はデフォルトのスペースに対して行われる
Spaces-1
), しかし、それも設定可能です.紺碧
アコと一緒にタコを展開するには、サービスプリンシパルが必要になります.
# (!) make sure to follow the principle of least privilege here
# and define the role and scope
az ad sp create-for-rbac --name sp-octopus-deploy
テントウムシID、アプリケーションID、パスワード、およびサブスクリプションIDの値.後で彼らを注意します.紺碧関数
デモのために、私は提供されるヘッダーのリストであなたのGET要求に答えるこの超簡単なAzure機能を使用するつもりです.
完全なソースコードはpublished here .
the
.csx
GISTは以下の通りです< div >
紺碧の悪魔
< tt > Azure devopsでciを実行します.p >
プロジェクトの設定はとても簡単で、それはterraform設定ですcan be found here .
パイプラインそのものhere .
< p >複雑なものはない
<ウル>
私はまだ待っているthe fix to my bug-report to be delivered , それがなければ、このデモを終わりから終わりまではできません
インプット
Terraform Providerは他のプロバイダとは異なり、Terraform Registry
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/de5608266e39e4bd3656ee42971f4f9e.js//>
< div >
< p >と
terraform init
行方不明のファイル< P >
構成
デモのために、私はこれを持っているつもりです
terraform.tfvars
ファイルをterraformに設定します.p >< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/527980e58759626fc4988833cc3a07e4.js//>
< div >
環境設定
現在、我々は出発する準備ができています.まず、新しい設定をする予定ですEnvironment .
Environments are how you organize your deployment targets (whether on-premises servers or cloud services) into groups that represent the different stages of your deployment pipeline, for instance, development, test, and production.
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/a36c0c2d6ef23f5aa412b7b7199a6f27.js//>
< div >
あなたは多分1つ以上を持っているでしょう、しかし、それは今のためにしますp >
展開目標
次の重要な部分はDeployment Target
With Octopus Deploy, you can deploy software to Windows servers, Linux servers, Microsoft Azure, AWS, Kubernetes clusters, cloud regions, or an offline package drop. Regardless of where you're deploying your software, these machines and services are known as your deployment targets.
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/f7c46cdc117a2f4fa8aa8709971ced5b.js//>
< div >
私は使っています
octopusdeploy_azure_web_app_deployment_target
, それはかなり具体的です.私は、より多くの将軍を使うことができました octopusdeploy_deployment_target
代わりにp >これはAzure(私のサービスプリンシパル)とタコでリンクしています.p >
現在、我々はタコで定義されたきれいできれいなインフラストラクチャを持っています.p >
< P >
プロジェクト
次のステップは、設定することですProject .
Projects let you create and manage your deployment processes, releases, and runbooks from the Octopus REST API and Octopus Web Portal.
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/3c38307ef53cff53631edad17ece29a2.js//>
< div >
を設定しています
Echo Api
ここにプロジェクトDefault Project Group
デフォルトでlifecycle .< P >
展開プロセス
そして今はジューシーな部分ですp >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/46cf47377155fef292da378d0cb0fdca.js//>
< div >
私の展開は、実際には、単純には、組み込みのフィードからパッケージを拾って、私の唯一の環境にプッシュしている1つのステップだけです.p >
すべての展開が単純であることを願っていますp >
< P >
リリース
最初に、私はリリース作成を自動化して、私のAzure devopsパイプラインを通してそれを誘発したかったです、しかし、最近のバグのため、私はここで妨げられます.今のところ手動で処理されているので、このポストを更新します.p >
私はZIPファイルから新しいリリースを作成しています.
< P >
そして今、私は後ろに座ることができ、それが私の関数を展開するのを見ることができますp >
< P >
< url >p >
< P >
輸入
タコ展開に関するきちんとした部分は、リソースIDのシステムです.あなたのterrform状態に既存のリソースをインポートするのが簡単になるオブジェクトのIDを見つけるのは簡単です.p >
< tt >環境設定が既にあると仮定しますbr/>
<> P >
クラスをハイライト表示する
https://cloud-eng.octopus.app/app#/Spaces-1/infrastructure/machines?environmentIds=Environments-7
< div >URLがこのように見えます.
Environments-7
は私の環境のIDです.p >< ch >環境をインポートするのにかかるのは、リソースを宣言して1つのコマンドを入力することです.
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/asizikov/2301838944f3e1d5f4259451fa9a2a13.js//>
< div >
これは長い間、AzureでIDを取得するのが簡単ではありません.
this is a cross-post from my personal blog.
Reference
この問題について(のタレントフォームを使用してAzureウェブアプリケーションの設定CD), 我々は、より多くの情報をここで見つけました https://dev.to/asizikov/configure-cd-for-azure-webapp-with-terraform-provider-for-octopus-deploy-4iacテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol