summaryrefslogtreecommitdiff
path: root/fabfile
diff options
context:
space:
mode:
Diffstat (limited to 'fabfile')
-rw-r--r--fabfile/__init__.py53
-rw-r--r--fabfile/__init__.pycbin0 -> 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
new file mode 100644
index 0000000..d66ff5d
--- /dev/null
+++ b/fabfile/__init__.pyc
Binary files differ