Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thbishop/knife-solo_data_bag
A knife plugin to ease working with data bags and chef solo
https://github.com/thbishop/knife-solo_data_bag
Last synced: 3 months ago
JSON representation
A knife plugin to ease working with data bags and chef solo
- Host: GitHub
- URL: https://github.com/thbishop/knife-solo_data_bag
- Owner: thbishop
- License: apache-2.0
- Created: 2012-05-15T23:20:01.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2017-02-19T19:49:25.000Z (over 7 years ago)
- Last Synced: 2024-07-27T18:52:16.045Z (4 months ago)
- Language: Ruby
- Homepage: http://thbishop.com/knife-solo_data_bag/
- Size: 160 KB
- Stars: 158
- Watchers: 3
- Forks: 32
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Knife Solo Data Bag
A knife plugin to make working with data bags easier in a chef solo environment.
If you are looking for a full featured chef solo management solution, you may
want to check out [knife solo](https://github.com/matschaffer/knife-solo).## Alternatives
### `knife data bag`
The standard `chef` gem includes the knife command and
[commands to manipulate data bags][knife-data-bag-docs].`knife-solo_data_bag` has the following advantages over the `knife data bag`
command:* allows recovery from errors when creating/editing JSON files,
* allows import and export of the the contents in JSON format.[knife-data-bag-docs]: https://docs.chef.io/knife_data_bag.html "Knife data bag docs"
## Deprecation Notices
* Versions >= 2 only support Ruby versions 2.2 and above.
If you need o use an earlier Ruby version, use `knife-solo_data_bag` < 2.0.0.
* Starting with 1.0.0, knife solo data bag only supports Chef versions >= 11.4.0.
If you need support for an earlier version of chef, use a knife solo data bag version < 1.0.0.## Build Status
![Build Status](https://secure.travis-ci.org/thbishop/knife-solo_data_bag.png)
## Installation
```sh
gem install knife-solo_data_bag# or if using ChefDK
chef gem install knife-solo_data_bag
```
## Usage### Setup
With Chef >= 12.x, you need to indicate that you're running in local mode,
otherwise Chef will try to connect to a server.In `.chef/knife.rb`, add:
```ruby
local_mode true
```### Create
Create a plain text data bag
$ knife solo data bag create apps app_1
Create an encrypted data bag with the provided string as the secret
$ knife solo data bag create apps app_1 -s secret_key
Create an encrypted data bag with the provided file content as the secret
$ knife solo data bag create apps app_1 --secret-file 'SECRET_FILE'
Create a data bag item with JSON from the command line (works with encryption)
$ knife solo data bag create apps app_1 --json '{"id": "app_1", "username": "bob"}'
Create a data bag item from a json file
$ knife solo data bag create apps app_1 --json-file foo.json
### Edit
Edit a plain text data bag
$ knife solo data bag edit apps app_1
Edit an encrypted data bag with the provided string as the secret
$ knife solo data bag edit apps app_1 -s secret_key
Edit an encrypted data bag with the provided file content as the secret
$ knife solo data bag edit apps app_1 --secret-file 'SECRET_FILE'
### List
List data bags
$ knife solo data bag list
### Show
Show the plain text content of a data bag (if this is an encrypted data bag, it will return the encrypted data)
$ knife solo data bag show apps app_1
Show the unencrypted content of an encrypted data bag with the provided string as the secret
$ knife solo data bag show apps app_1 -s secret_key
Show the unencrypted content of an encrypted data bag with the provided file content as the secret
$ knife solo data bag show apps app_1 --secret-file 'SECRET_FILE'
You can also display any of the above variations in JSON format with `-F json`
$ knife solo data bag show apps app_1 -s secret_key -F json
### Using Data Bags in Recipes
You can load your data bags inside you recipes as follows:
```ruby
app_1 = Chef::EncryptedDataBagItem.load("apps", "app_1").to_hash
```## Notes
### Data Bag Path
By default, this plugin will use the configured data_bag_path. This is
defaulted to `/var/chef/data_bags` by Chef. It is possible to override this
path in your Chef client config if desired. When using this plugin, it is also
possible to override the path using the `--data-bag-path` argument.### Encrypted Data Bag Secret
This plugin respects the "encrypted_data_bag_secret" configuration option in
knife.rb. Command line secret arguments (-s or --secret-file) will override the
setting in knife.rb.## Version Support
This plugin has been tested on the following:
Chef:
* ~> 11.8
* ~> 12.16Ruby:
* 2.1.8
* 2.2.2
* 2.3.0OS:
* OSX
* Linux# Development
Running tests requires an indication of the Gemfile to use:
```shell
export BUNDLE_GEMFILE=$PWD/gemfiles/Gemfile.chef.11.18.12
bundle
bundle exec rspec
```## Contribute
* Fork the project
* Make your feature addition or bug fix (with tests and docs) in a topic branch
* Bonus points for not mucking with the gemspec or version
* Send a pull request## License
See LICENSE for details