Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019
With an unattended install you can preset all configuration parameters for your Azure DevOps Server instance in advance. The tfsconfig unattend command is especially useful when you're familiar with the Azure DevOps Server configuration process and are deploying Azure DevOps into a multiple machine environment.
For example, many large-scale enterprise systems have several servers that are designated to builds. Unattended install allows an administrator to quickly kick off the Team Build installation process on these machines without having to supervise each one independently. Furthermore, since the configuration for each build server will likely be almost or completely identical, it should be easy to set each machine’s configuration parameters quickly.
Important
This article describes usage of the tfsconfig unattend command to perform an unattended install on Azure DevOps Server 2019. While the steps are similar for previous versions of Team Foundation Server, the syntax for the tfsconfig unattend command has changed. For details, select the article version you want from TFSConfig, Unattend.
Use the unattend command to perform the following types of installations:
For information on the syntax usage of the tfsconfig unattend command, see Use TFSConfig to manage Azure DevOps on-premises, Unattend.
Prepare a single computer that satisfies the system requirements.
If you don't plan to use SQL Server Express, set up a supported version of SQL Server. When you set up SQL Server for Azure DevOps on-premises, at a minimum install the Database Engine and Full-Text and Semantic Extractions for Search features.
We recommend that you use SQL Server Express only for personal or evaluation deployments. Paid copies of Azure DevOps on-premises include a SQL Server Standard license. For more information, see Azure DevOps Server pricing. If you use the included license, you can use it only for databases created with those products.
The account you use to configure the installation must be a member of the sysadmin server role in SQL Server.
Note
Installing Azure DevOps on-premises involves a set of operations that require a high degree of privilege. These operations include creating databases, provisioning logins for service accounts, and more. Technically, all that's required is:
To support installation and configuration of the Search extension, you need to provide a user name and password. Installing and configuring Search supports Code, Work Item and Wiki search features. For more information, see Configure search.
Note
Search also requires Oracle Server JRE 8 (Update 60 or higher). You can download and install or update to the latest version by accepting the Oracle Binary Code License Agreement for Server JRE and selecting Configure. Note that this will set the JAVA_HOME environment variable to point to the Java installation directory, and that Server JRE does not provide automatic updates.
When configuring the application-tier you have a choice of web site settings. Review Web site settings to understand the choices and requirements.
The unattended install feature supports all the same installation types that the Configuration Wizard supports and contains fields for the same set of configuration parameters. For the most part, the name of each configuration type for unattended install mirrors the name in the Wizard.
Here is a list of names and descriptions of the types of unattended configurations:
InstallType | Description |
---|---|
NewServerBasic | Configures the essential development services for Azure DevOps Server. This includes Azure Boards (work tracking) Azure Repos (source control), Azure Pipelines (build and release), and optionally Search. |
NewServerAdvanced | Configures the essential development services and allows optional configuration of integration with Reporting Services. |
Upgrade | Upgrades Azure DevOps Server to the current version from a supported previous release. |
PreProductionUpgrade | Test the upgrade on an existing Azure DevOps Server deployment in a pre-production environment. This is typically done using databases restored from production backups. This scenario includes additional steps to ensure that the new deployment will not interfere with the production deployment. |
ApplicationTierOnlyBasic | Configure a new application tier using existing settings from the supplied configuration database. This option allows you to get a new application tier up and running quickly using existing settings. If you want the ability to change existing settings, use the Advanced ApplicationTierOnlyAdvanced type instead. |
ApplicationTierOnlyAdvanced | Configure a new application tier with full control over all settings. Settings will default to existing values from the supplied configuration database. If you want to preserve all of your existing settings, use the ApplicationTierOnlyBasic type instead. |
Clone | Configure a new Azure DevOps Server deployment which is a clone of an existing deployment. This is typically done, using databases restored from production backups, to create an environment where configuration changes, extensions, and other modifications can be tested. This scenario includes additional steps to ensure that the new deployment will not interfere with the production deployment. |
Proxy | Configures a version control proxy service. |
Important
Before running the configuration, you need to ensure you have a current backup of your databases and then override ‘ConfirmBackup’ so that ‘ConfirmBackup=True.’ Otherwise, the configuration won't run.
Unattended install is only intended for use in on-premises scenarios. Unattended installation doesn't support the following scenarios:
Download Azure DevOps Server through one of the following channels:
Perform a silent installation.
azuredevopsserver2019.1_rc1.exe /Silent
Or, silently install the express version.
devopsexpress2019_rc1.exe /Silent
The installer copies files onto your machine.
Verify the installation by looking at C:\Program Files\Azure DevOps Server 2019 folder.
You can configure your installation by choosing Start Wizard, or exit and configure using unattended install.
At this point, you have the bits installed on your machine, but Azure DevOps Server isn't configured. To perform an unattended configuration, you need to create an ini file and then configure the machine(s) using that ini file.
The /create command option generates a configuration file that you can then modify or run to configure a server instance.
To start, open a command prompt to run as an administrator and change to the /Tools directory
Here, we run the /create command, specifying the type of installation and name of the file to create.
C:\Program Files\Azure DevOps Server 2019\Tools>
tfsconfig unattend /create /type:NewServerBasic /unattendfile:basic.ini
Upon completion, open the .ini file in a text editor. It appears similar to the one listed next. The auto-generated, fully-commented basic.ini file specifies to perform the following tasks:
[Configuration]
Activity=Microsoft.TeamFoundation.Admin.ServerConfigurationActivity
Assembly=Microsoft.TeamFoundation.Admin, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
; You can submit information about your Azure DevOps Server configuration and administration experience to Microsoft.
SendFeedback=True
; One of the following configuration Scenarios:
;
; NewServerBasic: Configure a new server with only the essential services.
; NewServerAdvanced: Configure a new server with essential and other optional features.
; NewServerAzure: Configure a new server with Azure SQL integration.
; ProductionUpgrade: Upgrade an existing production server.
; PreProductionUpgrade: Perform a pre-production upgrade using backed up production databases.
; ApplicationTierOnlyBasic: Basic application tier-only configuration using existing settings.
; ApplicationTierOnlyAdvanced: Application tier-only configuration that allows full setting customization.
; Clone: Create a new deployment from an existing deployment.
;
Scenario=NewServerBasic
; Whether SQL Express will be installed as part of configuration
InstallSqlExpress=False
; Provide the configured SQL instance in the form of Server, ServerName\InstanceName or Server,Port
SqlInstance=MININT-O0VPFCK\SqlExpress
; You can elect to create an existing set of empty databases (Tfs_<label>Configuration, Tfs_<label>Warehouse and Tfs_<label>Analysis)
UseExistingEmptyDatabase=False
; Determines whether a configuration database will get created
CreateConfigurationDatabase=True
; Database label controls the names of the configuration databases. Database name will be Tfs_<label>Configuration, Tfs_<label>Warehouse and Tfs_<label>Analysis
DatabaseLabel=
StartTrial=False
; Boolean to determine whether the account is a built-in account
IsServiceAccountBuiltIn=True
; Account that the Azure DevOps web site will run as. On a domain joined machine, this can be a domain account or NT Authority\Network Service. On a workgroup machine, it can be a local account or NT Authority\Local Service
ServiceAccountName=NT AUTHORITY\NETWORK SERVICE
; The LCID to use for this Azure DevOps Server installation.
LCID=1033
; The host name portion of the web site URL. This is typically the machine name but can be customized for more advanced scenarios such as HTTPS or NLB
UrlHostNameAlias=MININT-O0VPFCK
; The web site virtual directory name can be either empty or up to 8 alphanumeric characters.
WebSiteVDirName=
;
; SiteBindings is a semi-colon separated list of bindings, each of which consists
; of 4 or 6 parts (4 for http, 6 for https):
;
; [http|https]:[ipaddress]:[port]:[host]:[certificateStore]:[certificateThumprint|"generate"]
;
; Examples:
; http:*:80:
;
; A single http binding on port 80, for all unassigned IP addresses, with no host header
;
; https:*:443:contoso.com:My:generate
;
; A single https binding on port 443, for all unassigned IP addresses, having a host header 'contoso.com',
; including a generated self-signed certificate that will be stored in the Personal store
; on the local machine.
;
; http:*:80:;http:*:8082:
;
; Two bindings separated by a semi-colon
;
; https:*:443:contoso.com:My:169CE0BCCECBD854321A61670413F8000A798F31
;
; A single https binding on port 443 with a certificate thumbprint.
; Azure DevOps will look for the thumbprint in the Personal store for the local
; machine.
;
SiteBindings=http:*:80:
; The Public URL is the primary URL that users specify to connect to the system and is the URL used in the text of e-mail alerts.
PublicUrl=http://minint-o0vpfck/
; The Windows file system folder used by Azure DevOps Server to cache data.
FileCacheFolder=C:\AzureDevOpsData\ApplicationTier\_fileCache
; Determines if Email notifications will be enabled.
SmtpEmailEnabled=False
; Determines if SSH service will be enabled.
EnableSshService=True
; The port used by the SSH service.
SshPort=22
; Configure Search in Azure DevOps deployment.
ConfigureSearch=False
; You can select to install new search service or use an existing search service
InstallSearchService=True
; Determines whether an initial collection will be created. This can be disabled for advanced scenarios such as different SQL instances by using the create collection wizard in the administration console after configuring the server.
CreateInitialCollection=True
; The name of the collection
CollectionName=DefaultCollection
; The description for the collection
CollectionDescription=
UseExistingEmptyCollectionDatabase=False
When you run an unattended installation, the process performs the same validation checks as the Configuration Wizard and then configures the specified Azure DevOps Server instance on the machine.
You can run the /configure command in one of two ways. The first and recommended option uses the ini file you created in the previous step. The second option specifies a type of installation to run and then specify inputs to override the smart defaults. Each option is mutually exclusive. You can't specify both a file and a type.
The two basic forms of the /configure command are:
tfsconfig unattend /configure /unattendfile:<file> [/inputs:<inputs>] [/verify] [/continue]
tfsconfig unattend /configure /type:<type> [/inputs:<inputs>] [/verify] [/continue]
For information on the syntax usage of the tfsconfig unattend command, see Use TFSConfig to manage Azure DevOps on-premises, Unattend.
Note
If you choose to run the /configure command without first creating an ini configuration file to manage the inputs, we recommended you run /verify prior to proceeding with the full configuration.
Once the install is complete, you can access the Azure DevOps Server at:
http://<localhostname>:8080/tfs
Or, for the express server at:
http://<localhostname>
Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowTraining
Module
Perform post-installation configuration of Windows Server - Training
Perform post-installation configuration of Windows Server
Certification
Microsoft Certified: Azure Database Administrator Associate - Certifications
Administer an SQL Server database infrastructure for cloud, on-premises and hybrid relational databases using the Microsoft PaaS relational database offerings.
Documentation
Discusses security concerns related to web site settings for Azure DevOps Server, including SSL/TLS, certificates, self-signed certificates, and more
Install and configure Azure DevOps Server - Azure DevOps
Learn how to choose the configuration for installing Azure DevOps Server.
Setup & upgrade requirements - Azure DevOps Server
Learn about hardware, operating systems, SQL Server requirements to install Azure DevOps Server.