etcds 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/etcds.rb +60 -27
  3. data/lib/etcds/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 354d9bb8e06d2f23e2e36b721a9340b99e12f730
4
- data.tar.gz: 521dfaa11926d4f9104b053ecdbf1773254ffb55
3
+ metadata.gz: 2c2968eac5f85ce2f5ce223ed77bf57033198a75
4
+ data.tar.gz: 1cdbaf451aa88836a1cb7d3bad540d7da597bab0
5
5
  SHA512:
6
- metadata.gz: c9e977d14f4586a66f02c061bfd4e95556c3bd5d7c290dc7cfa3156fe1c7515e4e66917ee1623d6f55aacd7c93b7523f107790736a0958b39ad0852368958233
7
- data.tar.gz: 3a6fef3d543269357902ee897c2bc6988b3d4cf01bd3c0ae00ef8074bc21612efb0f711bc2b1029be2aa04944718c1f9d522735453fa87ed401b6055f0e4c201
6
+ metadata.gz: 2bb1fc1faca9f2fc72ccd22b4ef86e9c3db38448be4d68b51839c433b12b5059462dd92cc3e049d2fd01b8f25500e9fc2becd8679df7cf3bbf630fb5a51cfeee
7
+ data.tar.gz: fa38df2d08f69f0a929505054b4cbf0956b807fa566acd4d32d6c883f3cfd0a8cb9a2585ed875481695704ca96a51b63ebc9674190d4e19cf57a140ea009edf0
@@ -1,6 +1,8 @@
1
1
  require "etcds/version"
2
2
  require "yaml"
3
3
  require "colorize"
4
+ require "net/https"
5
+ require "openssl"
4
6
 
5
7
  class Etcds
6
8
  LABEL_BASE = 'com.s21g.etcds'
@@ -52,6 +54,9 @@ class Etcds
52
54
  etcd_ca "new-cert --passphrase '' client"
53
55
  etcd_ca "sign --passphrase '' client"
54
56
  etcd_ca "export --insecure --passphrase '' client | tar -C ./certs -xvf -"
57
+ unless File.exist?(discovery_path)
58
+ system "curl https://discovery.etcd.io/new > #{discovery_path}"
59
+ end
55
60
  end
56
61
 
57
62
  H[:install] = "[names...]\tinstall ca files to the host"
@@ -103,33 +108,35 @@ class Etcds
103
108
  end
104
109
  end
105
110
 
