diff options
Diffstat (limited to 'global/overlay')
-rw-r--r-- | global/overlay/etc/puppet/cosmos-modules.conf | 46 | ||||
-rw-r--r-- | global/overlay/etc/puppet/puppet.conf | 1 | ||||
-rwxr-xr-x | global/overlay/usr/local/bin/run-cosmos | 52 | ||||
-rwxr-xr-x | global/overlay/usr/local/sbin/cosmos_vm | 8 |
4 files changed, 65 insertions, 42 deletions
diff --git a/global/overlay/etc/puppet/cosmos-modules.conf b/global/overlay/etc/puppet/cosmos-modules.conf index e4dc597..991a570 100644 --- a/global/overlay/etc/puppet/cosmos-modules.conf +++ b/global/overlay/etc/puppet/cosmos-modules.conf @@ -1,21 +1,18 @@ +# # name source (puppetlabs fq name or git url) upgrade (yes/no) tag-pattern # # NOTE that Git packages MUST be tagged with signatures by someone # in the Cosmos trust list. That is why all the URLs point to forked # versions in the SUNET github organization. # -concat git://github.com/SUNET/puppetlabs-concat.git yes sunet-* -stdlib git://github.com/SUNET/puppetlabs-stdlib.git yes sunet-* -cosmos git://github.com/SUNET/puppet-cosmos.git yes sunet-* -ufw git://github.com/SUNET/puppet-module-ufw.git yes sunet-* -apt git://github.com/SUNET/puppetlabs-apt.git yes sunet-* -vcsrepo git://github.com/SUNET/puppetlabs-vcsrepo.git yes sunet-* -xinetd git://github.com/SUNET/puppetlabs-xinetd.git yes sunet-* -hiera-gpg git://github.com/SUNET/hiera-gpg.git yes sunet-* -augeas git://github.com/SUNET/puppet-augeas.git yes sunet-* -docker git://github.com/SUNET/garethr-docker.git yes sunet-* -sunet git://github.com/SUNET/puppet-sunet.git yes sunet-* - +concat https://github.com/SUNET/puppetlabs-concat.git yes sunet-* +stdlib https://github.com/SUNET/puppetlabs-stdlib.git yes sunet-* +cosmos https://github.com/SUNET/puppet-cosmos.git yes sunet-* +ufw https://github.com/SUNET/puppet-module-ufw.git yes sunet_dev-* +apt https://github.com/SUNET/puppetlabs-apt.git yes sunet_dev-* +vcsrepo https://github.com/SUNET/puppetlabs-vcsrepo.git yes sunet-* +xinetd https://github.com/SUNET/puppetlabs-xinetd.git yes sunet-* +hiera-gpg https://github.com/SUNET/hiera-gpg.git yes sunet-* # # Alternate sources you might or might not want to use: #concat puppetlabs/concat no @@ -24,15 +21,16 @@ sunet git://github.com/SUNET/puppet-sunet.git yes sunet-* #apt puppetlabs/apt no #vcsrepo puppetlabs/vcsrepo no #xinetd puppetlabs/xinetd no -#cosmos git://github.com/leifj/puppet-cosmos.git yes -#python git://github.com/SUNET/puppet-python.git yes sunet-* -#erlang git://github.com/SUNET/garethr-erlang.git yes sunet-* -#rabbitmq git://github.com/SUNET/puppetlabs-rabbitmq.git yes sunet_dev-* -#pound git://github.com/SUNET/puppet-pound.git yes sunet_dev-* -#augeas git://github.com/SUNET/puppet-augeas.git yes sunet-* -#bastion git://github.com/SUNET/puppet-bastion.git yes sunet-* -#postgresql git://github.com/SUNET/puppetlabs-postgresql.git yes sunet_dev-* -#munin git://github.com/SUNET/ssm-munin.git yes sunet-* -#nagios git://github.com/SUNET/puppet-nagios.git yes sunet-* -#staging git://github.com/SUNET/puppet-staging.git yes sunet-* -#apparmor git://github.com/SUNET/puppet-apparmor.git yes sunet-* +#cosmos https://github.com/SUNET/puppet-cosmos.git yes +#python https://github.com/SUNET/puppet-python.git yes sunet-* +#erlang https://github.com/SUNET/garethr-erlang.git yes sunet-* +#rabbitmq https://github.com/SUNET/puppetlabs-rabbitmq.git yes sunet_dev-* +#pound https://github.com/SUNET/puppet-pound.git yes sunet_dev-* +#augeas https://github.com/SUNET/puppet-augeas.git yes sunet-* +#bastion https://github.com/SUNET/puppet-bastion.git yes sunet-* +#postgresql https://github.com/SUNET/puppetlabs-postgresql.git yes sunet_dev-* +#munin https://github.com/SUNET/ssm-munin.git yes sunet-* +#nagios https://github.com/SUNET/puppet-nagios.git yes sunet-* +#staging https://github.com/SUNET/puppet-staging.git yes sunet-* +#apparmor https://github.com/SUNET/puppet-apparmor.git yes sunet-* +#docker https://github.com/SUNET/garethr-docker.git yes sunet_dev-* diff --git a/global/overlay/etc/puppet/puppet.conf b/global/overlay/etc/puppet/puppet.conf index 1f834e8..88871f0 100644 --- a/global/overlay/etc/puppet/puppet.conf +++ b/global/overlay/etc/puppet/puppet.conf @@ -4,6 +4,7 @@ vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter +templatedir=$confdir/templates node_terminus = exec external_nodes = /etc/puppet/cosmos_enc.py basemodulepath = /etc/puppet/modules:/etc/puppet/cosmos-modules:/usr/share/puppet/modules diff --git a/global/overlay/usr/local/bin/run-cosmos b/global/overlay/usr/local/bin/run-cosmos index a37d49f..5f2cbc1 100755 --- a/global/overlay/usr/local/bin/run-cosmos +++ b/global/overlay/usr/local/bin/run-cosmos @@ -1,22 +1,46 @@ -#!/bin/sh +#!/bin/bash # # Simplify running cosmos, with serialization if flock is available. # -set -e +readonly PROGNAME=$(basename "$0") +readonly LOCKFILE_DIR=/tmp +readonly LOCK_FD=200 -FLOCK=`which flock` +lock() { + local prefix=$1 + local fd=${2:-$LOCK_FD} + local lock_file=$LOCKFILE_DIR/$prefix.lock -if [ -x "$FLOCK" ]; then - ($FLOCK --exclusive --wait 60 9 || exit 1 - cosmos $* update - cosmos $* apply - )9>/var/lock/run-cosmos -else - cosmos $* update - cosmos $* apply -fi + # create lock file + eval "exec $fd>$lock_file" + + # acquier the lock + flock -n $fd \ + && return 0 \ + || return 1 +} + +eexit() { + local error_str="$@" + + echo $error_str + exit 1 +} -touch /var/run/last-cosmos-ok.stamp +main () { + lock $PROGNAME || eexit "Only one instance of $PROGNAME can run at one time." + cosmos $* update + cosmos $* apply -find /var/lib/puppet/reports/ -type f -mtime +10 | xargs rm -f + touch /var/run/last-cosmos-ok.stamp + + find /var/lib/puppet/reports/ -type f -mtime +10 | xargs rm -f +} + +main $* + +if [ -f /cosmos-reboot ]; then + rm -f /cosmos-reboot + reboot +fi diff --git a/global/overlay/usr/local/sbin/cosmos_vm b/global/overlay/usr/local/sbin/cosmos_vm index bf27576..5eec8f7 100755 --- a/global/overlay/usr/local/sbin/cosmos_vm +++ b/global/overlay/usr/local/sbin/cosmos_vm @@ -9,8 +9,8 @@ hostname="default" bridge="br0" cpus="1" mem="1024" -repo="git://code.mnt.se/mnt-cosmos.git" -tag="eduid-cosmos" +repo="https://yourhost/myproj-cosmos.git" +tag="cosmos-ops" ip="" gateway="" netmask="" @@ -63,7 +63,7 @@ ssh_authorized_keys: runcmd: - ["mkdir","/tmp/seed"] - ["mount","/dev/vdb","/tmp/seed"] - - ["cp","/tmp/seed/bootstrap-cosmos.sh","/tmp/seed/cosmos_1.2-2_all.deb","/root"] + - ["cp","/tmp/seed/bootstrap-cosmos.sh","/tmp/seed/cosmos_1.5-1_all.deb","/root"] - ["cd","/root"] - "cd /root && /root/bootstrap-cosmos.sh ${hostname} ${repo} ${tag}" @@ -112,7 +112,7 @@ fi mcopy -i ${seed} ${user_data} ::user-data 2>/dev/null mcopy -i ${seed} ${meta_data} ::meta-data 2>/dev/null -mcopy -i ${seed} /etc/cosmos/apt/bootstrap-cosmos.sh /etc/cosmos/apt/cosmos_1.2-2_all.deb :: +mcopy -i ${seed} /etc/cosmos/apt/bootstrap-cosmos.sh /etc/cosmos/apt/cosmos_1.5-1_all.deb :: mv ${seed} /var/lib/libvirt/images/ virsh pool-refresh default |