vagrant-openstack-plugin-tom 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.travis.yml +11 -0
  4. data/Authors.txt +11 -0
  5. data/CHANGELOG.md +185 -0
  6. data/Gemfile +10 -0
  7. data/LICENSE.txt +23 -0
  8. data/README.md +278 -0
  9. data/Rakefile +21 -0
  10. data/dummy.box +0 -0
  11. data/example_box/README.md +13 -0
  12. data/example_box/metadata.json +3 -0
  13. data/example_vagrant_file +24 -0
  14. data/lib/vagrant-openstack-plugin.rb +53 -0
  15. data/lib/vagrant-openstack-plugin/action.rb +268 -0
  16. data/lib/vagrant-openstack-plugin/action/connect_openstack.rb +90 -0
  17. data/lib/vagrant-openstack-plugin/action/create_network_interfaces.rb +52 -0
  18. data/lib/vagrant-openstack-plugin/action/create_orchestration_stack.rb +97 -0
  19. data/lib/vagrant-openstack-plugin/action/create_server.rb +263 -0
  20. data/lib/vagrant-openstack-plugin/action/delete_orchestration_stack.rb +78 -0
  21. data/lib/vagrant-openstack-plugin/action/delete_server.rb +84 -0
  22. data/lib/vagrant-openstack-plugin/action/hard_reboot_server.rb +27 -0
  23. data/lib/vagrant-openstack-plugin/action/is_created.rb +16 -0
  24. data/lib/vagrant-openstack-plugin/action/is_paused.rb +16 -0
  25. data/lib/vagrant-openstack-plugin/action/is_snapshoting.rb +24 -0
  26. data/lib/vagrant-openstack-plugin/action/is_suspended.rb +16 -0
  27. data/lib/vagrant-openstack-plugin/action/message_already_created.rb +16 -0
  28. data/lib/vagrant-openstack-plugin/action/message_already_paused.rb +16 -0
  29. data/lib/vagrant-openstack-plugin/action/message_already_suspended.rb +16 -0
  30. data/lib/vagrant-openstack-plugin/action/message_not_created.rb +16 -0
  31. data/lib/vagrant-openstack-plugin/action/message_server_running.rb +16 -0
  32. data/lib/vagrant-openstack-plugin/action/message_snapshot_done.rb +16 -0
  33. data/lib/vagrant-openstack-plugin/action/message_snapshot_in_progress.rb +16 -0
  34. data/lib/vagrant-openstack-plugin/action/message_will_not_destroy.rb +16 -0
  35. data/lib/vagrant-openstack-plugin/action/pause_server.rb +27 -0
  36. data/lib/vagrant-openstack-plugin/action/read_ssh_info.rb +103 -0
  37. data/lib/vagrant-openstack-plugin/action/read_state.rb +39 -0
  38. data/lib/vagrant-openstack-plugin/action/reboot_server.rb +27 -0
  39. data/lib/vagrant-openstack-plugin/action/resume_server.rb +31 -0
  40. data/lib/vagrant-openstack-plugin/action/suspend_server.rb +27 -0
  41. data/lib/vagrant-openstack-plugin/action/sync_folders.rb +104 -0
  42. data/lib/vagrant-openstack-plugin/action/take_snapshot.rb +26 -0
  43. data/lib/vagrant-openstack-plugin/action/wait_for_state.rb +39 -0
  44. data/lib/vagrant-openstack-plugin/action/wait_for_task.rb +44 -0
  45. data/lib/vagrant-openstack-plugin/action/warn_networks.rb +19 -0
  46. data/lib/vagrant-openstack-plugin/command.rb +70 -0
  47. data/lib/vagrant-openstack-plugin/command/command_snapshot.rb +43 -0
  48. data/lib/vagrant-openstack-plugin/config.rb +246 -0
  49. data/lib/vagrant-openstack-plugin/errors.rb +71 -0
  50. data/lib/vagrant-openstack-plugin/plugin.rb +45 -0
  51. data/lib/vagrant-openstack-plugin/provider.rb +50 -0
  52. data/lib/vagrant-openstack-plugin/version.rb +5 -0
  53. data/locales/en.yml +154 -0
  54. data/spec/vagrant-openstack-plugin/config_spec.rb +152 -0
  55. data/vagrant-openstack-plugin.gemspec +24 -0
  56. metadata +142 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ece582d0db46a5cd3a339b2d23fc7b2c9a210050
