catfish 0.0.5 → 0.0.6

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: bd4f16456fc2a0292aaa6f563b208221a7d773f1
4
- data.tar.gz: 5427abeed216170b88c413e07c561bfed507579b
3
+ metadata.gz: e52c11f61f31793e6c0ac553a99194d1561c109d
4
+ data.tar.gz: 6b4cb85095aaf1ea865c98b6a526b189c7ed69a0
5
5
  SHA512:
6
- metadata.gz: 9d66e6106c7a1b0d6b3e3dc145fd1d5fe43e35a98f94d14c6c63e3289f46bf620a7b9883381950e43ed6d97d76f77936d735d063162f438afbfbad7de76cb26d
7
- data.tar.gz: 8d57477e3863d3660c7d9804b8ec04ef0e8a4c272ebcdb7d5f291a58c97e767d5f66994184c7629363e5cdc88c8ba2b5a626407c2dec2776bbb9d58ee574b89d
6
+ metadata.gz: 5b206cc2edbd443ece2160f6aca5a60760d345a2cf05ac91610d3744e255970faeb2f70bd291c976473f2ab98c77d5e8f7ff48aa5824f1ff9198da79bc630a61
7
+ data.tar.gz: da9abc0e61b1afea9954e19d371c46a7ce12ae708699b60d338b8f2c60be05cac34c358adfbc704f7e14c24112c0773c729f85d3bd56e008621f2e4378dc9cb3
data/README.md CHANGED
@@ -27,22 +27,32 @@ Catfishfile and a Vagrantfile at a minimum.
27
27
 
28
28
  $ catfish init
29
29
 
30
- Specify connection options for ssh
30
+ Include two shell script provisioners
31
31
 
32
- $ catfish init --ssh-username=YOUR_USERNAME --ssh-private-key-path=YOUR_SSH_KEY_PATH
32
+ $ catfish init --shell --shell-paths=./script/a.sh ./script/b.sh
33
33
 
34
- Include two shell provisioners
34
+ You can template out a puppet repository
35
35
 
36
- $ catfish init --provisioners=shell --shell-paths=./script/a.sh ./script/b.sh
36
+ $ catfish init --puppet
37
37
 
38
- ### Add the target servers in your Catfishfile
38
+ Initialize a Windows configuration using winrm
39
+
40
+ $ catfish init --windows
41
+
42
+ ### Managed servers
43
+ Catfish can also help you manage pre-existing servers that can communicate over
44
+ SSH or WinRM. To enable managed mode, make sure to pass the `--managed` flag to init
45
+
46
+ $ catfish init --managed --ssh-username=YOUR_USERNAME --ssh-private-key-path=YOUR_SSH_KEY_PATH
47
+
48
+ Add the target servers in your Catfishfile
39
49
 
40
50
  ```ruby
41
51
  server 'myserver1.mydomain.com'
42
52
  server 'myserver2.mydomain.com'
43
53
  ```
44
54
 
45
- ### Provision your servers
55
+ Provisioning
46
56
 
47
57
  $ catfish provision
48
58
 
@@ -66,7 +76,6 @@ plugin 'vagrant-hostmaster'
66
76
 
67
77
  ## TODO
68
78
 
69
- - Puppet provisioner support
70
79
  - Add some spec tests
71
80
 
72
81
  ## Contributing
@@ -0,0 +1,9 @@
1
+ module Catfish
2
+ class CLI::Clean
3
+
4
+ def run
5
+ puts 'Cleaning Catfishfile.lock'
6
+ FileUtils.rm 'Catfishfile.lock', force: true
7
+ end
8
+ end
9
+ end
@@ -23,6 +23,10 @@ module Catfish
23
23
  plugins << 'vagrant-librarian-puppet' if options['puppet-librarian-puppet']
24
24
 
25
25
  opts = {
26
+ local: options[:local],
27
+ local_box: options['local-box'],
28
+ local_box_url: options['local-box-url'],
29
+ managed: options[:managed],
26
30
  provisioners: provisioners || [],
27
31
  shell_paths: options['shell-paths'] || ['{{PATH_TO_YOUR_SCRIPT}}'],
28
32
  puppet_hiera: options['puppet-hiera'],
@@ -32,7 +36,7 @@ module Catfish
32
36
  winrm_password: options['winrm-password'] || '{{YOUR_WINRM_PASSWORD}}',
33
37
  ssh_username: options['ssh-username'] || '{{YOUR_SSH_USERNAME}}',
34
38
  ssh_private_key_path: options['ssh-private-key-path'] || '{{PATH_TO_YOUR_SSH_PRIVATE_KEY}}',
35
- servers: options['servers'] || [],
39
+ managed_servers: options['managed-servers'] || [],
36
40
  plugins: plugins || []
37
41
  }
