cloudinit: Add disable=yes|no

Cli option to permanently disable cloud-init after first boot by user request.
Handled so that bare --cloud-init defaults to --cloud-init root-password=generate,disable=yes.

Signed-off-by: Athina Plaskasoviti <athina.plaskasoviti@gmail.com>
This commit is contained in:
Athina Plaskasoviti 2019-07-03 09:06:21 +03:00 committed by Cole Robinson
parent ec47c9dafc
commit 0bbfc80b68
2 changed files with 7 additions and 4 deletions

View File

@ -1627,14 +1627,16 @@ class ParserCloudInit(VirtCLIParser):
def _init_class(cls, **kwargs):
VirtCLIParser._init_class(**kwargs)
cls.add_arg("root-password", "root_password")
cls.add_arg("disable", "disable", is_onoff=True)
def parse_cloud_init(optstr):
ret = CloudInitData()
if optstr == 1:
# This means bare --cloud-init, so there's nothing to parse.
log.warning("Defaulting to --cloud-init root-password=generate")
log.warning("Defaulting to --cloud-init root-password=generate,disable=yes")
ret.root_password = "generate"
ret.disable = True
return ret
parser = ParserCloudInit(optstr)

View File

@ -6,6 +6,7 @@ from ..logger import log
class CloudInitData():
disable = None
root_password = None
@ -49,11 +50,11 @@ def create_userdata(scratchdir, cloudinit_data, username=None, password=None):
content += " root:%s\n" % rootpass
content += " expire: True\n"
content += "runcmd:\n"
content += "- [ sudo, touch, /etc/cloud/cloud-init.disabled ]\n"
if cloudinit_data.disable:
content += "runcmd:\n"
content += "- [ sudo, touch, /etc/cloud/cloud-init.disabled ]\n"
log.debug("Generated cloud-init userdata:\n%s", content)
fileobj = tempfile.NamedTemporaryFile(
prefix="virtinst-", suffix="-userdata",
dir=scratchdir, delete=False)