From 1e0ef56c6d8e5d9bf5366b3aa17d0353f5f2c619 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Dec 05 2018 16:26:12 +0000 Subject: Prevent running playbooks on localhost. Inventory provisioners may fail. If provision script fail playbook may run on localhost system. This change will prevent running playbook on localhost when one of inventory script fail. Signed-off-by: Andrei Stepanov --- diff --git a/inventory/standard-inventory-docker b/inventory/standard-inventory-docker index 10d75ba..f8441aa 100755 --- a/inventory/standard-inventory-docker +++ b/inventory/standard-inventory-docker @@ -18,6 +18,20 @@ import distutils.util import logging +def print_bad_inventory(exctype, value, tb): + """Print empty inventory on any uncatched exception. This will prevent + running playbook on localhost. + """ + hosts = ["fake_hostname_failed_inventory"] + bad_inv = {"localhost": {"hosts": hosts, "vars": {}}, + "subjects": {"hosts": hosts, "vars": {}}, + "_meta": {"hostvars": {}}} + sys.stdout.write(json.dumps(bad_inv, indent=4, separators=(',', ': '))) + + +sys.excepthook = print_bad_inventory + + EMPTY_INVENTORY = {} LOG_FILE = "default_provisioners.log" diff --git a/inventory/standard-inventory-local b/inventory/standard-inventory-local index 0c579cf..0f777a0 100755 --- a/inventory/standard-inventory-local +++ b/inventory/standard-inventory-local @@ -11,6 +11,21 @@ import logging import errno import distutils.util + +def print_bad_inventory(exctype, value, tb): + """Print empty inventory on any uncatched exception. This will prevent + running playbook on localhost. + """ + hosts = ["fake_hostname_failed_inventory"] + bad_inv = {"localhost": {"hosts": hosts, "vars": {}}, + "subjects": {"hosts": hosts, "vars": {}}, + "_meta": {"hostvars": {}}} + sys.stdout.write(json.dumps(bad_inv, indent=4, separators=(',', ': '))) + + +sys.excepthook = print_bad_inventory + + EMPTY_INVENTORY = {} LOG_FILE = "default_provisioners.log" diff --git a/inventory/standard-inventory-qcow2 b/inventory/standard-inventory-qcow2 index c93e275..1a6e10d 100755 --- a/inventory/standard-inventory-qcow2 +++ b/inventory/standard-inventory-qcow2 @@ -21,6 +21,21 @@ import functools import yaml + +def print_bad_inventory(exctype, value, tb): + """Print empty inventory on any uncatched exception. This will prevent + running playbook on localhost. + """ + hosts = ["fake_hostname_failed_inventory"] + bad_inv = {"localhost": {"hosts": hosts, "vars": {}}, + "subjects": {"hosts": hosts, "vars": {}}, + "_meta": {"hostvars": {}}} + sys.stdout.write(json.dumps(bad_inv, indent=4, separators=(',', ': '))) + + +sys.excepthook = print_bad_inventory + + IDENTITY = """ -----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA1DrTSXQRF8isQQfPfK3U+eFC4zBrjur+Iy15kbHUYUeSHf5S diff --git a/inventory/standard-inventory-rpm b/inventory/standard-inventory-rpm index ff007ef..bbaf7f7 100755 --- a/inventory/standard-inventory-rpm +++ b/inventory/standard-inventory-rpm @@ -14,6 +14,21 @@ import logging import errno import distutils.util + +def print_bad_inventory(exctype, value, tb): + """Print empty inventory on any uncatched exception. This will prevent + running playbook on localhost. + """ + hosts = ["fake_hostname_failed_inventory"] + bad_inv = {"localhost": {"hosts": hosts, "vars": {}}, + "subjects": {"hosts": hosts, "vars": {}}, + "_meta": {"hostvars": {}}} + sys.stdout.write(json.dumps(bad_inv, indent=4, separators=(',', ': '))) + + +sys.excepthook = print_bad_inventory + + EMPTY_INVENTORY = {} LOG_FILE = "default_provisioners.log"