106
- H[:up] = "[names...]\tprepare and activate etcd"
107
- def up(*names)
108
- names.each do |n|
109
- node = @nodes[n]
110
- ip = node['ip']
111
- stop n if run? n
112
- rm n if exist? n
113
- docker n, "run -d -p 2379:2379 -p 2380:2380 --name etcd" +
114
- " -e ETCD_TRUSTED_CA_FILE=/certs/#{n}.ca.crt" +
115
- " -e ETCD_CERT_FILE=/certs/#{n}.crt" +
116
- " -e ETCD_KEY_FILE=/certs/#{n}.key.insecure" +
117
- " -e ETCD_CLIENT_CERT_AUTH=1" +
118
- " -e ETCD_PEER_TRUSTED_CA_FILE=/certs/#{n}.ca.crt" +
119
- " -e ETCD_PEER_CERT_FILE=/certs/#{n}.crt" +
120
- " -e ETCD_PEER_KEY_FILE=/certs/#{n}.key.insecure" +
121
- " -e ETCD_PEER_CLIENT_CERT_AUTH=1" +
122
- " -e ETCD_HEARTBEAT_INTERVAL=100" +
123
- " -e ETCD_ELECTION_TIMEOUT=2500" +
124
- " -v /etc/docker/certs.d:/certs" +
125
- " -l #{LABEL_BASE}.name=#{n}" +
126
- " quay.io/coreos/etcd" +
127
- " -name #{n}" +
128
- " -listen-client-urls https://0.0.0.0:2379" +
129
- " -listen-peer-urls https://0.0.0.0:2380" +
130
- " -advertise-client-urls https://#{ip}:2379"
131
- puts "etcd is started at #{n}"
132
- end
111
+ H[:up] = "name\tprepare and activate etcd"
112
+ def up(n, *args)
113
+ node = @nodes[n]
114
+ ip = node['ip']
115
+ stop n if run? n
116
+ rm n if exist? n
117
+ docker n, "run -d -p 2379:2379 -p 2380:2380 --name etcd" +
118
+ " -e ETCD_TRUSTED_CA_FILE=/certs/#{n}.ca.crt" +
119
+ " -e ETCD_CERT_FILE=/certs/#{n}.crt" +
120
+ " -e ETCD_KEY_FILE=/certs/#{n}.key.insecure" +
121
+ " -e ETCD_CLIENT_CERT_AUTH=1" +
122
+ " -e ETCD_PEER_TRUSTED_CA_FILE=/certs/#{n}.ca.crt" +
123
+ " -e ETCD_PEER_CERT_FILE=/certs/#{n}.crt" +
124
+ " -e ETCD_PEER_KEY_FILE=/certs/#{n}.key.insecure" +
125
+ " -e ETCD_PEER_CLIENT_CERT_AUTH=1" +
126
+ " -e ETCD_HEARTBEAT_INTERVAL=100" +
127
+ " -e ETCD_ELECTION_TIMEOUT=2500" +
128
+ " -v /var/lib/etcd" +
129
+ " -v /etc/docker/certs.d:/certs" +
130
+ " -v /etc/ssl/certs:/etc/ssl/certs" +
131
+ " -l #{LABEL_BASE}.name=#{n}" +
132
+ " quay.io/coreos/etcd" +
133
+ " -name #{n} -data-dir /var/lib/etcd/#{n}.etcd" +
134
+ " -listen-client-urls https://0.0.0.0:2379" +
135
+ " -listen-peer-urls https://0.0.0.0:2380" +
136
+ " -advertise-client-urls https://#{ip}:2379" +
137
+ " -initial-advertise-peer-urls https://#{ip}:2380" +
138
+ " -discovery #{discovery} " + args*' '
139
+ puts "etcd is started at #{n}"
133
140
  end
134
141
 
135
142
  H[:health] = 'show cluster health for all nodes'
@@ -148,7 +155,23 @@ class Etcds
148
155
  " --ca-file ./certs/#{n}.ca.crt " + args*' '
149
156
  end
150
157
 
158
+ H[:get] = "name:/path\tGET via ssl"
159
+ def get(query)
160
+ n, path = query.split(':', 2)
161
+ node = @nodes[n]
162
+ ip = node['ip']
163
+ puts https(ip, 2379).get(path).body
164
+ end
165
+
166
+ def discover
167
+ system "curl #{discovery}"
168
+ end
169
+
151
170
  private
171
+ def load_cert(path) OpenSSL::X509::Certificate.new open(path).read end
172
+ def load_key(path) OpenSSL::PKey.read open(path).read end
173
+ def discovery_path; './certs/discovery' end
174
+ def discovery; open(discovery_path).read.chomp end
152
175
  def etcd_ca(cmd) system "etcd-ca --depot-path ./certs #{cmd}" end
153
176
  def dm(cmd) system "docker-machine #{cmd}" end
154
177
  def scp(cmd) dm "scp #{cmd}" end
@@ -172,4 +195,14 @@ private
172
195
  end
173
196
  end
174
197
  end
198
+
199
+ def https(ip, port)
200
+ Net::HTTP.new(ip, port).tap do |c|
201
+ c.use_ssl = true
202
+ c.ca_file = "./certs/ca.crt"
203
+ c.cert = load_cert "./certs/client.crt"
204
+ c.key = load_key "./certs/client.key.insecure"
205
+ c.verify_mode = OpenSSL::SSL::VERIFY_PEER
206
+ end
207
+ end
175
208
  end
@@ -1,3 +1,3 @@
1
1
  class Etcds
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etcds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Takiuchi