Merge pull request #36 from SUNET/feature-ft-drop_make_db
remove 'make db'
This commit is contained in:
commit
ef4e27e337
8
Makefile
8
Makefile
|
@ -6,13 +6,7 @@ cosmos:
|
|||
upgrade:
|
||||
fab upgrade
|
||||
|
||||
db: global/overlay/etc/puppet/cosmos-db.yaml
|
||||
|
||||
global/overlay/etc/puppet/cosmos-db.yaml: global/overlay/etc/puppet/cosmos-rules.yaml
|
||||
@python ./fabfile/db.py > global/overlay/etc/puppet/cosmos-db.yaml
|
||||
@git add global/overlay/etc/puppet/cosmos-db.yaml && git commit -m "update db" global/overlay/etc/puppet/cosmos-db.yaml
|
||||
|
||||
tag: db
|
||||
tag:
|
||||
./bump-tag
|
||||
|
||||
test_in_docker:
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
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 _load_db():
|
||||
rules = dict()
|
||||
rules_file = "cosmos-rules.yaml";
|
||||
if os.path.exists(rules_file):
|
||||
with open(rules_file) as fd:
|
||||
rules.update(yaml.load(fd))
|
||||
|
||||
all_hosts = _all_hosts()
|
||||
|
||||
members = dict()
|
||||
for node_name in all_hosts:
|
||||
for reg,cls in rules.iteritems():
|
||||
if re.match(reg,node_name):
|
||||
for cls_name in cls.keys():
|
||||
h = members.get(cls_name,[])
|
||||
h.append(node_name)
|
||||
members[cls_name] = h
|
||||
members['all'] = all_hosts
|
||||
|
||||
classes = dict()
|
||||
for node_name in all_hosts:
|
||||
node_classes = dict()
|
||||
for reg,cls in rules.iteritems():
|
||||
if re.match(reg,node_name):
|
||||
node_classes.update(cls)
|
||||
classes[node_name] = node_classes
|
||||
|
||||
# Sort member lists for a more easy to read diff
|
||||
for cls in members.keys():
|
||||
members[cls].sort()
|
||||
|
||||
return dict(classes=classes,members=members)
|
||||
|
||||
_db = None
|
||||
def cosmos_db():
|
||||
global _db
|
||||
if _db is None:
|
||||
_db = _load_db()
|
||||
return _db
|
||||
|
||||
if __name__ == '__main__':
|
||||
print yaml.dump(cosmos_db())
|
|
@ -1,18 +1,37 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Puppet 'External Node Classifier' to tell puppet what classes to apply to this node.
|
||||
#
|
||||
# Docs: https://puppet.com/docs/puppet/5.3/nodes_external.html
|
||||
#
|
||||
|
||||
import sys
|
||||
import yaml
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
import yaml
|
||||
|
||||
rules_path = os.environ.get("COSMOS_RULES_PATH", "/etc/puppet")
|
||||
|
||||
node_name = sys.argv[1]
|
||||
|
||||
db_file = os.environ.get("COSMOS_ENC_DB","/etc/puppet/cosmos-db.yaml")
|
||||
db = dict(classes=dict())
|
||||
rules = dict()
|
||||
for p in rules_path.split(":"):
|
||||
rules_file = os.path.join(p, "cosmos-rules.yaml")
|
||||
if os.path.exists(rules_file):
|
||||
with open(rules_file) as fd:
|
||||
rules.update(yaml.safe_load(fd))
|
||||
|
||||
if os.path.exists(db_file):
|
||||
with open(db_file) as fd:
|
||||
db.update(yaml.load(fd))
|
||||
found = False
|
||||
classes = dict()
|
||||
for reg, cls in rules.items():
|
||||
if re.search(reg, node_name):
|
||||
classes.update(cls)
|
||||
found = True
|
||||
|
||||
print(yaml.dump(dict(classes=db['classes'].get(node_name,dict()),parameters=dict(roles=db.get('members',[])))))
|
||||
if not found:
|
||||
sys.stderr.write(f"{sys.argv[0]}: {node_name} not found in cosmos-rules.yaml\n")
|
||||
|
||||
print("---\n" + yaml.dump(dict(classes=classes)))
|
||||
|
||||
sys.exit(0)
|
||||
|
|
|
@ -17,15 +17,14 @@ PUPPET_ARGS=${PUPPET_ARGS-"--verbose"}
|
|||
|
||||
# Check if cosmos or puppet is already running on host
|
||||
echo "Checking if puppet or cosmos is already running..."
|
||||
ssh root@$HOSTNAME ps aux | egrep -v "grep|edit-secrets|gpg-agent" | egrep -q "cosmos|puppet"
|
||||
ssh root@"$HOSTNAME" ps aux | grep -Ev "grep|edit-secrets|gpg-agent" | grep -Eq "cosmos|puppet"
|
||||
|
||||
if [ $? -eq 1 ]
|
||||
then
|
||||
echo "Copying files to host..."
|
||||
rsync -av --exclude '*~' global/overlay/etc/puppet/cosmos-rules.yaml root@$HOSTNAME:/etc/puppet/cosmos-rules.yaml
|
||||
rsync -av --exclude '*~' global/overlay/etc/puppet/manifests/cosmos-site.pp root@$HOSTNAME:/etc/puppet/manifests/cosmos-site.pp
|
||||
rsync -av --exclude '*~' global/overlay/etc/puppet/cosmos-db.yaml root@$HOSTNAME:/etc/puppet/cosmos-db.yaml
|
||||
rsync -av --exclude '*~' global/overlay/etc/hiera/data/common.yaml root@$HOSTNAME:/etc/hiera/data/common.yaml
|
||||
rsync -av --exclude '*~' global/overlay/etc/puppet/cosmos-rules.yaml root@"$HOSTNAME":/etc/puppet/cosmos-rules.yaml
|
||||
rsync -av --exclude '*~' global/overlay/etc/puppet/manifests/cosmos-site.pp root@"$HOSTNAME":/etc/puppet/manifests/cosmos-site.pp
|
||||
rsync -av --exclude '*~' global/overlay/etc/hiera/data/common.yaml root@"$HOSTNAME":/etc/hiera/data/common.yaml
|
||||
|
||||
# Test if the user has symlinked puppet-sunet correctly
|
||||
# by first checking if the link exits and then whether
|
||||
|
@ -37,7 +36,7 @@ then
|
|||
fi
|
||||
|
||||
echo "Running puppet apply..."
|
||||
ssh root@$HOSTNAME /usr/bin/puppet apply $PUPPET_ARGS /etc/puppet/manifests/cosmos-site.pp
|
||||
ssh root@"$HOSTNAME" /usr/bin/puppet apply $PUPPET_ARGS /etc/puppet/manifests/cosmos-site.pp
|
||||
else
|
||||
echo "Cosmos or puppet already running. Exiting."
|
||||
exit 1
|
||||
|
|
Loading…
Reference in a new issue