GithubHelp home page GithubHelp logo

ukhomeoffice / vaultconf Goto Github PK

View Code? Open in Web Editor NEW
8.0 7.0 1.0 55 KB

Configures vault with a given list of policies and users

License: Apache License 2.0

Ruby 96.31% Shell 0.41% Gherkin 3.27%

vaultconf's Introduction

Build Status

Vaultconf

A command line tool to allow mass configuration updates in vault with support included for kubernetes. Functions include:

  • update of policies in vault
  • update of users in Vault

For more context please see this blog post.

Installation

This tool has not yet been setup as a Ruby gem, though it would be easy to do so. Instead we recommend running using docker to ensure no dependency issues:

e.g. docker run --net=host -v policies:/policies -ti quay.io/ukhomeofficedigital/vaultconf policies -c /policies -u user -p password -a http://localhost:8200 --nokube NB: In this example --net=host is needed as we are accessing a local vault server. This is not required for accessing remote vault servers.

Usage

Run with option --help to show command line help.

Example usage is included in vaultconf.feature. Example policies directory structure is provided in test/resources/policies. Example users yaml structure is provided in test/resources/users/users/yaml

In order to not need to define password in the command line vaultconf can read login details from a file called "login" in the .vaultconf directory in your home directory. The format for this file is as follows:

---
username: myusername
password: mypassword

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release to create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it ( https://github.com/UKHomeOffice/vaultconf/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

vaultconf's People

Contributors

timgent avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

uk-gov-mirror

vaultconf's Issues

Should compare between configuration files and what exists

Currently:

  • if a resource is removed from config files it won't be removed from vault when the tool is run
  • if an already existing user is updated it will also generate a new password for them

Instead we should have:

  • Comparison of existing entities in vault and entities in the config is made, and reconciled
  • If a user already exists instead of replacing them it should just update their policies but leave them with the same password

command line options

  • can we have vault address default to VAULT_ADDR
  • the password masked and read from stdin

Documentation: Use-cases

I would be interested to see a couple of lines in the README with what use-cases this project was designed to solve.

Context: I came across it whilst looking for a way to import/export secrets to/from Vault. It looks like it could be used for that purpose, however the Kubernetes integration made me wonder what it was initially for.

Enable features to run in docker

Currently travis can't run cucumber tests as they require a vault server to be started. Dockerising the tests would allow them to be run with travis

secrets management

Could we have the secrets, aws policys etc manageable from the same tool

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.