38
42
 
@@ -7,14 +7,14 @@ module Catfish
7
7
  end
8
8
 
9
9
  def run
10
- p 'Provisioning to servers using Catfishfile.lock'
10
+ puts 'Provisioning to servers using Catfishfile.lock'
11
11
  vagrant_version
12
12
  begin
13
13
  # Connect to the servers. The --provider=managed is the key here.
14
- system("vagrant up --provider=#{options[:provider]}")
14
+ system("vagrant up /managed/ --provider=#{options[:provider]}")
15
15
 
16
16
  # Confirm the connectivity
17
- status = `vagrant status --machine-readable`
17
+ status = `vagrant status /managed/ --machine-readable`
18
18
  if status.include? 'not reachable'
19
19
  abort 'ERROR DEPLOYING: One or more servers could not be connected to'
20
20
  end
@@ -24,7 +24,7 @@ module Catfish
24
24
  ensure
25
25
 
26
26
  # Disconnect from all of the servers
27
- system 'vagrant destroy -f'
27
+ system 'vagrant destroy -f /managed/'
28
28
 
29
29
  end
30
30
  end
@@ -50,7 +50,8 @@ module Catfish
50
50
 
51
51
  threads.each(&:join)
52
52
  else
53
- system 'vagrant provision'
53
+ command = 'vagrant provision /managed/'
54
+ system command
54
55
  end
55
56
  end
56
57
  end
data/lib/catfish/cli.rb CHANGED
@@ -22,6 +22,11 @@ module Catfish
22
22
  TODO: Long description
23
23
  D
24
24
  method_option 'provisioners', type: :array, banner: 'A list of vagrant provisiners to use'
25
+ method_option 'local', type: :boolean, default: true, banner: 'Set up a local vm for use with vagrant'
26
+ method_option 'local-box', type: :string, banner: 'Vagrant box for use with local VM'
27
+ method_option 'local-box-url', type: :string, banner: 'Vagrant box url for use with local VM'
28
+ method_option 'managed', type: :boolean, default: false, banner: 'Set up capability for vagrant-managed-servers'
29
+ method_option 'managed-servers', type: :array, banner: 'Initial list of servers to include in Catfishfile'
25
30
  method_option 'communicator', type: :string, banner: 'The communicator. ssh (default) or winrm'
26
31
  method_option 'windows', type: :boolean, banner: 'Shorthand for --communicator=winrm'
27
32
  method_option 'winrm-username', type: :string, banner: 'Username for winrm. Used with --communicator=winrm'
@@ -31,10 +36,9 @@ module Catfish
31
36
  method_option 'ssh-username', type: :string, banner: 'SSH username'
32
37
  method_option 'ssh-private-key-path', type: :string, banner: 'Path to SSH private key'
33
38
  method_option 'puppet', type: :boolean, banner: 'Shorthand for provisioners=puppet'
34
- method_option 'puppet-librarian-puppet', type: :boolean, default: 'true',
39
+ method_option 'puppet-librarian-puppet', type: :boolean, default: true,
35
40
  banner: 'Whether or not to include a default Puppetfile and librarian puppet plugin'
36
- method_option 'puppet-hiera', type: :boolean, default: 'true', banner: 'Include hiera templates. Only applies to puppet provisioner'
37
- method_option 'servers', type: :array, banner: 'Initial list of servers to include in Catfishfile'
41
+ method_option 'puppet-hiera', type: :boolean, default: true, banner: 'Include hiera templates. Only applies to puppet provisioner'
38
42
  method_option 'plugins', type: :array, banner: 'Vagrant plugins to be installed'
39
43
  def init
40
44
  require 'catfish/cli/init'
@@ -53,14 +57,25 @@ module Catfish
53
57
  Plugin.new(options.dup).run
54
58
  end
55
59
 
60
+ desc 'clean', 'Clean Catfishfile.lock'
61
+ def clean
62
+ require 'catfish/cli/clean'
63
+ Clean.new.run
64
+ end
65
+
56
66
  desc 'provision [OPTIONS]', 'Provision to the servers specified in Catfishfile.lock'
