marionette 0.0.2 → 0.0.3

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.
data/README.md CHANGED
@@ -5,12 +5,25 @@ Marionette connects a headstartapp server instance (puppet node) to its
5
5
  master and executes puppet runs on demand. Marionette uses fast and lightweight
6
6
  0MQ <http://zeromq.org> messaging system.
7
7
 
8
+
9
+
8
10
  For more about Headstartapp see <http://headstartapp.com>.
9
11
 
10
12
 
11
13
  Installation
12
14
  ------------
13
15
 
16
+ You must, of course, first install zeromq. Run the following as root:
17
+
18
+ wget http://download.zeromq.org/zeromq-2.1.0.tar.gz
19
+ tar zxvf zeromq-2.1.0.tar.gz
20
+ cd zeromq-2.1.0
21
+ ./configure
22
+ make
23
+ make install
24
+ ldconfig
25
+
26
+
14
27
  If you're using RVM, run this under the system context.
15
28
  Be sure to have the appropriate port open (for the following example, port 5555)
16
29
  on the puppet node.
@@ -22,13 +35,17 @@ on the puppet node.
22
35
  Example
23
36
  -------
24
37
 
38
+ The following has been tested on Centos 5.5 running Ruby 1.8.7-p174 and p302.
25
39
  In this example, puppet and master are on the same local network and the puppet's ip is 192.168.1.1.
26
40
 
27
41
  Note: By default, Marionette connects to "tcp://127.0.0.1:5555"
28
42
 
29
43
  Results:
44
+
30
45
  1) on the pupet, /tmp/test.out contains "test #{Time.now}"
46
+
31
47
  2) master.receive returns puppet's facts as a hash.
48
+
32
49
  3) Note: this example does not execute a puppet run.
33
50
 
34
51
 
@@ -45,15 +62,19 @@ Results:
45
62
 
46
63
 
47
64
 
48
- CLI (start marionette-puppet as a daemon):
65
+ CLI:
49
66
 
50
- marionette start tcp://192.168.1.1:5555
67
+ marionette start tcp://192.168.1.1:5555 # start marionette as a daemon
51
68
 
52
69
 
53
70
 
