--- /dev/null
+# $Id$
+CURL := curl -H Pragma: -O -R -S --fail --show-error
+SHA1SUM = sha1sum
+
+# default - overridden by the build
+SPECFILE = myops.spec
+
+#main.URL := http://build.planet-lab.org/third-party/zabbix-1.6.2.tar.gz
+#main.SHA1SUM := 575c443adec1703c2c242dbf353de9dc3bb4cafb
+main.FILE := myops-1.0.tar.bz2
+
+# Thierry - when called from within the build, PWD is /build
+SOURCEFILES := $(main.FILE)
+
+$(main.FILE): #FORCE
+ rm -f myops-1.0.tar.bz2
+ tar -jchvf myops-1.0.tar.bz2 -C ../ myops-1.0
+ @echo "hello"
+
+sources: $(SOURCEFILES)
+.PHONY: sources
+
+PWD=$(shell pwd)
+PREPARCH ?= noarch
+RPMDIRDEFS = --define "_sourcedir $(PWD)" --define "_builddir $(PWD)" --define "_srcrpmdir $(PWD)" --define "_rpmdir $(PWD)"
+
+trees: sources
+ rpmbuild $(RPMDIRDEFS) $(RPMDEFS) --nodeps -bp --target $(PREPARCH) $(SPECFILE)
+
+srpm: sources
+ rpmbuild $(RPMDIRDEFS) $(RPMDEFS) --nodeps -bs $(SPECFILE)
+
+TARGET ?= $(shell uname -m)
+rpm: sources
+ rpmbuild $(RPMDIRDEFS) $(RPMDEFS) --nodeps --target $(TARGET) -bb $(SPECFILE)
+
+clean:
+ rm -f *.rpm *.tgz *.bz2 *.gz
+ rm *.pyc *.dat *.log
--- /dev/null
+#
+# $Id$
+#
+
+%define url $URL: git://git.planet-lab.org/myops.git$
+
+%define name myops
+# keep this version in sync with monitor/monitor_version.py
+%define version 1.0
+%define taglevel 0
+
+%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%global python_sitearch %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
+
+Name: %{name}
+Version: %{version}
+Release: %{release}
+Source0: %{name}-%{version}.tar.bz2
+License: GPL
+Group: Applications/System
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+
+Vendor: PlanetLab
+Packager: PlanetLab Central <support@planet-lab.org>
+Distribution: PlanetLab %{plrelease}
+URL: %(echo %{url} | cut -d ' ' -f 2)
+
+
+Summary: MyOps operational packages.
+Group: Applications/System
+
+%description
+MyOps is a collection of support services and scripts for operating a MyPLC
+deployment.
+
+%package client
+Summary: MyOps for client
+Group: Applications/System
+
+Requires: puppet
+Requires: coreutils
+
+%description client
+Client side configuration.
+
+######################################## Server
+%package server
+Summary: MyOps the server side
+Group: Applications/System
+
+Requires: puppet-server
+Requires: puppet
+Requires: coreutils
+
+%description server
+Server side services
+
+%prep
+%setup -q
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+
+#################### SERVER
+echo "Reminder: open ports 8139,8140,8141 in iptables"
+install -d $RPM_BUILD_ROOT/usr/share/%{name}
+install -d $RPM_BUILD_ROOT/etc/puppet/manifests
+install -d $RPM_BUILD_ROOT/etc/puppet/bin
+install -d $RPM_BUILD_ROOT/etc/cron.hourly
+install -d $RPM_BUILD_ROOT/var/lib/puppet
+
+rsync -a ./puppet $RPM_BUILD_ROOT/usr/share/myops/
+
+# Generate an autosign list from plc node hostnames
+install -D -m 755 puppet/cron.d/autosign.plcsh $RPM_BUILD_ROOT/%{_sysconfdir}/cron.hourly/
+install -D -m 755 puppet/server/bin/node_classifier $RPM_BUILD_ROOT/%{_sysconfdir}/puppet/bin/
+install -D -m 644 puppet/server/manifests/site.pp $RPM_BUILD_ROOT/%{_sysconfdir}/puppet/manifests/
+install -D -m 644 puppet/server/puppetmaster.conf $RPM_BUILD_ROOT/%{_sysconfdir}/puppet/
+install -D -m 644 puppet/client/hardcoded.conf $RPM_BUILD_ROOT/%{_sysconfdir}/puppet
+
+rsync -ar ./puppet/server/modules $RPM_BUILD_ROOT/%{_sysconfdir}/puppet/
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files puppet-server
+%defattr(-,root,root)
+/%{_sysconfdir}/cron.hourly/autosign.plcsh
+/%{_sysconfdir}/puppet/bin/node_classifier
+/%{_sysconfdir}/puppet/manifests/site.pp
+/%{_sysconfdir}/puppet/puppetmaster.conf
+/%{_sysconfdir}/puppet/modules
+
+%files puppet-client
+%defattr(-,root,root)
+/%{_sysconfdir}/puppet/hardcoded.conf
+/usr/share/%{name}
+
+%post server
+chkconfig --add puppetmaster
+chkconfig puppetmaster on
+
+%post client
+chkconfig --add puppet
+chkconfig puppet on
+
+cat /etc/puppet/hardcoded.conf >> /etc/puppet/puppet.conf
+
+
+%changelog
+%define module_current_branch 1.0
--- /dev/null
+[puppetd]
+ server = myops.planet-lab.org
+ ca_server = myops.planet-lab.org
+ report_server = myops.planet-lab.org
+ reportserver = myops.planet-lab.org
+ mkusers = true
+ report = true
+ factsync = false
+
--- /dev/null
+#!/usr/bin/env plcsh
+# create /etc/puppet/autosign.conf
+# list of nodes from which puppetmaster should automatically sign
+
+import os
+
+nodes = GetNodes({'peer_id' : None})
+f = open('/etc/puppet/autosign.conf.pre', 'w')
+for n in nodes:
+ print >>f, n['hostname']
+
+f.close()
+os.rename('/etc/puppet/autosign.conf.pre', '/etc/puppet/autosign.conf')
+
--- /dev/null
+#!/usr/bin/env plcsh
+# -*-python-*-
+
+# Super-simple external_node script for versions 0.23 and later
+import sys
+try:
+ n = GetNodes(sys.argv[1])
+except:
+ pass
+
+if True:
+ print """
+---
+classes:
+ - puppet_config
+ - planetlab_node
+parameters:
+ puppet_server: myops.planet-lab.org
+
+"""
+
+sys.exit(0)
--- /dev/null
+
+# Define the bucket for backups
+filebucket { main:
+ server => "myops.planet-lab.org"
+}
+
+# And, specify it as the default target
+File { backup => main }
+
+class planetlab_node {
+ file { "/tmp/puppet_setup_blue":
+ ensure => present,
+ mode => 644,
+ owner => root,
+ group => root,
+ }
+
+ file { "/etc/planetlab/plc_config":
+ ensure => present,
+ mode => 644,
+ backup => main,
+ }
+
+ file { "/usr/bin/cleanrpm.sh":
+ source => "puppet:///sample/cleanrpm.sh",
+ ensure => present,
+ mode => 755,
+ }
+
+ exec { "/usr/bin/cleanrpm.sh":
+ onlyif => "test `pgrep \"rpm|yum\" | wc -l` -gt 0",
+ creates => "/tmp/cleanrpm.log",
+ path => ["/bin", "/usr/bin", "/usr/sbin"],
+ }
+}
+
+class puppet_config {
+
+ package { 'ruby-rdoc':
+ ensure => installed,
+ }
+
+ file { "/etc/puppet/puppet.conf":
+ source => "puppet:///sample/puppet.conf",
+ ensure => present,
+ mode => 644,
+ }
+}
+
+
--- /dev/null
+#!/bin/bash
+echo `date` >> /tmp/cleanrpm.log
+echo "this is a test"
--- /dev/null
+[main]
+ # Where Puppet stores dynamic and growing data.
+ vardir = /var/lib/puppet
+ # The Puppet log directory.
+ logdir = /var/log/puppet
+ # Where Puppet PID files are kept.
+ rundir = /var/run/puppet
+
+ # Where SSL certificates are kept.
+ # The default value is '$confdir/ssl'.
+ ssldir = $vardir/ssl
+
+[puppetd]
+ # The file in which puppetd stores a list of the classes
+ # associated with the retrieved configuratiion. Can be loaded in
+ # the separate ``puppet`` executable using the ``--loadclasses``
+ # option.
+ # The default value is '$confdir/classes.txt'.
+ classfile = $vardir/classes.txt
+
+ # Where puppetd caches the local configuration. An
+ # extension indicating the cache format is added automatically.
+ # The default value is '$confdir/localconfig'.
+ localconfig = $vardir/localconfig
+
+ server = myops.planet-lab.org
+ ca_server = myops.planet-lab.org
+ report_server = myops.planet-lab.org
+ reportserver = myops.planet-lab.org
+ mkusers = true
+ report = true
+# factsync = true
+
--- /dev/null
+[main]
+ external_nodes = /etc/puppet/bin/node_classifier
+ node_terminus = exec