Simone Tiraboschi has uploaded a new change for review. Change subject: packaging: setup: using cloud-init to run engine-setup ......................................................................
packaging: setup: using cloud-init to run engine-setup Using cloud-init to run engine-setup on the engine appliance Change-Id: I305232fc44a524fd53e2d7fbd819ab5b95d4931c Signed-off-by: Simone Tiraboschi <[email protected]> --- M src/ovirt_hosted_engine_setup/constants.py M src/plugins/ovirt-hosted-engine-setup/vm/cloud_init.py 2 files changed, 76 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-hosted-engine-setup refs/changes/46/40546/1 diff --git a/src/ovirt_hosted_engine_setup/constants.py b/src/ovirt_hosted_engine_setup/constants.py index eac86fa..8dffc65 100644 --- a/src/ovirt_hosted_engine_setup/constants.py +++ b/src/ovirt_hosted_engine_setup/constants.py @@ -314,6 +314,8 @@ CLOUD_INIT_GENERATE = 'generate' CLOUD_INIT_SKIP = 'skip' CLOUD_INIT_EXISTING = 'existing' + CLOUD_INIT_APPLIANCEANSWERS = '/root/ovirt-engine-answers' + CLOUD_INIT_HEANSWERS = '/root/heanswers.conf' @util.export @@ -691,9 +693,25 @@ def CDROM(self): return 'OVEHOSTED_VM/vmCDRom' - GENERATE_CLOUD_INIT_ISO = 'OVEHOSTED_VM/cloudInitISO' + @ohostedattrs( + answerfile=True, + ) + def GENERATE_CLOUD_INIT_ISO(self): + return 'OVEHOSTED_VM/cloudInitISO' + CLOUD_INIT_ROOTPWD = 'OVEHOSTED_VM/cloudinitRootPwd' - CLOUD_INIT_INSTANCE_HOSTNAME = 'OVEHOSTED_VM/cloudinitInstanceHostName' + + @ohostedattrs( + answerfile=True, + ) + def CLOUD_INIT_INSTANCE_HOSTNAME(self): + return 'OVEHOSTED_VM/cloudinitInstanceHostName' + + @ohostedattrs( + answerfile=True, + ) + def CLOUD_INIT_EXECUTE_ESETUP(self): + return 'OVEHOSTED_VM/cloudinitExecuteEngineSetup' @ohostedattrs( answerfile=True, diff --git a/src/plugins/ovirt-hosted-engine-setup/vm/cloud_init.py b/src/plugins/ovirt-hosted-engine-setup/vm/cloud_init.py index 99aaa42..a1bd735 100644 --- a/src/plugins/ovirt-hosted-engine-setup/vm/cloud_init.py +++ b/src/plugins/ovirt-hosted-engine-setup/vm/cloud_init.py @@ -71,6 +71,10 @@ ohostedcons.VMEnv.CLOUD_INIT_INSTANCE_HOSTNAME, None ) + self.environment.setdefault( + ohostedcons.VMEnv.CLOUD_INIT_EXECUTE_ESETUP, + None + ) @plugin.event( stage=plugin.Stages.STAGE_SETUP, @@ -100,6 +104,7 @@ self.environment[ohostedcons.VMEnv.GENERATE_CLOUD_INIT_ISO], self.environment[ohostedcons.VMEnv.CLOUD_INIT_ROOTPWD], self.environment[ohostedcons.VMEnv.CLOUD_INIT_INSTANCE_HOSTNAME], + self.environment[ohostedcons.VMEnv.CLOUD_INIT_EXECUTE_ESETUP], ]) == set([None]) if interactive: @@ -164,6 +169,7 @@ self.environment[ ohostedcons.VMEnv.CLOUD_INIT_INSTANCE_HOSTNAME ] = False + while self.environment[ ohostedcons.VMEnv.CLOUD_INIT_ROOTPWD ] is None: @@ -197,12 +203,31 @@ self.environment[ ohostedcons.VMEnv.CLOUD_INIT_ROOTPWD ] = False + + self.environment[ + ohostedcons.VMEnv.CLOUD_INIT_EXECUTE_ESETUP + ] = self.dialog.queryString( + name='CI_EXECUTE_ESETUP', + note=_( + 'Automatically execute ' + 'engine-setup on the engine appliance on first boot ' + '(@VALUES@)[@DEFAULT@]? ' + ), + prompt=True, + validValues=(_('Yes'), _('No')), + caseSensitive=False, + default=_('Yes') + ) == _('Yes').lower() + if ( self.environment[ ohostedcons.VMEnv.CLOUD_INIT_ROOTPWD ] or self.environment[ ohostedcons.VMEnv.CLOUD_INIT_INSTANCE_HOSTNAME + ] or + self.environment[ + ohostedcons.VMEnv.CLOUD_INIT_EXECUTE_ESETUP ] ): self.environment[ @@ -216,12 +241,15 @@ ) def _misc(self): self._directory_name = tempfile.mkdtemp() - user_data = '' + user_data = ( + '#cloud-config' + '# vim: syntax=yaml' + '#' + ) f_user_data = os.path.join(self._directory_name, 'user-data') if self.environment[ohostedcons.VMEnv.CLOUD_INIT_ROOTPWD]: # TODO: use salted hashed password - user_data = ( - '#cloud-config\n' + user_data += ( 'ssh_pwauth: True\n' 'chpasswd:\n' ' list: |\n' @@ -232,6 +260,31 @@ ohostedcons.VMEnv.CLOUD_INIT_ROOTPWD ], ) + + if self.environment[ohostedcons.VMEnv.CLOUD_INIT_EXECUTE_ESETUP]: + user_data += ( + 'write_files:\n' + ' - content: |\n' + ' OVESETUP_CONFIG/adminPassword={adminpwd}\n' + ' OVESETUP_CONFIG/fqdn={fqdn}\n' + ' path: {heanswers}\n' + ' owner: root:root\n' + ' permissions: \'0640\'\n' + 'runcmd:\n' + ' - [ /usr/bin/engine-setup, --offline, ' + '--config-append, {applianceanswers},' + '--config-append, {heanswers} ]\n' + ).format( + fqdn=self.environment[ + ohostedcons.NetworkEnv.OVIRT_HOSTED_ENGINE_FQDN + ], + password=self.environment[ + ohostedcons.EngineEnv.ADMIN_PASSWORD + ], + applianceanswers=ohostedcons.Const.CLOUD_INIT_APPLIANCEANSWERS, + heanswers=ohostedcons.Const.CLOUD_INIT_HEANSWERS, + ) + f = open(f_user_data, 'w') f.write(user_data) f.close() -- To view, visit https://gerrit.ovirt.org/40546 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I305232fc44a524fd53e2d7fbd819ab5b95d4931c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-hosted-engine-setup Gerrit-Branch: master Gerrit-Owner: Simone Tiraboschi <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
