GithubHelp home page GithubHelp logo

getporter / arm-mixin Goto Github PK

View Code? Open in Web Editor NEW
5.0 7.0 12.0 2.22 MB

A Porter Mixin for using ARM

Home Page: https://getporter.org/mixins/arm

License: Apache License 2.0

Go 100.00%
porter arm azure mixin

arm-mixin's People

Contributors

carolynvs avatar carolynvs-msft avatar dependabot[bot] avatar jdolitsky avatar jeremyrickard avatar jschluchter avatar mchorfa avatar vdice avatar vinozzz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

arm-mixin's Issues

Does not install azure cli

The Mixin does not install the Azure CLI into the innvocationImage. The code seems to be commented out in build.go

Fix build

When I did a sweep of the mixins and cleaned up their builds, I missed the arm mixin.

  • Use ubuntu-latest
  • Use Go 1.8.2
  • Migrate from make to mage
  • Stop using packr
  • Use the latest version of porter
  • Add common files to the repository.
  • Add assign to project workflow

See getporter/terraform-mixin#87 for an example of how the other mixins were updated

Refactor Mixin to remove "opinionated" services

This mixin will be downscoped to only support user provided ARM templates. As part of this, we'll remove the "built in" services.

  1. Update the schema
  2. Remove packr2 templates
  3. Delete specific service code

Complete mixin schema

This is a follow-up to getporter/porter#186. We originally added just enough support for the schema command to verify that our design for the command would work with VS Code.

Now that the command is plumed all the way through, let's go back and complete adding all the properties, enums, etc that the azure mixin supports.

Implement schema command

We should expose the schema allowed for the porter manifest section of the azure mixin. IDEs can use this to provide autocomplete.

$ azure schema
{ json schema dump of the mixin's porter yaml section}

This is part of getporter/porter#76

Support login with just the arm mixin

I want to be able to authenticate to Azure without using the az mixin. It should be a mixin configuration whether or not authentication occurs automatically.

mixins:
- arm:
    autoLogin: true # Automatically log into azure as needed

install:
- arm: 
      description: "This step will automatically authenticate for me"

Login with ambient environment variables such as AZURE_CLIENT_ID, etc

install:
- arm:
     description: "login"
     login

Explicit login

install:
- arm:
     description: "login"
     login:
       clientId: "something else"
       clientSecret: "than the default"
       tenantId: "azure environment variables"

Split the mixin into multiple service specific mixins

The current structure of the mixin is really flexible and allows us to quickly add new services by dropping ARM templates into the templates directory. This makes the mixin a little harder to use, however, since we aren't as easily able to report params and outputs in schema form since they change based on the type attribute.

Let's instead pivot and make one mixin per type. This makes things more verbose from a mixin perspective, but it will actually make things more explicit from the Porter manifest perspective (i.e. I'll see that I am actually using cosmos and storage vs just "azure") and we'll be able to better handle the definition of parameters and what not for the JSON schema.

A lot of the functionality is pretty similar across these things, so I think we can have a good bit of common / library code and handle this with building up specific binaries from the cmd/ package and either splitting the templates up into multiple directories so it's really clear or just changing how we call the existing templating stuff

Don't require any env vars for simple commands

Commands like build and version are failing because it wants the azure subscription ID. Let's move the env var pulls outside of the constructor function and only load the variables when we need them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.