diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-01-02 03:02:30 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-01-02 03:02:30 +0100 |
commit | 6b78aa90f6c162039736fd88b29dbef4311d6d54 (patch) | |
tree | a842cc49043cfd7cb367c5f05ef4ec25478ad319 /modules | |
parent | Only run nspawn stuff if machine not running. (diff) | |
download | webdav_server-6b78aa90f6c162039736fd88b29dbef4311d6d54.tar.gz webdav_server-6b78aa90f6c162039736fd88b29dbef4311d6d54.tar.xz |
Improve node classifier.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/profiles/files/node-classifier.py | 25 | ||||
-rw-r--r-- | modules/profiles/manifests/puppetserver.pp | 11 |
2 files changed, 34 insertions, 2 deletions
diff --git a/modules/profiles/files/node-classifier.py b/modules/profiles/files/node-classifier.py index 8c28ddb..7fc096f 100644 --- a/modules/profiles/files/node-classifier.py +++ b/modules/profiles/files/node-classifier.py @@ -2,17 +2,38 @@ import yaml import sys +import configparser # https://puppet.com/docs/puppet/7/nodes_external.html -with open('/nodes.yaml') as f: - data = yaml.load(f) def main(args): if len(args) == 1: print('usage ./node-classifier <node-name>') return + parser = configparser.ConfigParser() + conf_file = '/etc/node-classifier.ini' + if parser.read(conf_file) != [conf_file]: + print(f'Configuration file missing, expected {conf_file}') + return 1 + + try: + fmt = parser.get('common', 'node_fmt') + if fmt != 'yaml': + print(f'Unknown format {fmt}') + return 1 + filename = parser.get('common', 'nodes') + except configparser.NoSectionError as e: + print(e) + return 1 + except NoOptionError as e: + print(e) + return 1 + + with open(filename) as f: + data = yaml.load(f) + nodename = sys.argv[1] instance = data.get(nodename) if not instance: diff --git a/modules/profiles/manifests/puppetserver.pp b/modules/profiles/manifests/puppetserver.pp index 0ba244d..f8fc47c 100644 --- a/modules/profiles/manifests/puppetserver.pp +++ b/modules/profiles/manifests/puppetserver.pp @@ -8,6 +8,17 @@ class profiles::puppetserver { ensure_packages(['python3-yaml']) + inifile::create_ini_settings( + { common => { + node_fmt => yaml, + nodes => '/nodes.yaml', + }, + }, + { + path => '/etc/node-classifier.ini', + } + ) + file { '/usr/libexec/external-node-classifier': mode => '0555', source => 'puppet:///modules/profiles/node-classifier.py', |