kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure DevOps Server 2019でAzure SQL Databaseを使う

オンプレミスのAzure DevOps ServerはSQL Serverとペアで使います。大体直近2バージョンくらいまでサポートしているはずです。現在のAzure DevOps Server 2019 Update 1.1でSQL Server 2019をサポートしています。ただし、Windows版のみで、Linux版はサポートされません。

docs.microsoft.com

今までのオンプレミスのSQL Serverだけではなく、Azure DevOps Server 2019ではAzure SQL Databaseがサポートされるようになりました。

docs.microsoft.com

ちょっと制限がありますが、データベースがメンテナンスフリーになるのは非常に魅力的です。インストール時の注意点についてまとめます。

前提条件

  • デプロイ時にManaged Service IDを有効にしなくてはならない
  • Azure ADとフェデレーションしているドメイン環境にいなくてはならない
  • SQL DatabaseはConfigurationとCollectionをそれぞれシングルインスタンスのみサポート。Managed Instanceやエラスティックプールは未サポート
  • SQL DatabaseはStandard S3以上のSKUでなくてはならない

Standard S3以上ってのは検証のために用意するのはなかなかきついですね。ただし、SQL Server Reportingおよび、SQL Server Analysis Servicesはサポートされないので、Azure DevOps Server 2019内蔵のAnalyticsを使ってください。

ドメインに関してはドキュメントにはAzure Virtual Machines that are domain joined.とあるのですが、どうもAADDSに参加しているだけではダメで、Azure ADとフェデレーションしていないといけないようです。

f:id:kkamegawa:20200225062647p:plain

Managed IDはここですね。オンになってないといけません。

データベース作成

SQL Database作成はいいとして、二つのデータベースをStandard S3以上のSKUで作っておいてください。

  • AzureDevOps_Configuration
  • AzureDevOps_DefaultCollection

また、SQL DatabaseにはAzure Active Directory Authenticaitonを設定しておかないとセットアップできません。

データベース権限設定

ssmsでmasterデータベースを開いて、以下のクエリを実行します。

CREATE USER [VMName] FROM EXTERNAL PROVIDER
ALTER ROLE [dbmanager] ADD MEMBER [VMName]

[VMName]はAzureでのVM名(Start-azvm-name引数に指定する値)で、DNS名ではありません。

次にCollectionおよび、Configuration Database(AzureDevOps_ConfigurationとAzureDevOps_DefaultCollection)すべてに対して以下のSQLを実行します。

CREATE USER [VMName] FROM EXTERNAL PROVIDER
ALTER ROLE [db_owner] ADD MEMBER [VMName]
ALTER USER [VMName] WITH DEFAULT_SCHEMA=dbo

VMNameはさっきと一緒です。

インストール

f:id:kkamegawa:20200225065753p:plain

サーバー構成ウィザードのところで新しい配置 - Azureを選んでください。あとはコレクション名をDefaultCollectionのまま変更しなければいけるはずです…。

と紹介できればよかったのですが、フェデレーションしてる環境持ってないので、ここまでの紹介です(ごめん)。

これは新規インストールですが、アップグレードする際は「既存のデータベースがあります」を途中で選べばいいです。