vagrant-mos 0.9.18 → 0.9.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +51 -119
- data/README_en.md +202 -0
- data/example_box/Vagrantfile +1 -1
- data/lib/vagrant-mos/action/run_instance.rb +5 -5
- data/lib/vagrant-mos/command.rb +0 -2
- data/lib/vagrant-mos/config.rb +7 -7
- data/lib/vagrant-mos/plugin.rb +1 -1
- data/lib/vagrant-mos/version.rb +1 -1
- data/locales/en.yml +2 -2
- data/mos.box +0 -0
- data/spec/vagrant-mos/config_spec.rb +11 -11
- metadata +3 -3
- data/lib/vagrant-mos/action/describe_templates.rb +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bae12df04b93f0f02bdae078f6d1f10760f4933
|
4
|
+
data.tar.gz: e92c667ebe41e4d81e39e4c85db93d51f71409a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a24f9f4a9ee686d2879bb96db22c813cc169405cd83497dee46be0b54de6cf30a70e6bd27eee6de9f9251063f523ce4253d387671347e74a3e3820bbf21ca5c8
|
7
|
+
data.tar.gz: 97a607b2d35f4786f88e6fcfc1fc816414d90ba5059f60818083a1f89ec12c642981b98767271129410a97b820d5b56c2dd1f1692ae1ac3e7de304f5512f05ba
|
data/README.md
CHANGED
@@ -8,25 +8,23 @@
|
|
8
8
|
[gem]: https://rubygems.org/gems/vagrant-mos
|
9
9
|
[gemnasium]: https://gemnasium.com/mitchellh/vagrant-mos
|
10
10
|
|
11
|
-
|
12
|
-
provider
|
13
|
-
MOS.
|
11
|
+
该版本的[Vagrant](http://www.vagrantup.com) 1.2+ plugin现在支持[MOS](http://cloud.sankuai.com/)
|
12
|
+
provider,从而使得Vagrant可以像管理VirtualBox那样管理美团云主机。
|
14
13
|
|
15
|
-
**NOTE:**
|
14
|
+
**NOTE:** 该版本的plugin要求Vagrant版本为 1.2+,而且最好是最新版本
|
16
15
|
|
17
|
-
##
|
16
|
+
## 主要功能
|
18
17
|
|
19
|
-
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
18
|
+
* 支持Vagrant常用命令 `up`, `status`, `destroy`, `halt`, `reload` 以及 `ssh`
|
19
|
+
* 创建 MOS 主机实例
|
20
|
+
* SSH连接已创建的主机
|
21
|
+
* 支持通过`rsync`命令同步文件夹
|
22
|
+
* 通过`vagrant status`命令管理已创建的MOS主机
|
23
|
+
* 通过`vagrant mos-templates`查看可使用的镜像.
|
24
24
|
|
25
|
-
##
|
25
|
+
## 安装使用
|
26
26
|
|
27
|
-
|
28
|
-
installing, `vagrant up` and specify the `mos` provider. An example is
|
29
|
-
shown below.
|
27
|
+
按照安装Vagrant 1.2+ plugin的标准步骤安装即可。**在完成plugin以及MOS box安装后**,通过`vagrant up` 即可创建Vagrant MOS主机实例。下面是样例。
|
30
28
|
|
31
29
|
```
|
32
30
|
$ vagrant plugin install vagrant-mos
|
@@ -35,23 +33,23 @@ $ vagrant up --provider=mos
|
|
35
33
|
...
|
36
34
|
```
|
37
35
|
|
38
|
-
|
39
|
-
box file for Vagrant.
|
36
|
+
## 快速入门
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
After installing the plugin (instructions above), the quickest way to get
|
44
|
-
started is to actually use a MOS box and specify all the details
|
45
|
-
manually within a `config.vm.provider` block. So first, add the
|
46
|
-
box using any name you want:
|
38
|
+
在按照上述步骤完成vagrant plugin安装后,要想快速使用vagrant MOS创建主机,首先要有MOS box。用户可以执行下面的命令安装MOS box。
|
47
39
|
|
48
40
|
```
|
49
41
|
$ vagrant box add mos_box https://github.com/yangcs2009/vagrant-mos/raw/master/mos.box
|
50
42
|
...
|
51
43
|
```
|
52
44
|
|
53
|
-
|
54
|
-
|
45
|
+
完成以上工作后,就可以开始创建MOS主机了,首先创建一个工作目录,然后创建一份Vagrant配置文档。
|
46
|
+
|
47
|
+
```
|
48
|
+
$ mkdir vagrant_workplace
|
49
|
+
$ cd vagrant_workplace
|
50
|
+
$ vagrant init
|
51
|
+
```
|
52
|
+
然后就会发现在该目录下新生成一个Vagrantfile文档,编辑该文档如下:
|
55
53
|
|
56
54
|
```
|
57
55
|
Vagrant.configure("2") do |config|
|
@@ -63,7 +61,7 @@ Vagrant.configure("2") do |config|
|
|
63
61
|
mos.secret_access_url = "YOUR MOS ACCESS URL"
|
64
62
|
mos.keypair_name = "KEYPAIR NAME"
|
65
63
|
|
66
|
-
mos.
|
64
|
+
mos.template_id = "fa1026fe-c082-4ead-8458-802bf65ca64c"
|
67
65
|
|
68
66
|
override.ssh.username = "root"
|
69
67
|
override.ssh.private_key_path = "PATH TO YOUR PRIVATE KEY"
|
@@ -71,53 +69,33 @@ Vagrant.configure("2") do |config|
|
|
71
69
|
end
|
72
70
|
```
|
73
71
|
|
74
|
-
|
75
|
-
|
76
|
-
This will start an Ubuntu 12.04 instance in the us-east-1 region within
|
77
|
-
your account. And assuming your SSH information was filled in properly
|
78
|
-
within your Vagrantfile, SSH and provisioning will work as well.
|
72
|
+
完成后保存,然后执行 `vagrant up --provider=mos`就可以创建MOS主机了。
|
79
73
|
|
80
|
-
|
81
|
-
file, but the box file used for the quick start, the "dummy" box, has
|
82
|
-
no preconfigured defaults.
|
74
|
+
当然这一切都是假定你的ssh配置信息已经完成,如何设置ssh信息请参见[美团云秘钥](http://cloud.sankuai.com/console/#keypairs)。
|
83
75
|
|
84
|
-
|
85
|
-
are being launched with a security group that allows SSH access.
|
76
|
+
## Box设置
|
86
77
|
|
87
|
-
|
78
|
+
不同的vagrant provider都必须使用符合响应要求的box来创建新主机。我们样例采用的是MOS的box `mos`。用户可以查看[example_box](https://github.com/yangcs2009/vagrant-mos/tree/master/example_box),从中还可以学习如何设置自己的boxes。
|
88
79
|
|
89
|
-
Every provider in Vagrant must introduce a custom box format. This
|
90
|
-
provider introduces `mos` boxes. You can view an example box in
|
91
|
-
the [example_box/ directory](https://github.com/mitchellh/vagrant-mos/tree/master/example_box).
|
92
|
-
That directory also contains instructions on how to build a box.
|
93
80
|
|
94
|
-
|
95
|
-
along with a `Vagrantfile` that does default settings for the
|
96
|
-
provider-specific configuration for this provider.
|
81
|
+
## 配置文档
|
97
82
|
|
98
|
-
|
83
|
+
MOS provider设置了若干参数,主要参数说明如下:
|
99
84
|
|
100
|
-
|
85
|
+
* `access_key_id` - 访问美团云的key
|
86
|
+
* `secret_access_key` - 访问美团云的secret
|
87
|
+
* `secret_access_url` -访问美团云的url
|
88
|
+
* `region` - 创建主机的region,例如 "us-east-1"
|
89
|
+
* `template_id` - 创建美团云主机的镜像,例如 "fa1026fe-c082-4ead-8458-802bf65ca64c",用户可以使用`vagrant mos-templates`查看可以使用的镜像
|
90
|
+
* `instance_ready_timeout` - 等待MOS主机创建成功最长时间,单位为秒。默认为120s。
|
91
|
+
* `instance_name` - 创建的MOS主机名称,例如 "ubuntu007"。
|
92
|
+
* `instance_type` - 创建的MOS主机类型,例如"C1_M1". 默认配置为 "C1_M2".
|
93
|
+
* `keypair_name` - 用户使用的秘钥名称。通过使用秘钥,用户登录该创建的主机时就不需要在输入繁琐的密码了
|
94
|
+
* `use_iam_profile` - 如果该参数设置,则使用[IAM profiles](http://docs.mos.amazon.com/IAM/latest/UserGuide/instance-profiles.html)认证。
|
101
95
|
|
102
|
-
|
103
|
-
* `ami` - The image id to boot, such as "fa1026fe-c082-4ead-8458-802bf65ca64c"
|
104
|
-
* `instance_ready_timeout` - The number of seconds to wait for the instance
|
105
|
-
to become "ready" in MOS. Defaults to 120 seconds.
|
106
|
-
* `instance_name` - The name of instance to be created, such as "ubuntu01". The default
|
107
|
-
value of this if not specified is 'default'.
|
108
|
-
* `instance_type` - The type of instance, such as "C1_M1". The default
|
109
|
-
value of this if not specified is "C1_M2".
|
110
|
-
* `keypair_name` - The name of the keypair to use to bootstrap images
|
111
|
-
which support it.
|
112
|
-
* `secret_access_url` - The accee url for accessing MOS
|
113
|
-
* `region` - The region to start the instance in, such as "us-east-1"
|
114
|
-
* `secret_access_key` - The secret access key for accessing MOS
|
115
|
-
* `use_iam_profile` - If true, will use [IAM profiles](http://docs.mos.amazon.com/IAM/latest/UserGuide/instance-profiles.html)
|
116
|
-
for credentials.
|
96
|
+
一个典型的配置文档如下所示:
|
117
97
|
|
118
|
-
|
119
|
-
|
120
|
-
```ruby
|
98
|
+
```
|
121
99
|
Vagrant.configure("2") do |config|
|
122
100
|
# ... other stuff
|
123
101
|
|
@@ -129,76 +107,30 @@ Vagrant.configure("2") do |config|
|
|
129
107
|
end
|
130
108
|
```
|
131
109
|
|
132
|
-
|
133
|
-
method to specify region-specific overrides within your Vagrantfile. Note
|
134
|
-
that the top-level `region` config must always be specified to choose which
|
135
|
-
region you want to actually use, however. This looks like this:
|
110
|
+
## 网络
|
136
111
|
|
137
|
-
|
138
|
-
Vagrant.configure("2") do |config|
|
139
|
-
# ... other stuff
|
112
|
+
MOS的网络功能 `config.vm.network` 暂时不支持。如果用户指定相关参数的话,vagrant会给出警告。
|
140
113
|
|
141
|
-
|
142
|
-
mos.access_key_id = "foo"
|
143
|
-
mos.secret_access_key = "bar"
|
144
|
-
mos.region = "us-east-1"
|
145
|
-
|
146
|
-
# Simple region config
|
147
|
-
mos.region_config "us-east-1", :ami => "ami-12345678"
|
148
|
-
|
149
|
-
# More comprehensive region config
|
150
|
-
mos.region_config "us-west-2" do |region|
|
151
|
-
region.ami = "ami-87654321"
|
152
|
-
region.keypair_name = "company-west"
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
```
|
157
|
-
|
158
|
-
The region-specific configurations will override the top-level
|
159
|
-
configurations when that region is used. They otherwise inherit
|
160
|
-
the top-level configurations, as you would probably expect.
|
161
|
-
|
162
|
-
## Networks
|
163
|
-
|
164
|
-
Networking features in the form of `config.vm.network` are not
|
165
|
-
supported with `vagrant-mos`, currently. If any of these are
|
166
|
-
specified, Vagrant will emit a warning, but will otherwise boot
|
167
|
-
the MOS machine.
|
114
|
+
## 文件夹同步
|
168
115
|
|
169
|
-
|
116
|
+
MOS 支持文件夹同步。通过使用`rsync` 命令来指定。
|
170
117
|
|
171
|
-
|
172
|
-
`vagrant reload`, and `vagrant provision`, the MOS provider will use
|
173
|
-
`rsync` (if available) to uni-directionally sync the folder to
|
174
|
-
the remote machine over SSH.
|
118
|
+
具体内容可以参见 [Vagrant Synced folders: rsync](https://docs.vagrantup.com/v2/synced-folders/rsync.html)
|
175
119
|
|
176
|
-
See [Vagrant Synced folders: rsync](https://docs.vagrantup.com/v2/synced-folders/rsync.html)
|
177
120
|
|
121
|
+
## 自定义开发
|
178
122
|
|
179
|
-
|
180
|
-
|
181
|
-
To work on the `vagrant-mos` plugin, clone this repository out, and use
|
182
|
-
[Bundler](http://gembundler.com) to get the dependencies:
|
123
|
+
如果用户需要在 `vagrant-mos` plugin基础上实现自己的功能,克隆该工程,然后使用
|
124
|
+
[Bundler](http://gembundler.com)获得依赖:
|
183
125
|
|
184
126
|
```
|
185
127
|
$ bundle
|
186
128
|
```
|
187
129
|
|
188
|
-
|
130
|
+
完成后,使用`rake`测试:
|
189
131
|
|
190
132
|
```
|
191
133
|
$ bundle exec rake
|
192
134
|
```
|
193
135
|
|
194
|
-
|
195
|
-
the plugin without installing it into your Vagrant environment by just
|
196
|
-
creating a `Vagrantfile` in the top level of this directory (it is gitignored)
|
197
|
-
and add the following line to your `Vagrantfile`
|
198
|
-
```ruby
|
199
|
-
Vagrant.require_plugin "vagrant-mos"
|
200
|
-
```
|
201
|
-
Use bundler to execute Vagrant:
|
202
|
-
```
|
203
|
-
$ bundle exec vagrant up --provider=mos
|
204
|
-
```
|
136
|
+
如果以上步骤没有问题的话,用户就可以开始自己的开发工作了。
|
data/README_en.md
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
# Vagrant MOS Provider
|
2
|
+
|
3
|
+
<span class="badges">
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/vagrant-mos.png)][gem]
|
5
|
+
[![Dependency Status](https://gemnasium.com/mitchellh/vagrant-mos.png)][gemnasium]
|
6
|
+
</span>
|
7
|
+
|
8
|
+
[gem]: https://rubygems.org/gems/vagrant-mos
|
9
|
+
[gemnasium]: https://gemnasium.com/mitchellh/vagrant-mos
|
10
|
+
|
11
|
+
This is a [Vagrant](http://www.vagrantup.com) 1.2+ plugin that adds an [MOS](http://cloud.sankuai.com/)
|
12
|
+
provider to Vagrant, allowing Vagrant to control and provision machines in
|
13
|
+
MOS.
|
14
|
+
|
15
|
+
**NOTE:** This plugin requires Vagrant 1.2+,
|
16
|
+
|
17
|
+
## Features
|
18
|
+
|
19
|
+
* Support for Vagrant's `up`, `status`, `destroy`, `halt`, `reload` and `ssh` commands
|
20
|
+
* Boot MOS instances.
|
21
|
+
* SSH into the instances.
|
22
|
+
* Provision the instances with any built-in Vagrant provisioner.
|
23
|
+
* Minimal synced folder support via `rsync`.
|
24
|
+
* Manage MOS machine's status through `vagrant status`.
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
|
28
|
+
Install using standard Vagrant 1.2+ plugin installation methods. After
|
29
|
+
installing, `vagrant up` and specify the `mos` provider. An example is
|
30
|
+
shown below.
|
31
|
+
|
32
|
+
```
|
33
|
+
$ vagrant plugin install vagrant-mos
|
34
|
+
...
|
35
|
+
$ vagrant up --provider=mos
|
36
|
+
...
|
37
|
+
```
|
38
|
+
|
39
|
+
Of course prior to doing this, you'll need to obtain an MOS-compatible
|
40
|
+
box file for Vagrant.
|
41
|
+
|
42
|
+
## Quick Start
|
43
|
+
|
44
|
+
After installing the plugin (instructions above), the quickest way to get
|
45
|
+
started is to actually use a MOS box and specify all the details
|
46
|
+
manually within a `config.vm.provider` block. So first, add the
|
47
|
+
box using any name you want:
|
48
|
+
|
49
|
+
```
|
50
|
+
$ vagrant box add mos_box https://github.com/yangcs2009/vagrant-mos/raw/master/mos.box
|
51
|
+
...
|
52
|
+
```
|
53
|
+
|
54
|
+
And then make a Vagrantfile that looks like the following, filling in
|
55
|
+
your information where necessary.
|
56
|
+
|
57
|
+
```
|
58
|
+
Vagrant.configure("2") do |config|
|
59
|
+
config.vm.box = "mos_box"
|
60
|
+
config.vm.provider :mos do |mos, override|
|
61
|
+
mos.access_key_id = "YOUR KEY"
|
62
|
+
mos.secret_access_key = "YOUR SECRET KEY"
|
63
|
+
mos.secret_access_url = "YOUR MOS ACCESS URL"
|
64
|
+
mos.keypair_name = "KEYPAIR NAME"
|
65
|
+
mos.template_id = "fa1026fe-c082-4ead-8458-802bf65ca64c"
|
66
|
+
override.ssh.username = "root"
|
67
|
+
override.ssh.private_key_path = "PATH TO YOUR PRIVATE KEY"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
72
|
+
And then run `vagrant up --provider=mos`.
|
73
|
+
|
74
|
+
This will start an Ubuntu 12.04 instance in the us-east-1 region within
|
75
|
+
your account. And assuming your SSH information was filled in properly
|
76
|
+
within your Vagrantfile, SSH and provisioning will work as well.
|
77
|
+
|
78
|
+
Note that normally a lot of this boilerplate is encoded within the box
|
79
|
+
file, but the box file used for the quick start, the "dummy" box, has
|
80
|
+
no preconfigured defaults.
|
81
|
+
|
82
|
+
If you have issues with SSH connecting, make sure that the instances
|
83
|
+
are being launched with a security group that allows SSH access.
|
84
|
+
|
85
|
+
## Box Format
|
86
|
+
|
87
|
+
Every provider in Vagrant must introduce a custom box format. This
|
88
|
+
provider introduces `mos` boxes. You can view an example box in
|
89
|
+
the [example_box/ directory](https://github.com/mitchellh/vagrant-mos/tree/master/example_box).
|
90
|
+
That directory also contains instructions on how to build a box.
|
91
|
+
|
92
|
+
The box format is basically just the required `metadata.json` file
|
93
|
+
along with a `Vagrantfile` that does default settings for the
|
94
|
+
provider-specific configuration for this provider.
|
95
|
+
|
96
|
+
## Configuration
|
97
|
+
|
98
|
+
This provider exposes quite a few provider-specific configuration options:
|
99
|
+
|
100
|
+
* `access_key_id` - The access key for accessing MOS
|
101
|
+
* `template_id` - The image id to boot, such as "fa1026fe-c082-4ead-8458-802bf65ca64c"
|
102
|
+
* `instance_ready_timeout` - The number of seconds to wait for the instance
|
103
|
+
to become "ready" in MOS. Defaults to 120 seconds.
|
104
|
+
* `instance_name` - The name of instance to be created, such as "ubuntu01". The default
|
105
|
+
value of this if not specified is 'default'.
|
106
|
+
* `instance_type` - The type of instance, such as "C1_M1". The default
|
107
|
+
value of this if not specified is "C1_M2".
|
108
|
+
* `keypair_name` - The name of the keypair to use to bootstrap images.
|
109
|
+
which support it.
|
110
|
+
* `secret_access_url` - The accee url for accessing MOS
|
111
|
+
* `region` - The region to start the instance in, such as "us-east-1"
|
112
|
+
* `secret_access_key` - The secret access key for accessing MOS
|
113
|
+
* `use_iam_profile` - If true, will use [IAM profiles](http://docs.mos.amazon.com/IAM/latest/UserGuide/instance-profiles.html)
|
114
|
+
for credentials.
|
115
|
+
|
116
|
+
These can be set like typical provider-specific configuration:
|
117
|
+
|
118
|
+
```ruby
|
119
|
+
Vagrant.configure("2") do |config|
|
120
|
+
# ... other stuff
|
121
|
+
|
122
|
+
config.vm.provider :mos do |mos|
|
123
|
+
mos.access_key_id = "your_key"
|
124
|
+
mos.secret_access_key = "your_secret"
|
125
|
+
mos.secret_access_url = "your_access_url"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
```
|
129
|
+
|
130
|
+
In addition to the above top-level configs, you can use the `region_config`
|
131
|
+
method to specify region-specific overrides within your Vagrantfile. Note
|
132
|
+
that the top-level `region` config must always be specified to choose which
|
133
|
+
region you want to actually use, however. This looks like this:
|
134
|
+
|
135
|
+
```ruby
|
136
|
+
Vagrant.configure("2") do |config|
|
137
|
+
# ... other stuff
|
138
|
+
|
139
|
+
config.vm.provider :mos do |mos|
|
140
|
+
mos.access_key_id = "foo"
|
141
|
+
mos.secret_access_key = "bar"
|
142
|
+
mos.region = "us-east-1"
|
143
|
+
|
144
|
+
# Simple region config
|
145
|
+
mos.region_config "us-east-1", :template_id => "template_id-12345678"
|
146
|
+
|
147
|
+
# More comprehensive region config
|
148
|
+
mos.region_config "us-west-2" do |region|
|
149
|
+
region.template_id = "template_id-87654321"
|
150
|
+
region.keypair_name = "company-west"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
```
|
155
|
+
|
156
|
+
The region-specific configurations will override the top-level
|
157
|
+
configurations when that region is used. They otherwise inherit
|
158
|
+
the top-level configurations, as you would probably expect.
|
159
|
+
|
160
|
+
## Networks
|
161
|
+
|
162
|
+
Networking features in the form of `config.vm.network` are not
|
163
|
+
supported with `vagrant-mos`, currently. If any of these are
|
164
|
+
specified, Vagrant will emit a warning, but will otherwise boot
|
165
|
+
the MOS machine.
|
166
|
+
|
167
|
+
## Synced Folders
|
168
|
+
|
169
|
+
There is minimal support for synced folders. Upon `vagrant up`,
|
170
|
+
`vagrant reload`, and `vagrant provision`, the MOS provider will use
|
171
|
+
`rsync` (if available) to uni-directionally sync the folder to
|
172
|
+
the remote machine over SSH.
|
173
|
+
|
174
|
+
See [Vagrant Synced folders: rsync](https://docs.vagrantup.com/v2/synced-folders/rsync.html)
|
175
|
+
|
176
|
+
|
177
|
+
## Development
|
178
|
+
|
179
|
+
To work on the `vagrant-mos` plugin, clone this repository out, and use
|
180
|
+
[Bundler](http://gembundler.com) to get the dependencies:
|
181
|
+
|
182
|
+
```
|
183
|
+
$ bundle
|
184
|
+
```
|
185
|
+
|
186
|
+
Once you have the dependencies, verify the unit tests pass with `rake`:
|
187
|
+
|
188
|
+
```
|
189
|
+
$ bundle exec rake
|
190
|
+
```
|
191
|
+
|
192
|
+
If those pass, you're ready to start developing the plugin. You can test
|
193
|
+
the plugin without installing it into your Vagrant environment by just
|
194
|
+
creating a `Vagrantfile` in the top level of this directory (it is gitignored)
|
195
|
+
and add the following line to your `Vagrantfile`
|
196
|
+
```ruby
|
197
|
+
Vagrant.require_plugin "vagrant-mos"
|
198
|
+
```
|
199
|
+
Use bundler to execute Vagrant:
|
200
|
+
```
|
201
|
+
$ bundle exec vagrant up --provider=mos
|
202
|
+
```
|
data/example_box/Vagrantfile
CHANGED
@@ -26,7 +26,7 @@ module VagrantPlugins
|
|
26
26
|
|
27
27
|
# Get the configs
|
28
28
|
region_config = env[:machine].provider_config.get_region_config(region)
|
29
|
-
|
29
|
+
template_id = region_config.template_id
|
30
30
|
name = region_config.name
|
31
31
|
instance_type = region_config.instance_type
|
32
32
|
keypair = region_config.keypair_name
|
@@ -41,22 +41,22 @@ module VagrantPlugins
|
|
41
41
|
env[:ui].info(I18n.t("vagrant_mos.launching_instance"))
|
42
42
|
env[:ui].info(" -- Name: #{name}") if name
|
43
43
|
env[:ui].info(" -- Type: #{instance_type}")
|
44
|
-
env[:ui].info(" --
|
45
|
-
env[:ui].info(" -- Region: #{region}")
|
44
|
+
env[:ui].info(" -- Template_id: #{template_id}")
|
45
|
+
#env[:ui].info(" -- Region: #{region}")
|
46
46
|
env[:ui].info(" -- Keypair: #{keypair}") if keypair
|
47
47
|
env[:ui].info(" -- Terminate On Shutdown: #{terminate_on_shutdown}")
|
48
48
|
|
49
49
|
options = {
|
50
50
|
:flavor_id => instance_type,
|
51
51
|
:name => name,
|
52
|
-
:
|
52
|
+
:template_id => template_id,
|
53
53
|
:key_name => keypair,
|
54
54
|
:instance_initiated_shutdown_behavior => terminate_on_shutdown == true ? "terminate" : nil,
|
55
55
|
}
|
56
56
|
|
57
57
|
begin
|
58
58
|
# create a handler to access MOS
|
59
|
-
server = env[:mos_compute].create_instance(options[:
|
59
|
+
server = env[:mos_compute].create_instance(options[:template_id], options[:flavor_id], nil, options[:name], options[:key_name], datadisk=9, bandwidth=2)
|
60
60
|
rescue Exception => e
|
61
61
|
raise Errors::MosError, :message => e.message
|
62
62
|
end
|
data/lib/vagrant-mos/command.rb
CHANGED
data/lib/vagrant-mos/config.rb
CHANGED
@@ -11,7 +11,7 @@ module VagrantPlugins
|
|
11
11
|
# The ID of the image to use.
|
12
12
|
#
|
13
13
|
# @return [String]
|
14
|
-
attr_accessor :
|
14
|
+
attr_accessor :template_id
|
15
15
|
|
16
16
|
# The name of the instance to create.
|
17
17
|
#
|
@@ -76,7 +76,7 @@ module VagrantPlugins
|
|
76
76
|
|
77
77
|
def initialize(region_specific=false)
|
78
78
|
@access_key_id = UNSET_VALUE
|
79
|
-
@
|
79
|
+
@template_id = UNSET_VALUE
|
80
80
|
@instance_ready_timeout = UNSET_VALUE
|
81
81
|
@name = UNSET_VALUE
|
82
82
|
@instance_type = UNSET_VALUE
|
@@ -99,10 +99,10 @@ module VagrantPlugins
|
|
99
99
|
|
100
100
|
# Allows region-specific overrides of any of the settings on this
|
101
101
|
# configuration object. This allows the user to override things like
|
102
|
-
#
|
102
|
+
# template_id and keypair name for regions. Example:
|
103
103
|
#
|
104
104
|
# mos.region_config "us-east-1" do |region|
|
105
|
-
# region.
|
105
|
+
# region.template_id = "template_id-12345678"
|
106
106
|
# region.keypair_name = "company-east"
|
107
107
|
# end
|
108
108
|
#
|
@@ -161,8 +161,8 @@ module VagrantPlugins
|
|
161
161
|
@secret_access_key = ENV['MOS_SECRET_KEY'] if @secret_access_key == UNSET_VALUE
|
162
162
|
@secret_access_url = ENV['MOS_SECRET_URL'] if @secret_access_url == UNSET_VALUE
|
163
163
|
|
164
|
-
#
|
165
|
-
@
|
164
|
+
# Template_id must be nil, since we can't default that
|
165
|
+
@template_id = nil if @template_id == UNSET_VALUE
|
166
166
|
|
167
167
|
# Default instance name is nil
|
168
168
|
@name = nil if @name == UNSET_VALUE
|
@@ -234,7 +234,7 @@ module VagrantPlugins
|
|
234
234
|
config.secret_access_url.nil?
|
235
235
|
end
|
236
236
|
|
237
|
-
errors << I18n.interpolate("vagrant_mos.config.
|
237
|
+
errors << I18n.interpolate("vagrant_mos.config.template_id_required", :region => @region) if config.template_id.nil?
|
238
238
|
end
|
239
239
|
|
240
240
|
{ "MOS Provider" => errors }
|
data/lib/vagrant-mos/plugin.rb
CHANGED
data/lib/vagrant-mos/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -41,8 +41,8 @@ en:
|
|
41
41
|
config:
|
42
42
|
access_key_id_required: |-
|
43
43
|
An access key ID must be specified via "access_key_id"
|
44
|
-
|
45
|
-
An
|
44
|
+
template_id_required: |-
|
45
|
+
An template_id must be configured via "template_id" (region: #{region})
|
46
46
|
private_key_missing: |-
|
47
47
|
The specified private key for MOS could not be found
|
48
48
|
region_required: |-
|
data/mos.box
CHANGED
Binary file
|
@@ -16,7 +16,7 @@ describe VagrantPlugins::MOS::Config do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
its("access_key_id") { should be_nil }
|
19
|
-
its("
|
19
|
+
its("template_id") { should be_nil }
|
20
20
|
its("instance_ready_timeout") { should == 120 }
|
21
21
|
its("name") { should be_nil }
|
22
22
|
its("instance_type") { should == "C1_M2" }
|
@@ -34,7 +34,7 @@ describe VagrantPlugins::MOS::Config do
|
|
34
34
|
# simple boilerplate test, so I cut corners here. It just sets
|
35
35
|
# each of these attributes to "foo" in isolation, and reads the value
|
36
36
|
# and asserts the proper result comes back out.
|
37
|
-
[:access_key_id, :
|
37
|
+
[:access_key_id, :template_id, :instance_ready_timeout,:name,
|
38
38
|
:instance_type, :keypair_name, :ssh_host_attribute,
|
39
39
|
:region, :secret_access_key, :secret_access_url, :terminate_on_shutdown,
|
40
40
|
:use_iam_profile].each do |attribute|
|
@@ -86,7 +86,7 @@ describe VagrantPlugins::MOS::Config do
|
|
86
86
|
|
87
87
|
describe "region config" do
|
88
88
|
let(:config_access_key_id) { "foo" }
|
89
|
-
let(:
|
89
|
+
let(:config_template_id) { "foo" }
|
90
90
|
let(:config_instance_type) { "foo" }
|
91
91
|
let(:config_name) { "foo" }
|
92
92
|
let(:config_keypair_name) { "foo" }
|
@@ -96,7 +96,7 @@ describe VagrantPlugins::MOS::Config do
|
|
96
96
|
|
97
97
|
def set_test_values(instance)
|
98
98
|
instance.access_key_id = config_access_key_id
|
99
|
-
instance.
|
99
|
+
instance.template_id = config_template_id
|
100
100
|
instance.instance_type = config_instance_type
|
101
101
|
instance.name = config_name
|
102
102
|
instance.keypair_name = config_keypair_name
|
@@ -123,7 +123,7 @@ describe VagrantPlugins::MOS::Config do
|
|
123
123
|
end
|
124
124
|
|
125
125
|
its("access_key_id") { should == config_access_key_id }
|
126
|
-
its("
|
126
|
+
its("template_id") { should == config_template_id }
|
127
127
|
its("instance_type") { should == config_instance_type }
|
128
128
|
its("name") { should == config_name }
|
129
129
|
its("keypair_name") { should == config_keypair_name }
|
@@ -149,7 +149,7 @@ describe VagrantPlugins::MOS::Config do
|
|
149
149
|
end
|
150
150
|
|
151
151
|
its("access_key_id") { should == config_access_key_id }
|
152
|
-
its("
|
152
|
+
its("template_id") { should == config_template_id }
|
153
153
|
its("instance_type") { should == config_instance_type }
|
154
154
|
its("name") { should == config_name }
|
155
155
|
its("keypair_name") { should == config_keypair_name }
|
@@ -164,12 +164,12 @@ describe VagrantPlugins::MOS::Config do
|
|
164
164
|
subject do
|
165
165
|
# Set the values on a specific region
|
166
166
|
instance.region_config region_name do |config|
|
167
|
-
config.
|
167
|
+
config.template_id = "child"
|
168
168
|
end
|
169
169
|
|
170
170
|
# Set some top-level values
|
171
171
|
instance.access_key_id = "parent"
|
172
|
-
instance.
|
172
|
+
instance.template_id = "parent"
|
173
173
|
|
174
174
|
# Finalize and get the region
|
175
175
|
instance.finalize!
|
@@ -177,18 +177,18 @@ describe VagrantPlugins::MOS::Config do
|
|
177
177
|
end
|
178
178
|
|
179
179
|
its("access_key_id") { should == "parent" }
|
180
|
-
its("
|
180
|
+
its("template_id") { should == "child" }
|
181
181
|
end
|
182
182
|
|
183
183
|
describe "shortcut configuration" do
|
184
184
|
subject do
|
185
185
|
# Use the shortcut configuration to set some values
|
186
|
-
instance.region_config "us-east-1", :
|
186
|
+
instance.region_config "us-east-1", :template_id => "child"
|
187
187
|
instance.finalize!
|
188
188
|
instance.get_region_config("us-east-1")
|
189
189
|
end
|
190
190
|
|
191
|
-
its("
|
191
|
+
its("template_id") { should == "child" }
|
192
192
|
end
|
193
193
|
|
194
194
|
describe "merging" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-mos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yangcs2009
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mos-sdk
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- CHANGELOG.md
|
91
91
|
- Gemfile
|
92
92
|
- README.md
|
93
|
+
- README_en.md
|
93
94
|
- Vagrantfile
|
94
95
|
- example_box/README.md
|
95
96
|
- example_box/Vagrantfile
|
@@ -97,7 +98,6 @@ files:
|
|
97
98
|
- lib/vagrant-mos.rb
|
98
99
|
- lib/vagrant-mos/action.rb
|
99
100
|
- lib/vagrant-mos/action/connect_mos.rb
|
100
|
-
- lib/vagrant-mos/action/describe_templates.rb
|
101
101
|
- lib/vagrant-mos/action/is_created.rb
|
102
102
|
- lib/vagrant-mos/action/is_stopped.rb
|
103
103
|
- lib/vagrant-mos/action/message_already_created.rb
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require "log4r"
|
2
|
-
|
3
|
-
module VagrantPlugins
|
4
|
-
module MOS
|
5
|
-
module Action
|
6
|
-
# This action reads the state of the machine and puts it in the
|
7
|
-
# `:machine_state_id` key in the environment.
|
8
|
-
class DescribeTemplates
|
9
|
-
def initialize(app, env)
|
10
|
-
@app = app
|
11
|
-
@logger = Log4r::Logger.new("vagrant_mos::action::read_state")
|
12
|
-
puts 1
|
13
|
-
end
|
14
|
-
|
15
|
-
def call(env)
|
16
|
-
env[:machine_state_id] = read_state(env[:mos_compute], env[:machine])
|
17
|
-
puts 2
|
18
|
-
@app.call(env)
|
19
|
-
end
|
20
|
-
|
21
|
-
def describe_templates(mos, machine)
|
22
|
-
return :not_created if machine.id.nil?
|
23
|
-
|
24
|
-
# Find the templates
|
25
|
-
server = (mos.describe_templates())
|
26
|
-
puts 4
|
27
|
-
if server.nil? || [:"deleting"].include?(server["status"])
|
28
|
-
# The machine can't be found
|
29
|
-
@logger.info("Machine not found or terminated, assuming it got destroyed.")
|
30
|
-
machine.id = nil
|
31
|
-
return :not_created
|
32
|
-
end
|
33
|
-
puts 5
|
34
|
-
puts server["Template"]
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|