etcds 0.1.4 → 0.1.5

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 (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