A Unified UI

Adjusting the mindset

  • Increased focus on maintenance
  • Lets decouple our users' duties:
    • BAU maintenance
    • Development
    • Business reporting
    • System configuration
    • (Consumer: Self-service portal)

A new mental model and structure

With support for "domains"

The hierarchy

Environment

Asset

Provider

Host

Uses

Influences

Facilitates a bottom up view for assets and hosts.

Informational

"Semantic"

"Physical"

Assets

  • Service catalogue instances
  • Composite service catalogue instances
  • MintDeploy Enterprise Deployments
  • "Hollow" templates for existing assets
    • e.g. to manage existing stuff, add a template for it which only has the custom actions you want to add

The tab hierarchy

Home, focused on BAU

Environment

Provider

Home, empty state

🏃

Environments and friends

"Assets"

  • Asset/SC instance
    • Composable
  • Enterprise deployment
    • Composable
      • Requires increased flexibility
  • Existing asset
  • (Actor)

Multiselect for comparisons and actions.

Asset card

Assets, bottom up

Providers and friends

Home >> Provider: Prod >> awsosi1

OSQuery for host info?

Env Development

Making definition updates is done offline

Download template: downloads a tarball containing a working directory:
 {{template_name}}/
       metadata.yml
       properties.yml
       actions.yml
       composition.yml
       transforms.yml
       compliance.yml
       testing.yml
       domainCfg.yml
       definition/ -- chef stuff
Equivalent of running `mintpress init`.

Adding a "shortname" is tempting...

Workflow

  • Pre-commit/pre-receive hooks
  • Linting
  • Testing

Existing assets

  • Add a shell of a template that provides available actions
  • Treat like an asset
    • Might be worth visually indicating the distinction

MintDeploy

  • More detail needed
  • Implementation technology doesn't actually matter, i.e. doesn't need to use Chef
  • Treat like an asset
    • Might be worth visually indicating the distinction

BAU configuration

  • Different levels
    • Global
    • Environment
    • Provider
    • Asset/build

Custom transforms

  • An exception case, or as part of a dev flow
  • Built for power users, not so much the BAU team
  • Facilitate "export" to allow integrating into the template
  • Facilitate multiple types of transform
    • Adding an initial Javascript implementation is simple and powerful
    • Other options include:
      • XSLT like
      • JQ like
      • Anything else that anyone wants :-p but maybe phased releases of types (plugin-like)

Adding assets

  • No need to specify a runtime
  • Simple self-service role: 95% different and slimmed down self-service UI for these users

Random screens

Random...

  • Consumer-only launch interface
  • Use Postgres FDWs
    • OSQuery
    • LDAP
    • Chef's PG database...
    • Compliance/Mintspec
  • Integrate Zeppelin for DIY dashboarding
    • Make Mintspec available too
  • CouchDB
  • TOML vs YAML (vs something else?)
  • SC (et al): Git GUI/Git endpoint for direct interactions with files and templates
  • Slack integration for quick commands
  • Only support LDAP, but bundle a simple LDAP server

Implementation plan

  • Start UI build as interactive prototype
    • Less polished
    • Use PostgREST as a backend for hierarchical data model
      • Anticipate replacing if necessary, but just use verbatim until that's required
      • Using Row Level Security is a very tempting way to implement security...
    • Target "Home" and SC functionality
    • Anticipate becoming real codebase if well received
  • Start BE updates in parallel

Console: SPA

PostgREST

Postgres

"Interactive Prototype"

Console: SPA

PostgREST

Postgres

"Interactive Prototype"

Logstash/ElasticSearch/Kibana

Console: SPA

PostgREST

Postgres

"Interactive Prototype"

Logstash/ElasticSearch/Kibana

Git/Catalogue development

Console: SPA

PostgREST-compatible backend

"Interactive Prototype"

Logstash/ElasticSearch/Kibana

Git/Catalogue development

Config Repo functionality

Console

PostgREST-compatible backend

Less prototype, more real

Logstash/ElasticSearch/Kibana

Git/Catalogue development

Config Repo functionality

The Engine

Executor

Provisioning

Console

PostgREST-compatible backend

Less prototype, more real

Logstash/ElasticSearch/Kibana

Git/Catalogue development

Config Repo functionality

The Engine

Runtime, with the GUI disabled

Console

PostgREST-compatible backend

Less prototype, more real

Logstash/ElasticSearch/Kibana

Git/Catalogue development

Config Repo functionality

The Engine

Executor

Provisioning

2020 notes

  • Can't forget action invocation params

Copy of Unified UI

By bruce_one

Copy of Unified UI

  • 34