...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Warning |
---|
INTERNAL DRAFT |
...
Release candidate for Roadrunner.
Changes since Beta 1:
...
...
...
...
...
...
...
From backup files ("templates"): requires psql
executable to be in your command path
Note |
---|
Install via template is primarily intended for cloud environments, where re-packaging might be necessary and the custom deployment tool may be a sub-optimal solution. You can install the PostgreSQL client tools locally, which includes |
...
...
...
...
Tip |
---|
We've heard of a successful test of Roadrunner Beta 1 on Google Cloud Platform. We have every reason to think it will run successfully on AWS and Azure as well - please let us know about your experience on these platforms! |
Install Process
1. Download NuGet Package
Roadrunner binaries and automation scripts are available via a NuGet package. You should download this on your webserver. Two options: NuGet command line or direct download.
This command will automatically unzip the contents into the working directory, under EdFi.Ods.RoadRunner.1.0.0-rc1
.
Code Block |
---|
nuget.exe install EdFi.ODS.Roadrunner -Version 1.0.0-rc1 -Source https://www.myget.org/F/ed-fi/api/v3/index.json |
Alternately, download from https://www.myget.org/F/ed-fi/api/v2/package/EdFi.ODS.Roadrunner/1.0.0-rc1. This is just a fancy zip file - so if you want to inspect it, just open it with your favorite zip file client.
Inside that NuGet package, you'll find Initialize-Environment.ps1
. This orchestration script handles all of the deployment processes described above - installation to either database engine, download of the applications, and setting up connection strings.
2. Run Initialize-Environment.ps1
Prepare
In order to run the script, you'll need to have the following information at hand:
...
Database user credentials
Note |
---|
These credentials will be inserted into the web application connection strings. If using integrated security with SQL Server, then be sure to setup the IIS Appol Pool Identity user or the IIS service user, as appropriate, with |
...
If SQL Server, either the deployment account must have admin rights in the database (integrated security), or you need to provide SQL credentials that have admin rights. You can set the password via environment variable $env:SQLSERVERPASSWORD
or pass it as a parameter.
...
This script has a long list of parameters. It can be useful to create a PowerShell object (dictionary) with the values, instead of trying to string all of the values together in a single command. Doing so makes it easier to review your parameters before running the script.
Code Block | ||
---|---|---|
| ||
# Prepare an object dictionary with your parameters
$parameters = @{
# Add parameters here, e.g.
engine = "postgresql"
}
# Can also set parameters one-by one
$parameters.databaseServer = "myserver"
# Can review all parameters
$parameters
# Everything look good? Then pass the parameters to the deployment script:
.\Initialize-Environment.ps1 @parameters |
Command Syntax
Code Block |
---|
Initialize-Environment [[-swaggerIisFolder] <String>] [[-webApiBaseUrl] <String>] [[-webApiIisFolder] <String>] [[-apiBulkFolder] <String>] [-engine] <String> [-databaseServer] <String> [[-databasePort] <String>] [[-databaseUser] <String>] [[-databasePassword] <String>] [-useIntegratedSecurity] [[-adminDatabaseName] <String>] [[-odsDatabaseName] <String>] [[-securityDatabaseName] <String>] [-useTemplates] [[-odsTemplate] <String>] [-noDuration] [-dropDatabases] [<CommonParameters>] |
Parameter List
...
Destination folder for Swagger web application. Files will be overwritten.
Default value of $null prevents Swagger web application from being
configured and deployed.
Not recommended for production installations.
...
Examples
Only install databases on PostgreSQL, using all available default values.
Code Block |
---|
$parameters = @{
engine = "postgresql"
databaseServer = "myserver"
databaseUser = "postgres"
}
.\Initialize-Environment.ps1 @parameters |
Only install databases on PostgreSQL, using templates (populated ODS).
Code Block |
---|
$parameters = @{
engine = "postgresql"
databaseServer = "myserver"
databaseUser = "postgres"
useTemplates = $true
odsTemplate = "populated"
}
.\Initialize-Environment.ps1 @parameters |
Only install databases on PostgreSQL, dropping existing database first.
Code Block |
---|
$parameters = @{
engine = "postgresql"
databaseServer = "myserver"
databaseUser = "postgres"
dropDatabases = $true
}
.\Initialize-Environment.ps1 @parameters |
Install databases on SQL Server, with alternate port 1450, and deploy the Web API.
Code Block |
---|
$parameters = @{
engine = "sqlserver"
databaseServer = "myserver"
databasePort = 1450
useIntegratedSecurity = $true
dropDatabases = $true
webApiIisFolder = "c:\inetpub\ed-fi\webapi"
}
.\Initialize-Environment.ps1 @parameters |
Install on SQL Server, override the default database, and deploy both the Web API and Swagger UI.
Code Block |
---|
$parameters = @{
engine = "sqlserver"
databaseServer = "myserver"
databasePort = 1450
useIntegratedSecurity = $true
dropDatabases = $true
webApiIisFolder = "c:\inetpub\ed-fi\webapi"
swaggerIisFolder = "c:\inetpub\ed-fi\swagger"
admindatabase = "edfi_admin_rr"
odsdatabase = "edfi_ods_rr"
securitydatabase = "edfi_security_rr"
}
.\Initialize-Environment.ps1 @parameters |
3. Setup IIS Applications
If the deployment server is not also the web server, and if your "IIS Folder" paths were local rather than remote, then copy/move the three web application folders to your IIS web server(s). In IIS Manager, setup an Application for each, with custom app pools. If using integrated security in your connection strings, then we recommend setting App Pool Identity as the user and granting that user access rights to read and write in the three remote databases
Running the Applications
Now that everything is setup, you can start using the applications. As a first step, you may want to confirm that the Web API is running. If you installed on server "myserver" with IIS Application named "webapi", then try loading https://myserver/webapi in a browser to confirm that the version endpoint does not generate any errors. If that works, next try https://myserver/webapi/metadata. Any problems? Check the ODS/API error log, which by default is in c:\ProgramData\Ed-Fi-ODS-API.
Before accessing Swagger UI or loading data via the API Bulk Loader, you'll need to generate client credentials (key and secret). If you installed Admin App on server "myserver" with IIS Application named "AdminApp", then try loading htts://myserver/AdminApp. Click through the initial setup, and then stop and restart the web site via IIS Manager to force a security cache refresh.
For more information on Admin App, please see:
After creating client credentials, you can use them in SwaggerUI or in the API Bulk Loader.
Providing Feedback
Found a bug? Please file a Bug Report in the ODS project in Tracker. Ideally, use "roadrunner" in the labels field and put the name "Roadrunner" in the summary.
...