54
- Rake (set up marionette as a service:
71
+ MISC:
55
72
 
56
- rake setup-service
73
+ # run as root
74
+ chkconfig marionette on # start marionette daemon at boot
75
+ service marionette start # start marionette as a service
76
+ service marionette restart # restart marionette service
77
+ service marionette stop # stop marionette service
57
78
 
58
79
 
59
80
 
data/Rakefile CHANGED
@@ -1,21 +1,16 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
3
 
4
- require 'rake'
5
-
6
- namespace :marionette do
7
-
8
- # task description
9
- desc 'Set up marionette as a service (run this as sudo/root)'
10
-
4
+ def setup_service
5
+ # Set up marionette as a service to start at boot.
11
6
  # define task:
12
7
  # 1) write to init.d/marionette
13
8
  # 2) set permissions
14
9
  # 3) set ifconfig
15
10
  # 4) start service
16
- task :service do
17
11
 
18
- script = <<CODE
12
+
13
+ script = <<CODE
19
14
  #!/bin/bash
20
15
 
21
16
  ### BEGIN INIT INFO
@@ -41,12 +36,13 @@ NAME=marionette
41
36
  DAEMON=/usr/local/bin/$NAME
42
37
  PIDFILE=/var/run/$NAME.pid
43
38
  LOGFILE=/var/log/$NAME.log
39
+ TCPFILE=/etc/marionette.tcp
44
40
  SCRIPTNAME=/etc/init.d/$NAME
45
- IP=`ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
46
- TCP=tcp://$IP:5555
41
+ TCP=`cat $TCPFILE`
47
42
 
48
43
  # Gracefully exit if the package has been removed.
49
44
  # test -x $DAEMON || exit 0
45
+ echo "connecting on $TCP..."
50
46
 
51
47
  d_start() {
52
48
  $DAEMON start $TCP || echo -en "\n already running"
@@ -83,17 +79,19 @@ esac
83
79
  exit 0
84
80
 
85
81
  CODE
86
- file = File.open('/etc/init.d/marionette','w')
87
- file.write script
88
- file.close
89
-
90
- system "chmod 755 /etc/init.d/marionette"
91
- system "chkconfig marionette on"
92
- system "service marionette start"
93
- end
94
82
 
95
- # set "service" as the default task
96
- task :default => [:service]
83
+ ip = `sudo /sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
84
+
85
+ file = File.open('/etc/marionette.tcp','w')
86
+ file.write ip
87
+ file.close
88
+
89
+ file = File.open('/etc/init.d/marionette','w')
90
+ file.write script
91
+ file.close
92
+
93
+ system "sudo chmod 755 /etc/init.d/marionette"
97
94
 
98
95
  end
99
96
 
97
+ setup_service
@@ -1,5 +1,5 @@
1
1
  module HeadStartApp
2
2
  module Marionette
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -0,0 +1,106 @@
1
+ # This rake task sets up marionette as a service to start at boot.
2
+ # rake marionette:service
3
+
4
+ require 'rake'
5
+
6
+ namespace :marionette do
7
+
8
+ # task description
9
+ desc 'Set up marionette as a service (run this as sudo/root)'
10
+
11
+ # define task:
12
+ # 1) write to init.d/marionette
13
+ # 2) set permissions
14
+ # 3) set ifconfig
15
+ # 4) start service
16
+ task :service do
17
+
18
+ script = <<CODE
19
+ #!/bin/bash
20
+
21
+ ### BEGIN INIT INFO
22
+ # Provides: marionette
23
+ # Default-Start: 2 3 4 5
24
+ # Default-Stop: 0 1 6
25
+ # Short-Description: start and stop marionette
26
+ # Description: 0mq connection for puppet and master.
27
+ # chkconfig: - 85 15
28
+ ### END INIT INFO
29
+
30
+ # source function library
31
+ . /etc/rc.d/init.d/functions
32
+
33
+ RETVAL=0
34
+ prog="marionette"
35
+
36
+ set -e
37
+
38
+ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
39
+ DESC="marionette daemon"
40
+ NAME=marionette
41
+ DAEMON=/usr/local/bin/$NAME
42
+ PIDFILE=/var/run/$NAME.pid
43
+ LOGFILE=/var/log/$NAME.log
44
+ TCPFILE=/etc/marionette.tcp
45
+ SCRIPTNAME=/etc/init.d/$NAME
46
+ TCP=`cat $TCPFILE`
47
+
48
+ # Gracefully exit if the package has been removed.
49
+ # test -x $DAEMON || exit 0
50
+ echo `connecting on $TCP...`
51
+
52
+ d_start() {
53
+ $DAEMON start $TCP || echo -en "\n already running"
54
+ }
55
+
56
+ d_stop() {
57
+ kill -9 `cat $PIDFILE` || echo -en "\n not running"
58
+ }
59
+
60
+ case "$1" in
61
+ start)
62
+ echo -n "Starting $DESC: $NAME"
63
+ d_start
64
+ echo "."
65
+ ;;
66
+ stop)
67
+ echo -n "Stopping $DESC: $NAME"
68
+ d_stop
69
+ echo "."
70
+ ;;
71
+ restart)
72
+ echo -n "Restarting $DESC: $NAME"
73
+ d_stop
74
+ sleep 5
75
+ d_start
76
+ echo "."
77
+ ;;
78
+ *)
79
+ echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
80
+ exit 3
81
+ ;;
82
+ esac
83
+
84
+ exit 0
85
+
86
+ CODE
87
+
88
+ ip = `ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
89
+
90
+ file = File.open('/etc/init.d/marionette','w')
91
+ file.write script
92
+ file.close
93
+
94
+ file = File.open('/etc/marionette.tcp','w')
95
+ file.write ip
96
+ file.close
97
+
98
+ system "chmod 755 /etc/init.d/marionette"
99
+ system "chkconfig marionette on"
100
+ system "service marionette start"
101
+ end
102
+
103
+ # set "service" as the default task
104
+ task :default => [:service]
105
+
106
+ end
data/marionette.gemspec CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.executables << 'marionette'
21
+ s.add_dependency('bundler')
21
22
  s.add_dependency('facter')
22
23
  s.add_dependency('zmq')
23
24
  s.add_dependency('ffi')
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marionette
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dan Lee
@@ -19,7 +19,7 @@ date: 2011-01-10 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: facter
22
+ name: bundler
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
@@ -33,7 +33,7 @@ dependencies:
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- name: zmq
36
+ name: facter
37
37
  prerelease: false
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
@@ -47,7 +47,7 @@ dependencies:
47
47
  type: :runtime
48
48
  version_requirements: *id002
49
49
  - !ruby/object:Gem::Dependency
50
- name: ffi
50
+ name: zmq
51
51
  prerelease: false
52
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
@@ -61,7 +61,7 @@ dependencies:
61
61
  type: :runtime
62
62
  version_requirements: *id003
63
63
  - !ruby/object:Gem::Dependency
64
- name: ffi-rzmq
64
+ name: ffi
65
65
  prerelease: false
66
66
  requirement: &id004 !ruby/object:Gem::Requirement
67
67
  none: false
@@ -75,7 +75,7 @@ dependencies:
75
75
  type: :runtime
76
76
  version_requirements: *id004
77
77
  - !ruby/object:Gem::Dependency
78
- name: daemons
78
+ name: ffi-rzmq
79
79
  prerelease: false
80
80
  requirement: &id005 !ruby/object:Gem::Requirement
81
81
  none: false
@@ -88,6 +88,20 @@ dependencies:
88
88
  version: "0"
89
89
  type: :runtime
90
90
  version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: daemons
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ type: :runtime
104
+ version_requirements: *id006
91
105
  description: Marionette connects a headstartapp server instance (puppet node) to its master and executes puppet runs on demand. Marionette uses fast and lightweight 0MQ <http://zeromq.org> messaging system.
92
106
  email:
93
107
  - dan@headstartapp.com
@@ -110,6 +124,7 @@ files:
110
124
  - lib/marionette/master.rb
111
125
  - lib/marionette/puppet.rb
112
126
  - lib/marionette/version.rb
127
+ - lib/tasks/marionette.rake
113
128
  - marionette.gemspec
114
129
  has_rdoc: true
115
130
  homepage: http://headstartapp.com