Roadrunner Beta 1

Roadrunner Beta 1 is now available!

  • Data Standard 3.1
    • (warning) Data Standard 3.2 will be the goal for the full release.
  • Support for both SQL Server and PostgreSQL.
  • Deliver is via NuGet package.
  • Admin App is not ready.
  • Backdoor SQL script for creating key & secret .attached below.
  • There are known bugs.

Testers needed! Especially those who can point an application at the Roadrunner API instance and see what happens with a realistic sequence of API calls.

Operational Requirements

Deployment Automation

  • Scripts are built on assumption of PowerShell version 5 or above.
  • Requires .NET Core 2.2 SDK
  • For PostgreSQL there are two deployment modes, with different requirements:
    • From source scripts: automatically installs correct version of a custom database deployment tool.
    • From backup files: requires psql  executable to be in your command path
      • One easy install option: download Enterprise DB. While installing you can choose to install only the command line tools without the server, if desired.
  • Internet access - this is not an offline deployment process.

Server Environment

  • Web Server
    • Windows 10 or Windows Server 2016+.
    • IIS
    • .NET Framework 4.8.
    • Firewall access from web server to database server, if running on separate servers.
  • Database
    • SQL Server will work on 2016 and 2017 (untested on 2019, though will probably work).
    • PostgreSQL tested on latest patch releases of 10 and 11, in both Windows and Linux (tested via Docker).
    • Credentials that have the right to create and drop databases.

PostgreSQL managed services on cloud providers have not yet been tested. Please help!

Download

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-beta1 .

nuget.exe install EdFi.ODS.Roadrunner -Version 1.0.0-beta1 -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-beta1. This is just a fancy zip file - so if you want to inspect it, just open it with your favorite zip file client.

What's Inside

The repository directories contain various scripts used by the installation process, as well as the compiled binaries for the Web API, Swagger UI, and Api Bulk Loader. The script Initialize-Environment.ps1  is your entrypoint into the installation process.

Installation Process

On the webserver, open a PowerShell prompt and change to the root of the unzipped Roadrunner contents.

Database Security

The installation script has a password flag for SQL Server but not for PostgreSQL, but even for SQL Server it is not recommended. For SQL Server, if you need password security instead of Windows integrated security, then set your password in environment variable $env:SqlServerPassword. For PostgreSQL, either set your password via environment variable $env:PGPASSWORD or use a pgpass.conf file.

If your PostgreSQL instance requires SSL/TLS encryption, then set environment variable $env:PGSSLMODE="require" .

Initialize-Environment.ps1

Installs the Admin, ODS, and Security databases into either PostgreSQL or SQL Server. It then reconfigures the web.config files for Swagger and Web API (both optional) to include the correct configuration for the environment. Finally, loads the bulk console into a destination dir. 

The $useTemplates  flag is currently only available for PostgreSQL. When used, you must have psql  executable in the execution path.

Syntax

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>]

Parameters

NameAliasDescriptionRequired?Default Value
-swaggerIisFolder
Destination folder for Swagger web application. Files will be overwritten.
Default value of $null prevents Swagger web application from being
configured and deployed.
false
-webApiBaseUrl
Base URL that Swagger should use when connecting to the Web API. Defaults
to "http://localhost:54746".
falsehttp://localhost:54746
-webApiIisFolder
Destination folder for Web API web application. Files will be overwritten.
Default value of $null prevents Web API web application from being
configured and deployed.
false
-apiBulkFolder
Destination folder for installing the API bulk loader program.false
-engine
The database engine that will be used: SqlServer or PostgreSQL.true
-databaseServer
The network name or IP address of the database server.true
-databasePort
Database port number. For PostgreSQL, defaults to 5432. For SQL Server,
defaults to 1433.
false
-databaseUser
Username for connection to the database instance, both during installation
and during runtime. User must have permission to drop and create databases.
false
-databasePassword
Optionally provide a database password for non integrated-security.
Alternately, can provide via environment variable $env:SqlServerPassword.
Note that this is only supported for SQL Server, not PostgreSQL.
false$env:SqlServerPassword
-useIntegratedSecurity
Switch to enable use of Windows Integrated Security instead of a database
username and password. When true, any values provided for user name and
password are ignored.
falseFalse
-adminDatabaseName
Name of the Admin database. Defaults to EdFi_Admin.falseEdFi_Admin
-odsDatabaseName
Name of the ODS database. Defaults to EdFi_ODS.falseEdFi_ODS
-securityDatabaseName
Name of the Security database. Defaults to EdFi_Security.falseEdFi_Security
-useTemplates
Switch to install from template databases instead of the original SQL
scripts used by the EdFi.Db.Deploy executable. Currently only available
for PostgreSQL.
falseFalse
-odsTemplate
Template to use when $useTemplates is true. Allowed values: empty,
minimal, populated. Defaults to empty.
falseempty
-noDuration
When true, does not report task duration.falseFalse
-dropDatabases
When true, drops databases if they already exist. Defaults to false.
If databases exists and $dropDatabases is false, then deploy from
templates will fail, but deploy from Db Deploy will succeed.
falseFalse

Examples

Only install databases on PostgreSQL, using all available default values.

$parameters = @{ 
	engine = "postgresql"
	databaseServer = "myserver"
	databaseUser = "postgres" 
}
 .\Initialize-Environment.ps1 @parameters

Only install databases on PostgreSQL, using templates (populated ODS).

$parameters = @{ 
	engine = "postgresql" 
	databaseServer = "myserver" 
	databaseUser = "postgres" 
	useTemplates = $true 
	odsTemplate = "populated" 
}
.\Initialize-Environment.ps1 @parameters

Only install databases on PostgreSQL, dropping existing database first.

$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.

$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.

$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

Configuration

Web.Config

The web.config files are tuned for the database engine of choice, and tuned to remove features that are not included in Roadrunner. If you wish to switch between providers, you'll need to do so manually or rerun the installation process. To understand the differences between the configurations, you can study the Web.Base.config in comparison to Web.Npgsql.config in the downloaded Ed-Fi-ODS-Implementation\Application\EdFi.Ods.WebApi  folder.

By default, the Web Api application config file will not have a password in it, as password security via pgpass.conf is preferred. However, if you have trouble getting that to work (as we sometimes do), then you can always modify the connection strings manually in your web.config, adding "password=<your password>;" to all three connection strings. Likewise, you may need to set the SSL mode in the connection string.

Key and Secret

The following script will help you create a vendor and application with a pre-defined key and secret, including creating an association with an education organization. Please review carefully and adjust as needed - for example by using some key and secret better than the defaults you'll find in there!

postgres manual vendor setup - Admin.sql

Providing Feedback

Found a bug that is not listed in "Known Bugs" below? 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.

Feedback on the delivery? Can file a ticket in Tracker, post a comment below, respond in #dev-roadrunner in Slack, or send email to Vinaya Mayya and Stephen Fuqua.

Known Bugs

key summary created reporter priority status resolution

Unable to locate Jira server for this macro. It may be due to Application Link configuration.