003 File Manager
Current Path:
/usr/local/lib/python3.8/site-packages/salt/pillar
usr
/
local
/
lib
/
python3.8
/
site-packages
/
salt
/
pillar
/
📁
..
📄
__init__.py
(48.72 KB)
📁
__pycache__
📄
azureblob.py
(13.88 KB)
📄
cmd_json.py
(787 B)
📄
cmd_yaml.py
(893 B)
📄
cmd_yamlex.py
(674 B)
📄
cobbler.py
(1.64 KB)
📄
confidant.py
(3.29 KB)
📄
consul_pillar.py
(11.61 KB)
📄
csvpillar.py
(1.85 KB)
📄
digicert.py
(1007 B)
📄
django_orm.py
(7.74 KB)
📄
ec2_pillar.py
(10.12 KB)
📄
etcd_pillar.py
(2.36 KB)
📄
extra_minion_data_in_pillar.py
(2.18 KB)
📄
file_tree.py
(18.03 KB)
📄
foreman.py
(3.66 KB)
📄
git_pillar.py
(19.61 KB)
📄
gpg.py
(560 B)
📄
hg_pillar.py
(3.19 KB)
📄
hiera.py
(846 B)
📄
http_json.py
(2.43 KB)
📄
http_yaml.py
(2.43 KB)
📄
libvirt.py
(5.78 KB)
📄
makostack.py
(21.99 KB)
📄
mongo.py
(5.6 KB)
📄
mysql.py
(3.76 KB)
📄
nacl.py
(744 B)
📄
netbox.py
(29.5 KB)
📄
neutron.py
(2.41 KB)
📄
nodegroups.py
(1.7 KB)
📄
pepa.py
(20.98 KB)
📄
pillar_ldap.py
(10.95 KB)
📄
postgres.py
(2.82 KB)
📄
puppet.py
(846 B)
📄
reclass_adapter.py
(4 KB)
📄
redismod.py
(3.28 KB)
📄
rethinkdb_pillar.py
(4.71 KB)
📄
s3.py
(14.4 KB)
📄
saltclass.py
(1.49 KB)
📄
sql_base.py
(15.38 KB)
📄
sqlcipher.py
(3.42 KB)
📄
sqlite3.py
(2.67 KB)
📄
stack.py
(22.07 KB)
📄
svn_pillar.py
(5.74 KB)
📄
varstack_pillar.py
(1.1 KB)
📄
vault.py
(4.03 KB)
📄
venafi.py
(966 B)
📄
virtkey.py
(586 B)
📄
vmware_pillar.py
(16.83 KB)
Editing: foreman.py
""" A module to pull data from Foreman via its API into the Pillar dictionary Configuring the Foreman ext_pillar ================================== Set the following Salt config to setup Foreman as external pillar source: .. code-block:: yaml ext_pillar: - foreman: key: foreman # Nest results within this key only: ['hostgroup_name', 'parameters'] # Add only these keys to pillar foreman.url: https://example.com/foreman_api foreman.user: username # default is admin foreman.password: password # default is changeme The following options are optional: .. code-block:: yaml foreman.api: apiversion # default is 2 (1 is not supported yet) foreman.verifyssl: False # default is True foreman.certfile: /etc/ssl/certs/mycert.pem # default is None foreman.keyfile: /etc/ssl/private/mykey.pem # default is None foreman.cafile: /etc/ssl/certs/mycert.ca.pem # default is None foreman.lookup_parameters: True # default is True An alternative would be to use the Foreman modules integrating Salt features in the Smart Proxy and the webinterface. Further information can be found on `GitHub <https://github.com/theforeman/foreman_salt>`_. Module Documentation ==================== """ import logging try: import requests HAS_REQUESTS = True except ImportError: HAS_REQUESTS = False __opts__ = { "foreman.url": "http://foreman/api", "foreman.user": "admin", "foreman.password": "changeme", "foreman.api": 2, "foreman.verifyssl": True, "foreman.certfile": None, "foreman.keyfile": None, "foreman.cafile": None, "foreman.lookup_parameters": True, } # Set up logging log = logging.getLogger(__name__) # Declare virtualname __virtualname__ = "foreman" def __virtual__(): """ Only return if all the modules are available """ if not HAS_REQUESTS: return False return __virtualname__ def ext_pillar(minion_id, pillar, key=None, only=()): # pylint: disable=W0613 """ Read pillar data from Foreman via its API. """ url = __opts__["foreman.url"] user = __opts__["foreman.user"] password = __opts__["foreman.password"] api = __opts__["foreman.api"] verify = __opts__["foreman.verifyssl"] certfile = __opts__["foreman.certfile"] keyfile = __opts__["foreman.keyfile"] cafile = __opts__["foreman.cafile"] lookup_parameters = __opts__["foreman.lookup_parameters"] log.info("Querying Foreman at %r for information for %r", url, minion_id) try: # Foreman API version 1 is currently not supported if api != 2: log.error( "Foreman API v2 is supported only, please specify" "version 2 in your Salt master config" ) raise Exception headers = {"accept": "version=" + str(api) + ",application/json"} if verify and cafile is not None: verify = cafile resp = requests.get( url + "/hosts/" + minion_id, auth=(user, password), headers=headers, verify=verify, cert=(certfile, keyfile), ) result = resp.json() log.debug("Raw response of the Foreman request is %r", result) if lookup_parameters: parameters = dict() for param in result["all_parameters"]: parameters.update({param["name"]: param["value"]}) result["parameters"] = parameters if only: result = {k: result[k] for k in only if k in result} except Exception: # pylint: disable=broad-except log.exception("Could not fetch host data via Foreman API:") return {} if key: result = {key: result} return result
Upload File
Create Folder