hyperwaverelay 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d3db0440a61b2e75f37b563f0331f390bc82102
4
- data.tar.gz: 368558a67d4c766d7357f7d9e97247331f1d80d8
3
+ metadata.gz: fe672694d18ee6341e15a29d16c6be7c176982f2
4
+ data.tar.gz: 69f9a475631505c9eff07ae2f466d95c5e174777
5
5
  SHA512:
6
- metadata.gz: 049531c5e7ff041521b56a7194096ce913e552271e869994969e139a40826c8c412b6b062c4df17f5a95c81c412beda4c290fcb4e53659e841f69a80fe868c7d
7
- data.tar.gz: 1e8823d54ac62f996a6cea04f11e88d5e6184340690799db23fc3d3faaa858ef3d57f1bf98ab85fdde222f54c4199181fef9665ff6daa795df88cad44b91ddef
6
+ metadata.gz: 873fe7383d935373f275bc8e51f959ee0b050bbcd665e9ca81bebc3e59efae83b3884422f7fa560f6bca881824eb2d4eb695c1a094ef72da3f0798581bcc3b91
7
+ data.tar.gz: 06feeb2fa6046313ac0c6d197352837f6eb2b1391d89b14d136e53f3f15aab96013cd0466351864ef031e19c253460b466dcc4a10253ec0134e9fb4979de83f9
@@ -1,8 +1,9 @@
1
1
  require "bundler/setup"
2
2
  require "hyperwaverelay/version"
3
- require "securerandom"
3
+ require "hyperwaverelay/keys"
4
+ require "hyperwaverelay/vault"
5
+ require "hyperwaverelay/util"
4
6
  require "thor"
5
- require 'sshkey'
6
7
 
7
8
  module Hyperwaverelay
8
9
  class Cli < Thor
@@ -19,21 +20,17 @@ module Hyperwaverelay
19
20
  ["group_vars","host_vars","roles"].each do |dir|
20
21
  empty_directory("#{name}/#{dir}")
21
22
  end
22
- create_file "#{name}/.vault_password" do
23
- SecureRandom::base64(20)
24
- end
25
23
  create_file "#{name}/group_vars/all" do
26
24
  "---\n"
27
25
  end
28
- key = ::SSHKey.generate
29
- create_file "#{ENV['HOME']}/.ssh/ansible_deploy" do
30
- key.private_key
31
- end
32
- create_file "#{ENV['HOME']}/.ssh/ansible_deploy.pub" do
33
- key.ssh_public_key
34
- end
35
- template "hyperwaverelay/templates/ansible.cfg.tt", "#{name}/ansible.cfg"
26
+ template "hyperwaverelay/templates/ansible.cfg.tt", "#{name}/ansible.cfg", {name: name}
27
+ invoke "hyperwaverelay:keys:keygen"
28
+ invoke "hyperwaverelay:vault:gen"
36
29
  end
30
+ desc "keys SUBCOMMAND ARGS", "manage SSH keys"
31
+ subcommand "keys", Keys
32
+ desc "vault SUBCOMMAND ARGS", "manage vault"
33
+ subcommand "vault", Vault
37
34
  end
38
35
  end
39
36
 
@@ -0,0 +1,18 @@
1
+ require 'thor'
2
+ require 'sshkey'
3
+
4
+ module Hyperwaverelay
5
+ class Keys < Thor
6
+ include Thor::Actions
7
+ desc "keygen key_prefix", "generate ssh keys"
8
+ def keygen(prefix)
9
+ key = ::SSHKey.generate
10
+ create_file "#{ENV['HOME']}/.ssh/#{prefix}_ansible_deploy" do
11
+ key.private_key
12
+ end
13
+ create_file "#{ENV['HOME']}/.ssh/#{prefix}_ansible_deploy.pub" do
14
+ key.ssh_public_key
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
1
  [defaults]
2
2
  ansible_managed = Ansible Managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
3
3
  vault_password_file = .vault_password
4
+ private_key_file = <%= ENV['HOME'] %>/.ssh/<%= config[:name] %>_ansible_deploy
4
5
  <% if options[:disable_host_key_checking] %>host_key_checking = False <% end %>
5
6
  <% if options[:remote_user] %>remote_user = <%= options[:remote_user] %><% end %>
6
7
  <% if options[:inventory] %>inventory = <%= options[:inventory] %><% end %>
7
- private_key_file = <%= ENV['HOME'] %>/.ssh/ansible_deploy
@@ -0,0 +1,31 @@
1
+ require 'pathname'
2
+
3
+ module Hyperwaverelay
4
+ class Util
5
+ def self.has_ansible_cfg?
6
+ has_file?('ansible.cfg')
7
+ end
8
+ def self.has_directories?
9
+ has_dir?('group_vars') && has_dir?('host_vars') && has_dir?('roles')
10
+ end
11
+ def self.is_ansible_project?
12
+ has_directories? && has_ansible_cfg?
13
+ end
14
+ def self.vault_present?
15
+ has_hidden_file?('.vault_password')
16
+ end
17
+ def self.is_vaulted?(file)
18
+ File.readlines(file)[0] == "$ANSIBLE_VAULT;1.1;AES256\n"
19
+ end
20
+ protected
21
+ def self.has_file?(filename)
22
+ Pathname.glob('*').any? {|f| f.file? && f.to_s == filename}
23
+ end
24
+ def self.has_dir?(dirname)
25
+ Pathname.glob('*').any? {|d| d.directory? && d.to_s == dirname}
26
+ end
27
+ def self.has_hidden_file?(filename)
28
+ Pathname.glob('.*').any? {|f| f.file? && f.to_s == filename}
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ require 'thor'
2
+ require 'securerandom'
3
+
4
+ module Hyperwaverelay
5
+ class Vault < Thor
6
+ include Thor::Actions
7
+ desc "gen", "generate vault secrets"
8
+ def gen(root = nil)
9
+ if root
10
+ self.destination_root = File.expand_path(root)
11
+ puts "Entering Project Directory #{File.expand_path(root)}"
12
+ end
13
+ create_file ".vault_password" do
14
+ SecureRandom::base64(20)
15
+ end
16
+ end
17
+ desc "rekey", "rekey encrypted files"
18
+ def rekey
19
+ options[:force] == true
20
+ vaulted_files = Pathname.glob('**/*').select {|f| f.file? && Hyperwaverelay::Util.is_vaulted?(f.to_s)}
21
+ vaulted_files.each do |file|
22
+ puts "Decrypting #{file.to_s}"
23
+ system "ansible-vault decrypt #{file.to_s}"
24
+ end
25
+ invoke :gen, force: true
26
+ vaulted_files.each do |file|
27
+ puts "Recrypting #{file.to_s}"
28
+ system "ansible-vault encrypt #{file.to_s}"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module Hyperwaverelay
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyperwaverelay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Danko
@@ -86,7 +86,10 @@ files:
86
86
  - bin/setup
87
87
  - hyperwaverelay.gemspec
88
88
  - lib/hyperwaverelay.rb
89
+ - lib/hyperwaverelay/keys.rb
89
90
  - lib/hyperwaverelay/templates/ansible.cfg.tt
91
+ - lib/hyperwaverelay/util.rb
92
+ - lib/hyperwaverelay/vault.rb
90
93
  - lib/hyperwaverelay/version.rb
91
94
  homepage: https://github.com/skord/hyperwaverelay
92
95
  licenses: