PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/chef.py |
""" Execute Chef client runs ===================================================================== Run chef-client or chef-solo .. code-block:: yaml my-chef-run: chef.client: - override-runlist: 'demo1,demo2' - server: 'https://chef.domain.com' default-chef-run: chef.client: [] my-solo-run: chef.solo: - environment: dev """ import re def __virtual__(): """ Only load if Chef execution module is available. """ if "chef.client" in __salt__: return True return (False, "chef module could not be loaded") def client(name, **kwargs): """ name Unique identifier for the state. Does not affect the Chef run. server The chef server URL client_key Set the client key file location config The configuration file to use config-file-jail Directory under which config files are allowed to be loaded (no client.rb or knife.rb outside this path will be loaded). environment Set the Chef Environment on the node group Group to set privilege to json-attributes Load attributes from a JSON file or URL localmode Point chef-client at local repository if True log_level Set the log level (debug, info, warn, error, fatal) logfile Set the log file location node-name The node name for this client override-runlist Replace current run list with specified items for a single run pid Set the PID file location, defaults to /tmp/chef-client.pid run-lock-timeout Set maximum duration to wait for another client run to finish, default is indefinitely. runlist Permanently replace current run list with specified items user User to set privilege to validation_key Set the validation key file location, used for registering new clients """ return _run(name, "chef.client", kwargs) def solo(name, **kwargs): """ name Unique identifier for the state. Does not affect the Chef run. config The configuration file to use environment Set the Chef Environment on the node group Group to set privilege to json-attributes Load attributes from a JSON file or URL log_level Set the log level (debug, info, warn, error, fatal) logfile Set the log file location node-name The node name for this client override-runlist Replace current run list with specified items for a single run recipe-url Pull down a remote gzipped tarball of recipes and untar it to the cookbook cache run-lock-timeout Set maximum duration to wait for another client run to finish, default is indefinitely. user User to set privilege to """ return _run(name, "chef.solo", kwargs) def _run(name, mod, kwargs): ret = {"name": name, "changes": {}, "result": None, "comment": ""} result = __salt__[mod](whyrun=__opts__["test"], **kwargs) if result["retcode"] == 0: if _has_changes(result["stdout"]): # Populate the 'changes' dict if anything changed ret["changes"]["summary"] = _summary(result["stdout"]) ret["result"] = True if not __opts__["test"] else None else: ret["result"] = True else: ret["result"] = False ret["comment"] = "\n".join([result["stdout"], result["stderr"]]) return ret def _summary(stdout): return stdout.splitlines()[-1] def _has_changes(stdout): regex = re.search( r"(Chef Client finished|Chef Infra Client finished|Infra Phase complete), (\d+)", _summary(stdout), re.IGNORECASE, ) return int(regex.group(2)) > 0