diff options
Diffstat (limited to 'fabfile')
-rw-r--r-- | fabfile/__init__.py | 53 | ||||
-rw-r--r-- | fabfile/__init__.pyc | bin | 0 -> 2999 bytes |
2 files changed, 53 insertions, 0 deletions
diff --git a/fabfile/__init__.py b/fabfile/__init__.py new file mode 100644 index 0000000..5574f3a --- /dev/null +++ b/fabfile/__init__.py @@ -0,0 +1,53 @@ +from fabric.api import run,env +from fabric.operations import get +import os +import yaml +import re + +def _all_hosts(): + return filter(lambda fn: '.' in fn and not fn.startswith('.') and os.path.isdir(fn),os.listdir(".")) + +def _roledefs(): + rules = dict() + + rules_file = "cosmos-rules.yaml"; + if os.path.exists(rules_file): + with open(rules_file) as fd: + rules.update(yaml.load(fd)) + + roles = dict() + for node_name in _all_hosts(): + for reg,cls in rules.iteritems(): + if re.search(reg,node_name): + for cls_name in cls.keys(): + h = roles.get(cls_name,[]) + h.append(node_name) + roles[cls_name] = h + return roles + +env.user = 'root' +env.timeout = 30 +env.connection_attempts = 3 +env.warn_only = True +env.skip_bad_hosts = True +env.roledefs = _roledefs() + +print repr(env.roledefs) + +def all(): + env.hosts = _all_hosts() + +def cosmos(): + run("cosmos update && cosmos apply"); + +def upgrade(): + run("apt-get -qq update && apt-get -y -q dist-upgrade"); + +def facts(): + get("/var/run/facts.yaml",local_path="facts/%(host)s.yaml") + +def chassis(): + run("ipmi-chassis --get-chassis-status") + +def newvm(fqdn,ip,domain): + run("vmbuilder kvm ubuntu --domain %s --dest /var/lib/libvirt/images/%s.img --arch x86_64 --hostname %s --mem 512 --ip %s --addpkg openssh-server" % (domain,fqdn,fqdn,ip)) diff --git a/fabfile/__init__.pyc b/fabfile/__init__.pyc Binary files differnew file mode 100644 index 0000000..d66ff5d --- /dev/null +++ b/fabfile/__init__.pyc |