Bosh Inception
Create an inception server for Bosh.
Includes a CLI for creating and preparing an inception server for deploying/developing a Bosh universe. The created or targeted VM is upgraded into an inception server via a Chef cookbook.
Installation
Currently, install and use the tool via this Git repo (due to its dependency on other unreleased RubyGems).
git clone https://github.com/drnic/inception.git
cd inception
bundle
bundle exec bin/inception deploy
Waiting on the following projects to ship a new gem:
In future, this tool will be distributed as a RubyGem. It requires Ruby 1.9+.
gem install inception
Usage
This project includes both a standalone CLI to create an inception server or transform an existing VM into an inception server; and the internal Chef cookbooks that can be used outside of the CLI.
CLI usage - create a remote inception server
To create a remote inception server, normally in the IaaS/region that you will be working with BOSH:
$ inception deploy
Found infrastructure API credentials at ~/.fog (override with $FOG)
1. AWS (default)
2. AWS (starkandwayne)
3. Alternate credentials
Choose infrastructure: 3
1. AWS
2. OpenStack
Choose infrastructure: 1
Using provider aws:
1. *US East (Northern Virginia) Region (us-east-1)
2. US West (Oregon) Region (us-west-2)
3. US West (Northern California) Region (us-west-1)
4. EU (Ireland) Region (eu-west-1)
5. Asia Pacific (Singapore) Region (ap-southeast-1)
6. Asia Pacific (Sydney) Region (ap-southeast-2)
7. Asia Pacific (Tokyo) Region (ap-northeast-1)
8. South America (Sao Paulo) Region (sa-east-1)
Choose AWS region: 2
Access key: KEYGOESHERE
Secret key: SECRETGOESHERE
Confirming: Using aws/us-west-2
Preparing deployment settings
Using your git user.name (Dr Nic Williams)
Acquiring a public IP address... 54.245.246.122
Provision inception server
Created security group ssh
-> opened ssh ports TCP 22..22 from IP range 0.0.0.0/0
Booting m1.small Inception VM...
Provisioning 16Gb persistent disk for inception VM...
Prepare inception VM
knife solo bootstrap [email protected] [...]
Bootstrapping Chef...
... lots of chef output...
CLI usage - upgrade existing remote inception server
You can upgrade your remote inception server at any time by re-running the deploy
command.
$ inception deploy
... lots of chef output ...
Chef cookbook usage - remote VM
This project includes a bosh_inception
Chef cookbook.
You can apply the cookbook to a preexisting remote VM using knife solo:
$ bundle
$ bundle exec knife solo bootstrap ubuntu@HOST -r 'bosh_inception'
$ bundle exec knife solo bootstrap ubuntu@HOST -j '{"disk": {"mounted": true, "device": "/dev/xvdf"}}' -r 'bosh_inception'
# for more help information:
$ knife solo bootstrap -h
See cookbooks/bosh_inception/attributes/default.rb
for available JSON overrides.
Chef cookbook usage - local VM
You can also apply the cookbooks to the local VM (or a remote VM that you've shelled into) using your favourite Chef toolchain.
See cookbooks/bosh_inception/attributes/default.rb
for available JSON overrides.
Development
One half of the functionality is in a Chef cookbook bosh_inception
. To load this cookbook into a Vagrant VM and run a series of integration tests (via test-kitchen
):
$ bundle
$ kitchen test virtualbox
$ kitchen test vmware # if you have vagrant vmware plugin
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request