Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sergei-matheson/shellject

Secure storage and injection of environment variables
https://github.com/sergei-matheson/shellject

bash environment-variables gpgme ruby secu

Last synced: about 1 month ago
JSON representation

Secure storage and injection of environment variables

Awesome Lists containing this project

README

        

# Shellject

Store your secret environment variables (API keys, AWS secrets etc.) with GPGME, and inject them into your current shell when needed.

[![Build Status](https://travis-ci.org/sergei-matheson/shellject.svg?branch=master)](https://travis-ci.org/sergei-matheson/shellject)
[![Code Climate](https://codeclimate.com/github/sergei-matheson/shellject/badges/gpa.svg)](https://codeclimate.com/github/sergei-matheson/shellject)
[![Test Coverage](https://codeclimate.com/github/sergei-matheson/shellject/badges/coverage.svg)](https://codeclimate.com/github/sergei-matheson/shellject)
[![Gem Version](https://badge.fury.io/rb/shellject.svg)](http://badge.fury.io/rb/shellject)

## Installation

1. Install [GPGTools](https://gpgtools.org) on OSX and create a new key pair, if you don't have one already
1. If you have more than 1 secret key in your keyring, you may want to ensure that the 'default-key' is specified in ~/.gnupg/gpg.conf
1. Then install the gem:
```ruby
# In your Gemfile
gem 'shellject'
```

And then execute:

```sh
$ bundle
```

Or install it yourself as:

```sh
$ gem install shellject
```

*You may need to brew install gpgme on mac, or use your favourite package manager in linux*

4. Finally, run

```sh
$ shellject setup
```
for instructions on how to set up the shell wrapper needed for injection, and, optionally, command-line completion.

## Usage

### Creating a new shelljection
1. Create a text file with the shell code you wish to have securely injected. Here's one we prepared earlier:

$ cat my-secret-stuff.sh
>
export SECRET_APIKEY=abc123
export OTHER_VAR=stuff

2. Save the file contents as a shelljection:

$ shellject save --name stuff my-secret-stuff.sh

3. Test the shelljection:

$ shellject load stuff

echo $SECRET_APIKEY # "abc123"

echo $OTHER_VAR # "stuff"
4. *REMOVE THE ORIGINAL FILE!*
5. Now, you can securely load the environment variables whenever you wish:

$ shellject load stuff

### For further help and options:
`$ shellject --help`
## 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. Run `bundle exec shellject` to use the code located in this directory, ignoring other installed copies of this gem.

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](https://rubygems.org).

## Contributing

1. Fork it ( https://github.com/sergei-matheson/shellject/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Test your changes (`bundle exec rake`)
5. Push to the branch (`git push origin my-new-feature`)
6. Create a new Pull Request