sakurraform 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +111 -12
- data/bin/{sakkuraform → sakurraform} +0 -0
- data/lib/sakurraform/cli/bs.rb +38 -0
- data/lib/sakurraform/cli/init.rb +4 -2
- data/lib/sakurraform/cli/map.rb +14 -0
- data/lib/sakurraform/cli/plan.rb +2 -2
- data/lib/sakurraform/cli/status.rb +2 -2
- data/lib/sakurraform/cli.rb +10 -1
- data/lib/sakurraform/helper.rb +2 -2
- data/lib/sakurraform/templates/credentials.tt +2 -0
- data/lib/sakurraform/version.rb +1 -1
- data/sakurraform.gemspec +1 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5f5a476b605ae713423742cd27a16feff996a83
|
4
|
+
data.tar.gz: f72a7080d717c38cccda7ce83ad71e6b99d92a29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88a1afc61c100fc9334d4872381becb8e675749c233e3d0777ba7c60dc8c891f1e11cbcce49a6a374ff63493d0e2ec27e227a043a1af50a515fd16ab7e830286
|
7
|
+
data.tar.gz: af48f595e7aa87d27a25559bf4bca71d817687ba3bba173a9d1d86ba031de5be429cd52ba544c6c4673b251c69b7c835c03b23e53a47cd15de3b3ede95fbf202
|
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
# CHANGELOG of sakurraform
|
2
|
+
|
3
|
+
## v0.0.2
|
4
|
+
|
5
|
+
- Fix: Change cli name to sakurraform
|
6
|
+
- Change name from sakura_name to sakurraform_name of table.
|
7
|
+
- Feature: sakurraform map
|
8
|
+
- Feature: Base storage command
|
9
|
+
- Add aws-sdk to depends.
|
10
|
+
|
11
|
+
## v0.0.1
|
12
|
+
|
13
|
+
- Inital release.
|
14
|
+
- create network and servers from yaml
|
15
|
+
- show resources
|
data/README.md
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
# Sakurraform
|
2
2
|
|
3
|
-
[
|
3
|
+
[](http://badge.fury.io/rb/sakurraform)
|
4
|
+
|
5
|
+
Manage Infrastructure from Code with Sakura no Cloud and Base Storage.
|
6
|
+
|
7
|
+
## TODO
|
8
|
+
|
9
|
+
- delete resources.
|
10
|
+
- update resources if detect diff.
|
4
11
|
|
5
|
-
Manage Infrastructure from Code with Sakura no Cloud
|
6
12
|
|
7
13
|
## Installation
|
8
14
|
|
@@ -23,28 +29,121 @@ Or install it yourself as:
|
|
23
29
|
## Usage
|
24
30
|
|
25
31
|
```
|
26
|
-
$ ./bin/
|
32
|
+
$ ./bin/sakurraform
|
27
33
|
Commands:
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
34
|
+
sakurraform bs SUBCOMMAND # Manage Sakura no Base Storage
|
35
|
+
sakurraform help [COMMAND] # Describe available commands or one specific command
|
36
|
+
sakurraform init # initiaize .sakuracloud/credentials
|
37
|
+
sakurraform map # open sakura cloud map!
|
38
|
+
sakurraform plan SUBCOMMAND # Manage plan
|
39
|
+
sakurraform status # show status
|
40
|
+
sakurraform version # show version
|
41
|
+
|
33
42
|
```
|
34
43
|
|
35
44
|
### sakurraform init
|
36
45
|
|
37
46
|
Create credential file
|
38
47
|
|
39
|
-
###
|
48
|
+
### sakurraform plan SUBCOMMAND
|
40
49
|
|
41
|
-
####
|
50
|
+
#### sakurraform plan generate
|
42
51
|
|
43
52
|
Create plan template.
|
44
53
|
|
45
|
-
####
|
54
|
+
#### sakurraform plan apply
|
55
|
+
|
56
|
+
Create resources from yaml and save state to file.
|
57
|
+
|
58
|
+
```
|
59
|
+
## Example 2 networks and 2 servers.
|
60
|
+
|
61
|
+
$ ./bin/sakurraform plan apply
|
62
|
+
Create new network defaultrouter
|
63
|
+
[fog][WARNING] Create Router with public subnet
|
64
|
+
[fog][WARNING] Waiting available new router...
|
65
|
+
...... create state/network/defaultrouter-dbfd50c0-2a2c-0132-62c2-38e8563c85ec.yml
|
66
|
+
Create new network defaultrouter2
|
67
|
+
[fog][WARNING] Create Router with public subnet
|
68
|
+
[fog][WARNING] Waiting available new router...
|
69
|
+
...... create state/network/defaultrouter2-e5ea21c0-2a2c-0132-62c2-38e8563c85ec.yml
|
70
|
+
Create new server server1
|
71
|
+
[fog][WARNING] Create Server
|
72
|
+
[fog][WARNING] Create Volume
|
73
|
+
[fog][WARNING] Waiting disk until available
|
74
|
+
.[fog][WARNING] Modifing disk
|
75
|
+
Associate 133.242.242.242 to server1
|
76
|
+
create state/server/server1-efc00f30-2a2c-0132-62c2-38e8563c85ec.yml
|
77
|
+
Create new server server2
|
78
|
+
[fog][WARNING] Create Server
|
79
|
+
[fog][WARNING] Create Volume
|
80
|
+
[fog][WARNING] Waiting disk until available
|
81
|
+
.[fog][WARNING] Modifing disk
|
82
|
+
Associate 133.242.242.243 to server2
|
83
|
+
create state/server/server2-21a3a320-2a2d-0132-62c2-38e8563c85ec.yml
|
84
|
+
```
|
85
|
+
|
86
|
+
create once.
|
87
|
+
|
88
|
+
```
|
89
|
+
$ ./bin/sakurraform plan apply
|
90
|
+
defaultrouter already available as defaultrouter-dbfd50c0-2a2c-0132-62c2-38e8563c85ec
|
91
|
+
defaultrouter2 already available as defaultrouter2-e5ea21c0-2a2c-0132-62c2-38e8563c85ec
|
92
|
+
server1 already available as server1-efc00f30-2a2c-0132-62c2-38e8563c85ec
|
93
|
+
server2 already available as server2-21a3a320-2a2d-0132-62c2-38e8563c85ec
|
94
|
+
```
|
95
|
+
|
96
|
+
#### sakurraform status
|
97
|
+
|
98
|
+
Show status of resources.
|
46
99
|
|
47
|
-
|
100
|
+
```
|
101
|
+
$ ./bin/sakurraform status
|
102
|
+
Nework resources
|
103
|
+
+----------------+-----------------------------------------------------+--------------+--------------------+-----------------+
|
104
|
+
| name | sakurraform_name | sakura_id | subnet | gateway |
|
105
|
+
+----------------+-----------------------------------------------------+--------------+--------------------+-----------------+
|
106
|
+
| defaultrouter | defaultrouter-d9805cd0-295c-0132-62c1-38e8563c85ec | 112600778154 | 133.242.242.192/28 | 133.242.242.193 |
|
107
|
+
+----------------+-----------------------------------------------------+--------------+--------------------+-----------------+
|
108
|
+
| defaultrouter2 | defaultrouter2-e2368190-295c-0132-62c1-38e8563c85ec | 112600778157 | 133.242.242.208/28 | 133.242.242.209 |
|
109
|
+
+----------------+-----------------------------------------------------+--------------+--------------------+-----------------+
|
110
|
+
|
111
|
+
Server resources
|
112
|
+
+---------+----------------------------------------------+--------------+-----------------+--------+---------------------------+
|
113
|
+
| name | sakurraform_name | sakura_id | ipaddress | status | last_state_changed |
|
114
|
+
+---------+----------------------------------------------+--------------+-----------------+--------+---------------------------+
|
115
|
+
| server1 | server1-ed6ea720-295c-0132-62c1-38e8563c85ec | 112600778159 | 133.242.242.194 | up | 2014-09-29T01:47:57+09:00 |
|
116
|
+
+---------+----------------------------------------------+--------------+-----------------+--------+---------------------------+
|
117
|
+
| server2 | server2-1f9f9b40-295d-0132-62c1-38e8563c85ec | 112600778162 | 133.242.242.195 | up | 2014-09-29T01:49:22+09:00 |
|
118
|
+
+---------+----------------------------------------------+--------------+-----------------+--------+---------------------------+
|
119
|
+
|
120
|
+
```
|
121
|
+
|
122
|
+
### sakurraform map
|
123
|
+
|
124
|
+
open map page by bwowser...
|
125
|
+
|
126
|
+
|
127
|
+
### sakurraform bs SUBCOMMAND
|
128
|
+
|
129
|
+
#### sakurraform bs create
|
130
|
+
|
131
|
+
Create bucket(..just open browser)
|
132
|
+
|
133
|
+
#### sakurraform bs ls
|
134
|
+
|
135
|
+
list object entries.
|
136
|
+
|
137
|
+
```
|
138
|
+
$ ./bin/sakurraform bs ls
|
139
|
+
+----------+----------------+---------------------+---------------------------+-------------------------------------------------------+
|
140
|
+
| key | content_length | content_type | last_modified | public_url |
|
141
|
+
+----------+----------------+---------------------+---------------------------+-------------------------------------------------------+
|
142
|
+
| hogehoge | 0 | binary/octet-stream | 2014-09-30 02:14:27 +0900 | http://test-hogehgoe.b.storage.sakura.ad.jp/hogehoge |
|
143
|
+
+----------+----------------+---------------------+---------------------------+-------------------------------------------------------+
|
144
|
+
| mogemoge | 0 | binary/octet-stream | 2014-09-30 02:14:28 +0900 | http://test-hogehoge.b.storage.sakura.ad.jp/mogemoge |
|
145
|
+
+----------+----------------+---------------------+---------------------------+-------------------------------------------------------+
|
146
|
+
```
|
48
147
|
|
49
148
|
|
50
149
|
## Contributing
|
File without changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
module SakurraForm
|
3
|
+
class Bs < Thor
|
4
|
+
include Thor::Actions
|
5
|
+
include SakurraForm::Helper
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.expand_path("../../", __FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'create', 'Create bucket(..just open browser)'
|
12
|
+
def create
|
13
|
+
system('open https://secure.sakura.ad.jp/storage/#!/namespace/manage/')
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'ls', 'list object entries'
|
17
|
+
def ls
|
18
|
+
s3 = AWS::S3.new(
|
19
|
+
:access_key_id => Fog.credentials[:sakura_base_storage_bucket],
|
20
|
+
:secret_access_key => Fog.credentials[:sakura_base_storage_token] ,
|
21
|
+
:s3_endpoint => 'b.storage.sakura.ad.jp',
|
22
|
+
:use_ssl => false
|
23
|
+
)
|
24
|
+
|
25
|
+
bucket = s3.buckets[Fog.credentials[:sakura_base_storage_bucket]]
|
26
|
+
table = bucket.objects.entries.map do |ent|
|
27
|
+
{
|
28
|
+
:key => ent.key,
|
29
|
+
:content_type => ent.content_type,
|
30
|
+
:content_length => ent.content_length,
|
31
|
+
:last_modified => ent.last_modified,
|
32
|
+
:public_url => ent.public_url.to_s
|
33
|
+
}
|
34
|
+
end
|
35
|
+
Formatador.display_table(table, [:key, :content_length, :content_type, :last_modified, :public_url])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/sakurraform/cli/init.rb
CHANGED
@@ -11,8 +11,10 @@ module SakurraForm
|
|
11
11
|
desc 'init', 'initiaize .sakuracloud/credentials'
|
12
12
|
def init
|
13
13
|
empty_directory('.sakuracloud')
|
14
|
-
@sakuracloud_api_token = ask("Sakuracloud_api_token ? ")
|
15
|
-
@sakuracloud_api_token_secret = ask("Sakuracloud_api_token_secret ? ")
|
14
|
+
@sakuracloud_api_token = ask("Sakuracloud_api_token(required) ? ")
|
15
|
+
@sakuracloud_api_token_secret = ask("Sakuracloud_api_token_secret(required) ? ")
|
16
|
+
@sakura_base_storage_bucket = ask("Sakura Base Storage buket name(optional) ? ")
|
17
|
+
@sakura_base_storage_token = ask("Sakura Base Storage token(optional) ? ")
|
16
18
|
template('templates/credentials.tt', ".sakuracloud/credentials")
|
17
19
|
end
|
18
20
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module SakurraForm
|
2
|
+
class CLI < Thor
|
3
|
+
include Thor::Actions
|
4
|
+
|
5
|
+
def self.source_root
|
6
|
+
File.expand_path("../../", __FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
desc 'map', 'open sakura cloud map!'
|
10
|
+
def map
|
11
|
+
system('open https://secure.sakura.ad.jp/cloud/#!/map/map/')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/sakurraform/cli/plan.rb
CHANGED
@@ -7,7 +7,7 @@ module SakurraForm
|
|
7
7
|
File.expand_path("../../", __FILE__)
|
8
8
|
end
|
9
9
|
|
10
|
-
desc 'generate', ''
|
10
|
+
desc 'generate', 'Generate template'
|
11
11
|
def generate
|
12
12
|
empty_directory('state')
|
13
13
|
empty_directory('state/network')
|
@@ -16,7 +16,7 @@ module SakurraForm
|
|
16
16
|
copy_file('templates/server.tt', "plan/server.yml")
|
17
17
|
end
|
18
18
|
|
19
|
-
desc 'apply', ''
|
19
|
+
desc 'apply', 'Apply plan'
|
20
20
|
def apply
|
21
21
|
## Prepare Network
|
22
22
|
col_networks = SakurraForm::Collection.new('network')
|
@@ -13,14 +13,14 @@ module SakurraForm
|
|
13
13
|
col_network = SakurraForm::Collection.new('network')
|
14
14
|
col_network.collection_resources(true)
|
15
15
|
Formatador.display_line('[green]Nework resources[/]')
|
16
|
-
Formatador.display_table(build_state_network(col_network), [:name, :
|
16
|
+
Formatador.display_table(build_state_network(col_network), [:name, :sakurraform_name, :sakura_id, :subnet, :gateway])
|
17
17
|
say()
|
18
18
|
|
19
19
|
## Showdown Server
|
20
20
|
col_server = SakurraForm::Collection.new('server')
|
21
21
|
col_server.collection_resources(true)
|
22
22
|
Formatador.display_line('[green]Server resources[/]')
|
23
|
-
Formatador.display_table(build_state_server(col_server), [:name, :
|
23
|
+
Formatador.display_table(build_state_server(col_server), [:name, :sakurraform_name, :sakura_id, :ipaddress, :status, :last_state_changed])
|
24
24
|
end
|
25
25
|
|
26
26
|
end
|
data/lib/sakurraform/cli.rb
CHANGED
@@ -1,11 +1,20 @@
|
|
1
1
|
require 'sakurraform/cli/version'
|
2
2
|
require 'sakurraform/cli/init'
|
3
3
|
require 'sakurraform/cli/plan'
|
4
|
+
require 'sakurraform/cli/bs'
|
4
5
|
require 'sakurraform/cli/status'
|
6
|
+
require 'sakurraform/cli/map'
|
5
7
|
|
6
8
|
module SakurraForm
|
7
9
|
class CLI < Thor
|
8
|
-
desc "plan SUBCOMMAND", ''
|
10
|
+
desc "plan SUBCOMMAND", 'Manage plan'
|
9
11
|
subcommand "plan", SakurraForm::Plan
|
10
12
|
end
|
11
13
|
end
|
14
|
+
|
15
|
+
module SakurraForm
|
16
|
+
class CLI < Thor
|
17
|
+
desc "bs SUBCOMMAND", 'Manage Sakura no Base Storage'
|
18
|
+
subcommand "bs", SakurraForm::Bs
|
19
|
+
end
|
20
|
+
end
|
data/lib/sakurraform/helper.rb
CHANGED
@@ -52,7 +52,7 @@ module SakurraForm
|
|
52
52
|
table_datum = {}
|
53
53
|
# pp resource
|
54
54
|
table_datum[:name] = resource.name
|
55
|
-
table_datum[:
|
55
|
+
table_datum[:sakurraform_name] = resource.resource_id ? resource.resource_id : 'not created'
|
56
56
|
table_datum[:sakura_id] = resource.remote_state ? resource.remote_state[:id] : 'not created'
|
57
57
|
table_datum[:subnet] = resource.remote_state ? resource.remote_state[:subnets].first['NetworkAddress'] + '/' + resource.remote_state[:subnets].first['NetworkMaskLen'].to_s : 'not created'
|
58
58
|
table_datum[:gateway] = resource.remote_state ? resource.remote_state[:subnets].first['DefaultRoute'] : 'not created'
|
@@ -68,7 +68,7 @@ module SakurraForm
|
|
68
68
|
table_datum = {}
|
69
69
|
# pp resource
|
70
70
|
table_datum[:name] = resource.name
|
71
|
-
table_datum[:
|
71
|
+
table_datum[:sakurraform_name] = resource.resource_id ? resource.resource_id : 'not created'
|
72
72
|
table_datum[:sakura_id] = resource.remote_state ? resource.remote_state[:id] : 'not created'
|
73
73
|
table_datum[:status] = resource.remote_state ? resource.remote_state[:instance]['Status'] : 'not created'
|
74
74
|
table_datum[:last_state_changed] = resource.remote_state ? resource.remote_state[:instance]['StatusChangedAt'] : 'not created'
|
@@ -1,3 +1,5 @@
|
|
1
1
|
default:
|
2
2
|
sakuracloud_api_token: <%= @sakuracloud_api_token %>
|
3
3
|
sakuracloud_api_token_secret: <%= @sakuracloud_api_token_secret %>
|
4
|
+
sakura_base_storage_bucket: <%= @sakura_base_storage_bucket ? @sakura_base_storage_bucket : "null" %>
|
5
|
+
sakura_base_storage_token: <%= @sakura_base_storage_token ? @sakura_base_storage_token : "null" %>
|
data/lib/sakurraform/version.rb
CHANGED
data/sakurraform.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sakurraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sawanoboly
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: aws-sdk
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: chamber
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,7 +126,7 @@ description: Manage Infrastructure from Code with Sakura no Cloud
|
|
112
126
|
email:
|
113
127
|
- sawanoboriyu@higanworks.com
|
114
128
|
executables:
|
115
|
-
-
|
129
|
+
- sakurraform
|
116
130
|
extensions: []
|
117
131
|
extra_rdoc_files: []
|
118
132
|
files:
|
@@ -122,10 +136,12 @@ files:
|
|
122
136
|
- LICENSE.txt
|
123
137
|
- README.md
|
124
138
|
- Rakefile
|
125
|
-
- bin/
|
139
|
+
- bin/sakurraform
|
126
140
|
- lib/sakurraform.rb
|
127
141
|
- lib/sakurraform/cli.rb
|
142
|
+
- lib/sakurraform/cli/bs.rb
|
128
143
|
- lib/sakurraform/cli/init.rb
|
144
|
+
- lib/sakurraform/cli/map.rb
|
129
145
|
- lib/sakurraform/cli/plan.rb
|
130
146
|
- lib/sakurraform/cli/status.rb
|
131
147
|
- lib/sakurraform/cli/version.rb
|