57
67
  method_option 'provider', type: :string, default: 'managed', banner: 'Vagrant provider to use.'
58
- method_option 'parallel', type: :boolean, default: 'false', banner: 'Run provisioning in parallel'
68
+ method_option 'parallel', type: :boolean, default: false, banner: 'Run provisioning in parallel'
59
69
  def provision
70
+ exists_before_resolve = File.exist?('Catfishfile.lock')
60
71
  invoke :resolve
61
72
  invoke :plugin
62
73
  require 'catfish/cli/provision'
63
74
  Provision.new(options.dup).run
75
+
76
+ # If the Catfishfile.lock existed before the start of the run, then
77
+ # we should leave it there. Otherwise, we should clean it up.
78
+ FileUtils.rm 'Catfishfile.lock', force: true unless exists_before_resolve
64
79
  end
65
80
  end
66
81
  end
@@ -1,7 +1,7 @@
1
1
  # A sample Catfishfile
2
2
 
3
3
  # server 'myserver.mydomain.com'
4
- <% config[:servers].each do |server| -%>
4
+ <% config[:managed_servers].each do |server| -%>
5
5
  server '<%= server %>'
6
6
  <% end %>
7
7
 
@@ -3,7 +3,6 @@
3
3
 
4
4
  Vagrant.configure("2") do |config|
5
5
 
6
- config.vm.box = "tknerr/managed-server-dummy"
7
6
  <% if config[:provisioners].include? 'shell' -%>
8
7
  <% config[:shell_paths].each do |path| -%>
9
8
  config.vm.provision 'shell', path: '<%= path %>'
@@ -21,20 +20,36 @@ Vagrant.configure("2") do |config|
21
20
  <% end -%>
22
21
  <% if config[:communicator] == 'winrm' -%>
23
22
  config.vm.communicator = '<%= config[:communicator] %>'
24
- config.vm.winrm.username = '<%= config[:winrm_username] %>'
25
- config.vm.winrm.password = '<%= config[:winrm_password] %>'
26
23
  <% end -%>
27
24
 
28
- instances = File.readlines('Catfishfile.lock').map(&:chomp)
29
- instances.each do |instance|
30
- config.vm.define "#{instance}" do |box|
31
- box.vm.provider :managed do |managed, override|
32
- managed.server = instance
25
+ <% if config[:local] -%>
26
+ config.vm.define 'local' do |local|
27
+ local.vm.box = "<%= config[:local_box] %>"
28
+ <% if config[:local_box_url] -%>
29
+ local.vm.box_url = "<%= config[:local_box_url] %>"
30
+ <% end -%>
31
+ end
32
+ <% end -%>
33
+
34
+ <% if config[:managed] -%>
35
+ if File.exist?('Catfishfile.lock')
36
+ instances = File.readlines('Catfishfile.lock').map(&:chomp)
37
+ instances.each do |instance|
38
+ config.vm.define "managed-#{instance}" do |box|
39
+ box.vm.box = "tknerr/managed-server-dummy"
40
+ box.vm.provider :managed do |managed, override|
41
+ managed.server = instance
33
42
  <% if config[:communicator] == 'ssh' -%>
34
- override.ssh.username = '<%= config[:ssh_username] %>'
35
- override.ssh.private_key_path = '<%= config[:ssh_private_key_path] %>'
43
+ override.ssh.username = '<%= config[:ssh_username] %>'
44
+ override.ssh.private_key_path = '<%= config[:ssh_private_key_path] %>'
36
45
  <% end -%>
46
+ <% if config[:communicator] == 'winrm' -%>
47
+ instance.vm.winrm.username = '<%= config[:winrm_username] %>'
48
+ instance.vm.winrm.password = '<%= config[:winrm_password] %>'
49
+ <% end -%>
50
+ end
37
51
  end
38
52
  end
39
53
  end
54
+ <% end -%>
40
55
  end
@@ -1,3 +1,3 @@
1
1
  module Catfish
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catfish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Baldauf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-08 00:00:00.000000000 Z
11
+ date: 2014-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -85,6 +85,7 @@ files:
85
85
  - catfish.gemspec
86
86
  - lib/catfish.rb
87
87
  - lib/catfish/cli.rb
88
+ - lib/catfish/cli/clean.rb
88
89
  - lib/catfish/cli/init.rb
89
90
  - lib/catfish/cli/plugin.rb
90
91
  - lib/catfish/cli/provision.rb