diff options
author | xiaofengw-vmware <42736879+xiaofengw-vmware@users.noreply.github.com> | 2020-07-21 23:52:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-21 09:52:29 -0600 |
commit | 995f8adf00509e5d2aefc9f0680c3c4894ae6666 (patch) | |
tree | 77d3f08cd1fe9280ef509240000cc35e55dd7037 /cloudinit/sources/helpers | |
parent | ebc145be5e15c64a31ba496625727a7308a57baf (diff) | |
download | vyos-cloud-init-995f8adf00509e5d2aefc9f0680c3c4894ae6666.tar.gz vyos-cloud-init-995f8adf00509e5d2aefc9f0680c3c4894ae6666.zip |
VMware: Support parsing DEFAULT-RUN-POST-CUST-SCRIPT (#441)
Add support for VMware's vCD configuration setting DEFAULT-RUN-POST-CUST-SCRIPT.
When set True, it will default vms to run post customization scripts if the VM has not been configured in VMTools with "enable-custom-scripts" set False.
Add datasource documentation with a bit more context about this interaction on VMware products.
With this fix, the behavior will be:
* If VM administrator doesn't want others to execute a script on this VM, VMtools can set "enable-custom-scripts" to false from the utility "vmware-toolbox-cmd".
* If VM administrator doesn't set value to "enable-custom-scripts", then by default this script is disabled for security purpose.
* For VMware's vCD product , the preference is to enable the script if "enable-custom-scripts" is not set. vCD will generate a configuration file with "DEFAULT-RUN-POST-CUST-SCRIPT" set to true. This flag works for both VMware customization engine and cloud-init.
Diffstat (limited to 'cloudinit/sources/helpers')
-rw-r--r-- | cloudinit/sources/helpers/vmware/imc/config.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/cloudinit/sources/helpers/vmware/imc/config.py b/cloudinit/sources/helpers/vmware/imc/config.py index f2a81416..7109aef3 100644 --- a/cloudinit/sources/helpers/vmware/imc/config.py +++ b/cloudinit/sources/helpers/vmware/imc/config.py @@ -26,6 +26,7 @@ class Config(object): TIMEZONE = 'DATETIME|TIMEZONE' UTC = 'DATETIME|UTC' POST_GC_STATUS = 'MISC|POST-GC-STATUS' + DEFAULT_RUN_POST_SCRIPT = 'MISC|DEFAULT-RUN-POST-CUST-SCRIPT' def __init__(self, configFile): self._configFile = configFile @@ -115,4 +116,18 @@ class Config(object): raise ValueError('PostGcStatus value should be yes/no') return postGcStatus == 'yes' + @property + def default_run_post_script(self): + """ + Return enable-custom-scripts default value if enable-custom-scripts + is absent in VM Tools configuration + """ + defaultRunPostScript = self._configFile.get( + Config.DEFAULT_RUN_POST_SCRIPT, + 'no') + defaultRunPostScript = defaultRunPostScript.lower() + if defaultRunPostScript not in ('yes', 'no'): + raise ValueError('defaultRunPostScript value should be yes/no') + return defaultRunPostScript == 'yes' + # vi: ts=4 expandtab |