marionette 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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