4
+ data.tar.gz: ab82202f9a37dbc1ebf2a5a019696c1e5f628f2d
5
+ SHA512:
6
+ metadata.gz: 0b45aebe1c68ef02501647e90342b33258ae12929b7ebc1cb6596698d90fd53cc37e1963a981ea624ef9d830d03cc30ca9c691a14eb3a9d9842fd648eaffb137
7
+ data.tar.gz: b77a9e2f2a182f1c1f02c07a4b926c7534a7630d98c8f4d0542790ffe06a5bd260a8205ee468e4477d92faa9636240e2736acbd587b57e41c01df8e38bf7176d
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ .idea
4
+ .bundle
5
+ .config
6
+ .vagrant
7
+ .yardoc
8
+ Gemfile.lock
9
+ InstalledFiles
10
+ _yardoc
11
+ coverage
12
+ doc/
13
+ lib/bundler/man
14
+ pkg
15
+ rdoc
16
+ spec/reports
17
+ test/tmp
18
+ test/version_tmp
19
+ tmp
20
+ Vagrantfile
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ langauge: ruby
2
+ script: rake test
3
+ branches:
4
+ only:
5
+ - master
6
+ rvm:
7
+ - 1.9.3
8
+ - 2.0.0
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
data/Authors.txt ADDED
@@ -0,0 +1,11 @@
1
+ Brian Miller
2
+ Corey Stubbs
3
+ Hendrik Volkmer
4
+ Jasper Capel
5
+ Joe Topjian
6
+ Jon Burgess
7
+ Mathieu Mitchell
8
+ Mitchell Hashimoto
9
+ Stephan Renatus
10
+ Thomas Kadauke
11
+ Xavier Antoviaque
data/CHANGELOG.md ADDED
@@ -0,0 +1,185 @@
1
+ # Changelog for vagrant-openstack-plugin
2
+
3
+ ## 0.12.0 (2015/08/27)
4
+
5
+ - be more specific on using symbols in the config. fixes cloudbau/vagrant-openstack-plugin#106 [view commit](http://github.com///commit/0ef0865c6e38debd77982310073fe09cd99c6054)
6
+ - Merge pull request #103 from corpix/ssh_ip_family [view commit](http://github.com///commit/6ca314cc0cdbbe62bd4b80e65e518103ce73b027)
7
+ - Merge pull request #109 from joelanford/floating-ip-fix [view commit](http://github.com///commit/2bf8a08494a8aa4a5a5eae677691c56b9748208b)
8
+ - Merge pull request #118 from maxx/master [view commit](http://github.com///commit/eadeaa992ad7f2b1e43d35843fdfdc2fda661e3d)
9
+ - allows an alternative to os.floating_ip :auto, called os.floating_ip :associate_unassigned. This pulls an unassigned IP address from an existing pool with pre-allocated IP's, and will not try to allocate a new IP. If an IP is not available, no floating IP is assigned. Relevant errors and documentation added as well [view commit](http://github.com///commit/adc708405c47c44ef60ccdc5df4d9f6f04cd5a1f)
10
+ - Fixes issue #100, where config.rb incorrectly handled floating_ip and floating_ip_pool configurations [view commit](http://github.com///commit/21f8532e726d21d75788dcd3d6cdd0ec84acc633)
11
+ - Merge pull request #107 from Chealion/handleEphemeralDisks [view commit](http://github.com///commit/338e0525397bd710e351cb7a6eadcb801b2255f6)
12
+ - Merge pull request #104 from cshaffer/upgrade_rsepc [view commit](http://github.com///commit/533c0ac004be755e973098c6589b4cf6b1fdc696)
13
+ - Add ability to handle swap and ephemeral disks to disks feature [view commit](http://github.com///commit/c4f7acea6e2d97d040184534403fee2262671176)
14
+ - Convert specs to RSpec 3.1.7 syntax with Transpec [view commit](http://github.com///commit/6115ccb73c8e28704bbe8efb5d079d35b1d0d844)
15
+ - Upgrade rspec to 3.1.0 [view commit](http://github.com///commit/c0dfe22fdd7c9d2e72c02187491acea7b9e1b013)
16
+ - Convert specs to RSpec 2.14.8 syntax with Transpec [view commit](http://github.com///commit/dd34a0eed957e190fec369f43514c8a5d4549833)
17
+ - Upgrade rspec to 2.14 first [view commit](http://github.com///commit/332c537e4f028bc8ab4ffd630c75a32ca93a681f)
18
+ - Removed debug printing [view commit](http://github.com///commit/59a8f024d090fff5ae28d30ef72a24d2f58044c3)
19
+ - Updated readme [view commit](http://github.com///commit/815f05d770f9991fa5e333ae24e15fde801643d7)
20
+ - IP address family match support [view commit](http://github.com///commit/5aa125c0e741496c60927cff9a413e942d9f2720)
21
+
22
+ ## 0.11.1
23
+
24
+ - Merge pull request #99 from jtopjian/master [view commit](http://github.com///commit/1c2667532e408f239761882a367c11d948610f37)
25
+ - Update README.md to add Static IP instructions [view commit](http://github.com///commit/9246d8b9389dd4e1108e0f3ab7c2652459d6d192)
26
+ - Merge pull request #98 from Chealion/fixFloatingIP [view commit](http://github.com///commit/1d6635791286bf396ec1a852730116ec1c0bbba0)
27
+ - Don't release a floating IP unless it was automatically assigned. [view commit](http://github.com///commit/c5f51082323b9defa5d101b0f5decbe68e15cfa3)
28
+
29
+ ## 0.11.0
30
+
31
+ - Merge pull request #97 from cbaenziger/issue_96_fix [view commit](http://github.com///commit/36295904ffb65d7461870a97e561c470fdedbbe5)
32
+ - Merge pull request #95 from cbaenziger/volume_support [view commit](http://github.com///commit/3d3fb8d6ae3b3115abea725820ac4a205c814070)
33
+ - Retry server deletes until we are sure the VM is dead -- only then remove IP's and volumes [view commit](http://github.com///commit/8799e70521a4ad4c4d1a5aa2a3ea42b83c042c38)
34
+ - Update README for more volume related material [view commit](http://github.com///commit/c0e6e0afae67a1e63095f917d50b7c3aa3655547)
35
+ - Fix to prevent stack trace failing to find VM, if destroying a non-existant VM [view commit](http://github.com///commit/7632b70a9f2c5af3a6d46a31b2ce4beb1bc9217b)
36
+ - Use same check as connect.rb for Vagrantfile disks section [view commit](http://github.com///commit/bd440fbacd7abc7914629431edd74e73cad71f95)
37
+ - Fix issue finding volumes if running vagrant destroy after server is destroyed [view commit](http://github.com///commit/8629390d724cdaa611504121bca64690e191cdba)
38
+
39
+ ## 0.10.0
40
+
41
+ - Merge pull request #84 from cbaenziger/volume_support [view commit](http://github.com///commit/fc613a49cb5b2fecf2255d3050d1bff68956735d)
42
+ - Add support for creating OpenStack Volumes [view commit](http://github.com///commit/60ed3924957bb7eefa95e113336165d76da3a985)
43
+
44
+ ## 0.9.1
45
+
46
+ - Merge pull request #91 from Chealion/master [view commit](http://github.com///commit/6285cae325afa378e90f06635a2cc39b1428a6dd)
47
+ - Fixes #90 that hostname is set to key path [view commit](http://github.com///commit/5feb04c7bf46cee1ef4d38e25d74710ea9d0981b)
48
+ - Merge pull request #89 from reachlocal/fix_handleurl_deprecation_for_older_versions [view commit](http://github.com///commit/6ba9ee7d18d63a3d6f254c80e106bc440003fae6)
49
+ - Added a check for the vagrant version to keep HandleUrl for older versions of vagrant [view commit](http://github.com///commit/07871ed10ea9cca9c51e97fb8bb3e11c33d41a33)
50
+
51
+ ## 0.9.0
52
+
53
+ - Merge pull request #80 from hawknewton/network_fix [view commit](http://github.com///commit/542e7a2e077d624df9cb56a53c24cf3450e11c71)
54
+ - Merge pull request #86 from ipoddar-ibm/master [view commit](http://github.com///commit/11fccb73264aa852df88825936026a9da4771580)
55
+ - Merge pull request #88 from chino/fix-rsync-identify-file-options [view commit](http://github.com///commit/9319af5216c8c65ba144154ddfba2c1d767c567d)
56
+ - Merge pull request #87 from arbrandes/master [view commit](http://github.com///commit/49839de94e1865eb88a25d5876f1698e2069a0be)
57
+ - sync_folders: should have space between ssh-i options [view commit](http://github.com///commit/07325bfe4c782043d7ecec32a64fa516344cebf8)
58
+ - Allocate IPs automatically [view commit](http://github.com///commit/84c311544d00286fc2c910f9147892e5ae6c0a5b)
59
+ - Adds support for static IPs and interface config [view commit](http://github.com///commit/a5fdb22e23687c9bcd540b37b65b8d478d3a5d94)
60
+ - remove extra line [view commit](http://github.com///commit/010e347acf403d6426fffac5ec01cb999dd9545f)
61
+ - fix typo [view commit](http://github.com///commit/08dda991121f7e2e2f5bb8f32e03432f69aec226)
62
+ - support cygwin [view commit](http://github.com///commit/62c2184906e444c22933d34b8b9054fca56df54f)
63
+ - Connect to openstack network resource when needed [view commit](http://github.com///commit/8515a9305f354963d8687077e203a35c902035ce)
64
+
65
+ ## 0.8.0
66
+
67
+ - Merge pull request #67 from pradels/master [view commit](http://github.com///commit/15f5b5531622376df952bccc0512a6de50d7a92f)
68
+ - Merge pull request #66 from matope/use-execute-to-make-synced_folder [view commit](http://github.com///commit/96f64a846d40e5c7f0355def17189e38895e29f3)
69
+ - Merge pull request #72 from mathuin/fix-handlebox [view commit](http://github.com///commit/3396e33e54d2527d28a70f1487da6221cd2316e2)
70
+ - Merge pull request #64 from bewiwi/reboot [view commit](http://github.com///commit/24bec035508853be871ed8ed73b1d33f15beff76)
71
+ - Merge pull request #63 from bewiwi/status [view commit](http://github.com///commit/79a8c341501461a0d5ef1ce4f11cc0a1810d38f3)
72
+ - Merge pull request #71 from bewiwi/add_openstack_snapshot_commmand [view commit](http://github.com///commit/bf4eedd6eb5e29aefe4c0e156b932b4f4a81e1f5)
73
+ - Merge pull request #73 from detiber/configNetworks [view commit](http://github.com///commit/5e17c5aaeee7bebc4991e440565f2ee4c1b6f191)
74
+ - Set config.networks to [] if unset [view commit](http://github.com///commit/5aad087358792bee0bd1a6a026820b04bb8ca68f)
75
+ - Changed HandleBoxUrl to HandleBox. [view commit](http://github.com///commit/ad7b2acdea81fe6f4b50e4658ecd36762a849f74)
76
+ - Add command snapshot [view commit](http://github.com///commit/2d207ced7e70fe206fa309ed43a8ace3eb86b327)
77
+ - Orchestration support added. [view commit](http://github.com///commit/d4e098db8517d491adfeb826500ac3ec5384d237)
78
+ - Avoid using sudo to make synced_folder if possible [view commit](http://github.com///commit/b5b6205fbc34e95b4dbd9c13f974b728cb27c76e)
79
+ - Add some status messages [view commit](http://github.com///commit/0c9287bc765e074eac104e02d7a64b36bd122034)
80
+ - Modify reload action to be a real reboot [view commit](http://github.com///commit/91f5dc65a781d062d156b912bfd9d4b84db82e44)
81
+
82
+ ## 0.7.0
83
+
84
+ - Merge pull request #35 from johnbellone/master [view commit](http://github.com///commit/5969261f11585e19348e903eec15617634c3c899)
85
+ - Fix issues with SSH private keys in Vagrant 1.4. [view commit](http://github.com///commit/a8bf7574de48dc1c62928f5ad73fb6d1e7dd4347)
86
+ - Refactor OpenStack actions to match AWS. [view commit](http://github.com///commit/c7177dc98ba43e3434075186a76df57d27ce7b26)
87
+
88
+ ## 0.6.1
89
+
90
+ - Merge pull request #60 from matope/fix-floating_ip-NoMethodError [view commit](http://github.com///commit/a058256c27573c7545afbc09cce60214731e6e4e)
91
+ - Fix NoMethodError on vagrant up w/o floating_ip [view commit](http://github.com///commit/be6fb0d46f69a3b9925c11648e5bc71af4491a7d)
92
+
93
+ ## 0.6.0
94
+
95
+ - Merge pull request #59 from virtuald/fixed_automatic_ip [view commit](http://github.com///commit/7e7867ee7340515a8d0171fe5ea88aa340646e0f)
96
+ - Update README with additional information about automatic allocation [view commit](http://github.com///commit/ea4ee9f409f61a2583588d3782701fe66239bd24)
97
+ - Allow address_id to use the automatically assigned floating ip [view commit](http://github.com///commit/cb0e29c20e7105dae2a6534ccaebbe656c0d8419)
98
+ - Update README [view commit](http://github.com///commit/b26f70653fb7cfbfe9604031d82aa42d4a324421)
99
+ - Add support for automatically allocating a floating IP [view commit](http://github.com///commit/aee3129fc6020d3e3a6cc8db28b9b1c812225fbc)
100
+ - update changelog [view commit](http://github.com///commit/936a2eef3d802d65a9f0753b5652ef4a8dbdb345)
101
+
102
+ ## 0.5.0
103
+
104
+
105
+ - Merge pull request #45 from detiber/fixNetworksPR [view commit](http://github.com///commit/56b28eff5a1079c6805ec944b1a0c1dde458b10e)
106
+ - Merge pull request #53 from tjheeta/remote_machine_id [view commit](http://github.com///commit/5873d1b5282fe2d24a0e725ec6289d1ba5e20e9b)
107
+ - Merge pull request #54 from last-g/patch-1 [view commit](http://github.com///commit/7941573ef8f547a915e31c51ab4d1b85b878eebe)
108
+ - Merge pull request #56 from nicobrevin/feature-no-verify-peer [view commit](http://github.com///commit/844835811808d256f67ad43e0124ace3f552a18c)
109
+ - Merge pull request #58 from ohnoimdead/no-network-fix [view commit](http://github.com///commit/4b44a7c80d4a381531266844a5c99de0eea850b5)
110
+ - Fix for exception when OS endpoint doesn't have neutron installed [view commit](http://github.com///commit/7558bbed3b5ecae8bb3e3ca9c64ffc9512a4c170)
111
+ - add ssl_verify_peer config option [view commit](http://github.com///commit/cb94f002d790afb5fbec225d17385c8f5b0ebb35)
112
+ - Missing semicolon [view commit](http://github.com///commit/8f609ee474b548b096e42b08c27fc5f874037204)
113
+ - Missing region while configuring networks [view commit](http://github.com///commit/ea10bff5cdabea0b9c543a5231500fb7f9fd50ac)
114
+ - Fix for delete_server [view commit](http://github.com///commit/d4f812eb99d135f7b7c5d210778e92cd8e5a4561)
115
+ - If the .vagrant directory does not contain the machine id, try to connect remotely to try to find it [view commit](http://github.com///commit/71447bf49afe1fed29fa7ce561305dcc756a2e16)
116
+ - Fix test for config.network and config.networks. [view commit](http://github.com///commit/5c9161aaf3ac715bc52819ee99c2d02d8434ea7b)
117
+
118
+ ## 0.4.1
119
+
120
+ - update release info [view commit](http://github.com///commit/9866c83713ec0f1db8aed02a9aa9cbaafe8e85a4)
121
+
122
+ ## 0.4.0
123
+
124
+ - Merge pull request #49 from RackerJohnMadrid/fix-rsync-vagrant-1-4 [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/5664ead3fda8f889dad72de1de2fbb
125
+ - fixes the issue of ssh keys now being represented as an Array in vagrant >= 1.4 [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/0741d802a13c4a858
126
+ - fix regression wrt multiple nics [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/9c5441db359b34f2bbf66d30853c97b0896a494b)
127
+ - update README [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/725e66ab7970e5698aa7347dae93f791e926097a)
128
+ - implement multiple networks [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/0bbbda10bc3b6a09e3165936a2cd17d56b9d3159)
129
+ - two minor rsync bugfixes [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/5bf54e8ab99baa850631803137d991a4756f34ab)
130
+ - Merge pull request #33 from johnbellone/master [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/f863781405a1070fe991f55f93d2b37763f6c1da)
131
+ - Add actions for pausing/suspending (and inverse). [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/a5ec0edd25af250599e0e248a25d8a34af0e1c40)
132
+ - Merge pull request #31 from johnbellone/master [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/83031f79e5834693e2c45656c0ae17b6f13afe83)
133
+ - Add a little debugging output. [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/c00310ed8855d3b2b0472ab9304debefbb0918e3)
134
+ - Add travis.yml file to the project. [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/bc53baaa43c2bf652294d374e071c96bf00bcf12)
135
+ - Add proxy option to configuration. [view commit](http://github.com/cloudbau/vagrant-openstack-plugin/commit/3d33bdc9a3bf28af7403bd1a0245a9869799eadc)
136
+
137
+
138
+ ## 0.3.0 (September 25, 2013)
139
+
140
+ - Adds support to determine IP address to use
141
+ - Region Support
142
+ - Enabled controlling multiple VMs in parallel
143
+ - Honor disabling of synced folders
144
+ - Adds `availability_zone` option to specify instance zone
145
+ - Added --delete to rsync command
146
+ - Call SetHostname action from Vagrant core in up phase
147
+ - Handled not having the box and providing it via a box_url.
148
+ - Allowed vagrant ssh -c 'command'
149
+ - Adds tenant to network request
150
+ - Improved documentation
151
+
152
+ ## 0.2.2 (May 30, 2013)
153
+
154
+ - Also ignore HOSTUNREACH errors when first trying to connect to newly created VM
155
+
156
+ ## 0.2.1 (May 29, 2013)
157
+
158
+ - Fix passing user data to server on create
159
+ - Floating IP Capability
160
+ - Added ability to configure scheduler hints
161
+ - Update doc (network config in fact has higher precedence than address_id)
162
+ - 'address_id' now defaults to 'public', to reduce number of cases in read_ssh_info
163
+ - Introduced 'address_id' config, which has a higher order of precedence than 'network'
164
+
165
+ ## 0.2.0 (May 2, 2013)
166
+
167
+ - Added docs
168
+ - Removed metadata validation and bumped version
169
+ - Tenant and security groups are now configurable
170
+
171
+ ## 0.1.3 (April 26, 2013)
172
+
173
+ - Added the ability to pass metadata keypairs to instances
174
+ - Added support for nics configurations to allow for selection of a specific network on creation
175
+
176
+ ## 0.1.2 (April 26, 2013)
177
+
178
+ - Added the option of passing user data to VMs
179
+ - Enabled `vagrant provision` in this provider
180
+ - Made finding IP address more stable
181
+ - Doc improvements and minor fixes
182
+
183
+ ## 0.1.0 (March 14, 2013)
184
+
185
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ # We depend on Vagrant for development, but we don't add it as a
7
+ # gem dependency because we expect to be installed within the
8
+ # Vagrant environment itself using `vagrant plugin`.
9
+ gem "vagrant", :git => "https://github.com/mitchellh/vagrant.git", :tag => "v1.4.3"
10
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2013 Mitchell Hashimoto
2
+ Copyright (c) 2013 cloudbau GmbH
3
+
4
+ MIT License
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,278 @@
1
+ # Vagrant OpenStack Cloud Provider
2
+
3
+ This is a [Vagrant](http://www.vagrantup.com) 1.1+ plugin that adds a
4
+ [OpenStack Cloud](http://www.openstack.org) provider to Vagrant,
5
+ allowing Vagrant to control and provision machines within an OpenStack
6
+ cloud.
7
+
8
+ This plugin started as a fork of the Vagrant RackSpace provider.
9
+
10
+ **Note:** This plugin requires Vagrant 1.1+.
11
+
12
+ ## Features
13
+
14
+ * Boot OpenStack Cloud instances.
15
+ * SSH into the instances.
16
+ * Provision the instances with any built-in Vagrant provisioner.
17
+ * Minimal synced folder support via `rsync`.
18
+ * Creation and destruction of volumes with VM
19
+
20
+ ## Usage
21
+
22
+ Install using standard Vagrant 1.1+ plugin installation methods. After
23
+ installing, `vagrant up` and specify the `openstack` provider. An example is
24
+ shown below.
25
+
26
+ ```
27
+ $ vagrant plugin install vagrant-openstack-plugin
28
+ ...
29
+ $ vagrant up --provider=openstack
30
+ ...
31
+ ```
32
+
33
+ Of course prior to doing this, you'll need to obtain an OpenStack-compatible
34
+ box file for Vagrant.
35
+
36
+ ## Quick Start
37
+
38
+ After installing the plugin (instructions above), the quickest way to get
39
+ started is to actually use a dummy OpenStack box and specify all the details
40
+ manually within a `config.vm.provider` block. So first, add the dummy
41
+ box using any name you want:
42
+
43
+ ```
44
+ $ vagrant box add dummy https://github.com/cloudbau/vagrant-openstack-plugin/raw/master/dummy.box
45
+ ...
46
+ ```
47
+
48
+ And then make a Vagrantfile that looks like the following, filling in
49
+ your information where necessary.
50
+
51
+ ```
52
+ require 'vagrant-openstack-plugin'
53
+
54
+ Vagrant.configure("2") do |config|
55
+ config.vm.box = "dummy"
56
+
57
+ # Make sure the private key from the key pair is provided
58
+ config.ssh.private_key_path = "~/.ssh/id_rsa"
59
+
60
+ config.vm.provider :openstack do |os|
61
+ os.username = "YOUR USERNAME" # e.g. "#{ENV['OS_USERNAME']}"
62
+ os.api_key = "YOUR API KEY" # e.g. "#{ENV['OS_PASSWORD']}"
63
+ os.flavor = /m1.tiny/ # Regex or String
64
+ os.image = /Ubuntu/ # Regex or String
65
+ os.endpoint = "KEYSTONE AUTH URL" # e.g. "#{ENV['OS_AUTH_URL']}/tokens"
66
+ os.keypair_name = "YOUR KEYPAIR NAME" # as stored in Nova
67
+ os.ssh_username = "SSH USERNAME" # login for the VM
68
+
69
+ os.ssh_ip_family = "ipv6" # IP address family
70
+
71
+ os.metadata = {"key" => "value"} # optional
72
+ os.user_data = "#cloud-config\nmanage_etc_hosts: True" # optional
73
+ os.network = "YOUR NETWORK_NAME" # optional
74
+ os.networks = [ "internal", "external" ] # optional, overrides os.network
75
+ os.address_id = "YOUR ADDRESS ID" # optional (`network` above has higher precedence)
76
+ os.scheduler_hints = {
77
+ :cell => 'australia'
78
+ } # optional
79
+ os.availability_zone = "az0001" # optional
80
+ os.security_groups = ['ssh', 'http'] # optional
81
+ os.tenant = "YOUR TENANT_NAME" # optional
82
+ os.floating_ip = "33.33.33.33" # optional (The floating IP to assign for this instance, or set to :auto or :associate_unassigned (ruby symbol, no quotes!))
83
+ os.floating_ip_pool = "public" # optional (The floating IP pool to allocate addresses to, if floating_ip = :auto, or the pool to pull the next available IP from if floating_ip = :associate_unassigned (ruby symbol, no quotes!))
84
+
85
+ os.disks = [ # optional
86
+ {"name" => "volume_name_here", "description" => "A 10GB Volume", "size" => 10},
87
+ {"name" => "volume_name_here", "description" => "A 20GB Volume", "size" => 20}
88
+ ]
89
+
90
+ os.orchestration_stack_name = 'stack01' # optional
91
+ os.orchestration_cfn_template_file = '/tmp/cfn_heat_template.json' # optional
92
+ os.orchestration_cfn_template_parameters = { # optional
93
+ 'NetworkName' => 'net_01'
94
+ }
95
+ end
96
+ end
97
+ ```
98
+
99
+ And then run `vagrant up --provider=openstack`.
100
+
101
+ This will start a tiny Ubuntu instance in your OpenStack installation within
102
+ your tenant. And assuming your SSH information was filled in properly
103
+ within your Vagrantfile, SSH and provisioning will work as well.
104
+
105
+ Note that normally a lot of this boilerplate is encoded within the box
106
+ file, but the box file used for the quick start, the "dummy" box, has
107
+ no preconfigured defaults.
108
+
109
+ ## Box Format
110
+
111
+ Every provider in Vagrant must introduce a custom box format. This
112
+ provider introduces `openstack` boxes. You can view an example box in
113
+ the [example_box/ directory](https://github.com/cloudbau/vagrant-openstack-plugin/tree/master/example_box).
114
+ That directory also contains instructions on how to build a box.
115
+
116
+ The box format is basically just the required `metadata.json` file
117
+ along with a `Vagrantfile` that does default settings for the
118
+ provider-specific configuration for this provider.
119
+
120
+ ## Configuration
121
+
122
+ This provider exposes quite a few provider-specific configuration options:
123
+
124
+ * `api_key` - The API key for accessing OpenStack.
125
+ * `flavor` - The server flavor to boot. This can be a string matching
126
+ the exact ID or name of the server, or this can be a regular expression
127
+ to partially match some server flavor.
128
+ * `image` - The server image to boot. This can be a string matching the
129
+ exact ID or name of the image, or this can be a regular expression to
130
+ partially match some image.
131
+ * `endpoint` - The keystone authentication URL of your OpenStack installation.
132
+ * `server_name` - The name of the server within the OpenStack Cloud. This
133
+ defaults to the name of the Vagrant machine (via `config.vm.define`), but
134
+ can be overridden with this.
135
+ * `username` - The username with which to access OpenStack.
136
+ * `keypair_name` - The name of the keypair to access the machine.
137
+ * `ssh_username` - The username to access the machine. This can also be
138
+ configured using the standard config.ssh.username configuration value.
139
+ * `ssh_ip_family` - The IP address family to use for SSH connection. It could be `ipv6` or `ipv4`.
140
+ This option takes effect only if virtual machine have multiple addresses.
141
+ * `metadata` - A set of key pair values that will be passed to the instance
142
+ for configuration.
143
+ * `network` - A name or id that will be used to fetch network configuration
144
+ data when configuring the instance. NOTE: This is not compliant with the
145
+ vagrant network configurations.
146
+ * `networks` - An array of names or ids to create a server with multiple network interfaces. This overrides the `network` setting.
147
+ * `address_id` - A specific address identifier to use when connecting to the
148
+ instance. `network` has higher precedence. If set to :floating_ip, then
149
+ the floating IP address will be used.
150
+ * `scheduler_hints` - Pass hints to the open stack scheduler, see `--hint` flag in [OpenStack filters doc](http://docs.openstack.org/trunk/openstack-compute/admin/content/scheduler-filters.html)
151
+ * `availability_zone` - Specify the availability zone in which the instance
152
+ must be created.
153
+ * `security_groups` - List of security groups to be applied to the machine.
154
+ * `tenant` - Tenant name. You only need to specify this if your OpenStack user has access to multiple tenants.
155
+ * `region` - Region Name. Specify the region you want the instance to be launched in for multi-region environments.
156
+ * `proxy` - HTTP proxy. When behind a firewall override this value for API access.
157
+ * `ssl_verify_peer` - sets the ssl_verify_peer on the underlying excon connection - useful for self signed certs etc.
158
+ * `floating_ip` - Floating ip. The floating IP to assign for this instance. If
159
+ set to :auto, then this assigns any available floating IP to the instance. If set to :associate_unassigned, then it will use the next IP address which is unasssigned in the pool specified in floating_ip_pool.
160
+ * `floating_ip_pool` - Floating ip pool to allocate IP addresses from, if
161
+ floating_ip is set to :auto. Previously allocated addresses will not be
162
+ used, and addresses allocated here will be released when the VM is destroyed.
163
+ * `orchestration_stack_name` - Name for orchestration stack. Mandatory
164
+ parameter when creating new stack. One of parameters for template should be
165
+ set with this parameter.
166
+ * `orchestration_stack_destroy` - If stack created by vagrant should be deleted
167
+ when destroy action is invoked. Default value is `false`.
168
+ * `orchestration_cfn_template` - AWS CloudFormation Template specified as a string.
169
+ * `orchestration_cfn_template_file` - AWS CloudFormation Template file path
170
+ accessible for vagrant.
171
+ * `orchestration_cfn_template_url` - AWS CloudFormation Template URL.
172
+ * `orchestration_cfn_template_parameters` - AWS CloudFormation Template
173
+ parameters specified in ruby hash (take a look at example Vagrantfile).
174
+ This parameter is optional.
175
+ * `disks` - Array of disk specifications to create or attach
176
+
177
+ These can be set like typical provider-specific configuration:
178
+
179
+ ```ruby
180
+ Vagrant.configure("2") do |config|
181
+ # ... other stuff
182
+
183
+ config.vm.provider :openstack do |rs|
184
+ rs.username = "mitchellh"
185
+ rs.api_key = "foobarbaz"
186
+ end
187
+ end
188
+ ```
189
+
190
+ ## Networks
191
+
192
+ Static IP assignment is supported by doing the following:
193
+
194
+ First, define one or more networks with `os.networks`:
195
+
196
+ ```ruby
197
+ os.networks = ['network1', 'network2']
198
+ ```
199
+
200
+ Next, configure those networks using `config.vm.network`:
201
+
202
+ ```ruby
203
+ config.vm.network 'private_network', ip: '192.168.1.100'
204
+ config.vm.network 'private_network', ip: '192.168.2.100'
205
+ ```
206
+
207
+ Note that the order must be the same as the order in `os.networks`.
208
+ If you only want to configure the second NIC with a static IP, do
209
+ the following:
210
+
211
+ ```ruby
212
+ config.vm.network 'private_network', type: 'dhcp'
213
+ config.vm.network 'private_network', ip: '192.168.2.100'
214
+ ```
215
+
216
+ ## Synced Folders
217
+
218
+ There is minimal support for synced folders. Upon `vagrant up`,
219
+ `vagrant reload`, and `vagrant provision`, the OpenStack provider will use
220
+ `rsync` (if available) to uni-directionally sync the folder to
221
+ the remote machine over SSH.
222
+
223
+ This is good enough for all built-in Vagrant provisioners (shell,
224
+ chef, and puppet) to work!
225
+
226
+ ## Command
227
+
228
+ ### Snapshot
229
+ `vagrant openstack snapshot <vmname> -n <snapshotname>`
230
+
231
+ Take snapshot of ***vmname*** with name ***snapshotname***
232
+
233
+ ## Contributors
234
+
235
+ - [mitchellh](https://github.com/mitchellh)
236
+ - [tkadauke](https://github.com/tkadauke)
237
+ - [srenatus](https://github.com/srenatus)
238
+ - [hvolkmer](https://github.com/hvolkmer)
239
+ - [ehaselwanter](https://github.com/ehaselwanter)
240
+ - [BRIMIL01](https://github.com/BRIMIL01)
241
+ - [jkburges](https://github.com/jkburges)
242
+ - [johnbellone](https://github.com/johnbellone)
243
+ - [mat128](https://github.com/mat128)
244
+ - [jtopjian](https://github.com/jtopjian)
245
+ - [antoviaque](https://github.com/antoviaque)
246
+ - [last-g](https://github.com/last-g)
247
+ - [spil-jasper](https://github.com/spil-jasper)
248
+ - [detiber](https://github.com/detiber)
249
+ - [RackerJohnMadrid](https://github.com/RackerJohnMadrid)
250
+ - [Lull3rSkat3r](https://github.com/Lull3rSkat3r)
251
+ - [nicobrevin](https://github.com/nicobrevin)
252
+ - [ohnoimdead](https://github.com/ohnoimdead)
253
+ - [cbaenziger](https://github.com/cbaenziger)
254
+ - [chealion](https://github.com/chealion)
255
+
256
+ ## Development
257
+
258
+ To work on the `vagrant-openstack-plugin` plugin, clone this repository out, and use
259
+ [Bundler](http://gembundler.com) to get the dependencies:
260
+
261
+ ```
262
+ $ bundle
263
+ ```
264
+
265
+ Once you have the dependencies, verify the unit tests pass with `rake`:
266
+
267
+ ```
268
+ $ bundle exec rake
269
+ ```
270
+
271
+ If those pass, you're ready to start developing the plugin. You can test
272
+ the plugin without installing it into your Vagrant environment by just
273
+ creating a `Vagrantfile` in the top level of this directory (it is gitignored)
274
+ that uses it, and uses bundler to execute Vagrant:
275
+
276
+ ```
277
+ $ bundle exec vagrant up --provider=openstack
278
+ ```