From f94b16cea578062c8abf3dd3a1ada234fa671cd3 Mon Sep 17 00:00:00 2001 From: Robert Schweikert Date: Thu, 15 Sep 2016 14:27:55 -0400 Subject: dmidecode: run dmidecode only on i?86 or x86_64 arch. Dmidecode is not going to run successfully on anything other than an x86 or x86_64, just avoid running it anywhere else. --- cloudinit/util.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cloudinit/util.py b/cloudinit/util.py index 7c37eb8f..6c5cf741 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -2337,7 +2337,8 @@ def read_dmi_data(key): # running dmidecode can be problematic on some arches (LP: #1243287) uname_arch = os.uname()[4] - if uname_arch.startswith("arm") or uname_arch == "aarch64": + if not (uname_arch == "x86_64" or + (uname_arch.startswith("i") and uname_arch[2:] == "86")): LOG.debug("dmidata is not supported on %s", uname_arch) return None -- cgit v1.2.3 From 80f5ec4be0f781b26eca51d90d51abfab396b3f6 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 19 Sep 2016 11:48:54 -0400 Subject: Adjust mounts and disk configuration for systemd. The end result of all of these changes is to get mounts managed by cloud-init to occur only after cloud-init.service is done. We need to do that so that filesystems that are set up by cloud-init (in disk_setup) do not get mounted by stale entries in /etc/fstab before the setup occurs. This can occur in 2 ways: a.) new instance with old /etc/fstab b.) same instance where disk needs adjusting (Azure resize will re-format the ephemeral disk). The list of changes here is: - move mounts and disk_setup module to cloud-init.service rather than config. cloud-init.service runs earlier in boot so it can get those mount points done earlier. - on systemd add 'x-systemd.requires=cloud-init.service' to fstab options - cloud-init-local.service: add Before=basic.target - cloud-init.service: - extend After, Before, and Wants to multiple lines rather than one long line. - sort consistently with cloud-init-local.service - add DefaultDependencies=no - add Before=default.target - add Conflicts=shutdown.target LP: #1611074 --- cloudinit/config/cc_mounts.py | 4 ++-- cloudinit/sources/DataSourceAzure.py | 7 +++++-- config/cloud.cfg | 4 ++-- systemd/cloud-init-local.service | 3 ++- systemd/cloud-init.service | 16 +++++++++++++--- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py index 2b981935..4084118b 100644 --- a/cloudinit/config/cc_mounts.py +++ b/cloudinit/config/cc_mounts.py @@ -265,7 +265,7 @@ def handle(_name, cfg, cloud, log, _args): # fs_spec, fs_file, fs_vfstype, fs_mntops, fs-freq, fs_passno def_mnt_opts = "defaults,nobootwait" if cloud.distro.uses_systemd(): - def_mnt_opts = "defaults,nofail" + def_mnt_opts = "defaults,nofail,x-systemd.requires=cloud-init.service" defvals = [None, None, "auto", def_mnt_opts, "0", "2"] defvals = cfg.get("mount_default_fields", defvals) @@ -401,5 +401,5 @@ def handle(_name, cfg, cloud, log, _args): try: util.subp(("mount", "-a")) - except Exception: + except util.ProcessExecutionError: util.logexc(log, "Activating mounts via 'mount -a' failed") diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index dbc2bb68..b802b03e 100644 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -252,7 +252,7 @@ class DataSourceAzureNet(sources.DataSource): cc_modules_override = support_new_ephemeral(self.sys_cfg) if cc_modules_override: - self.cfg['cloud_config_modules'] = cc_modules_override + self.cfg['cloud_init_modules'] = cc_modules_override return True @@ -283,11 +283,14 @@ def find_fabric_formatted_ephemeral_part(): device_location = potential_location break if device_location is None: + LOG.debug("no azure resource disk partition path found") return None ntfs_devices = util.find_devs_with("TYPE=ntfs") real_device = os.path.realpath(device_location) if real_device in ntfs_devices: return device_location + LOG.debug("'%s' existed (%s) but was not ntfs formated", + device_location, real_device) return None @@ -342,7 +345,7 @@ def support_new_ephemeral(cfg): LOG.debug("cloud-init will format ephemeral0.1 this boot.") LOG.debug("setting disk_setup and mounts modules 'always' for this boot") - cc_modules = cfg.get('cloud_config_modules') + cc_modules = cfg.get('cloud_init_modules') if not cc_modules: return None diff --git a/config/cloud.cfg b/config/cloud.cfg index 7c94ec5c..3b4c5383 100644 --- a/config/cloud.cfg +++ b/config/cloud.cfg @@ -30,6 +30,8 @@ cloud_init_modules: - write-files - growpart - resizefs + - disk_setup + - mounts - set_hostname - update_hostname - update_etc_hosts @@ -43,8 +45,6 @@ cloud_config_modules: # Emit the cloud config ready event # this can be used by upstart jobs for 'start on cloud-config'. - emit_upstart - - disk_setup - - mounts - ntp - ssh-import-id - locale diff --git a/systemd/cloud-init-local.service b/systemd/cloud-init-local.service index b19eeaee..bc2db60e 100644 --- a/systemd/cloud-init-local.service +++ b/systemd/cloud-init-local.service @@ -4,9 +4,10 @@ DefaultDependencies=no Wants=local-fs.target Wants=network-pre.target After=local-fs.target -Conflicts=shutdown.target +Before=basic.target Before=network-pre.target Before=shutdown.target +Conflicts=shutdown.target [Service] Type=oneshot diff --git a/systemd/cloud-init.service b/systemd/cloud-init.service index 6fb655e6..1e392a39 100644 --- a/systemd/cloud-init.service +++ b/systemd/cloud-init.service @@ -1,9 +1,19 @@ [Unit] Description=Initial cloud-init job (metadata service crawler) -After=cloud-init-local.service networking.service -Before=network-online.target sshd.service sshd-keygen.service systemd-user-sessions.service +DefaultDependencies=no +Wants=cloud-init-local.service +Wants=local-fs.target +Wants=sshd-keygen.service +Wants=sshd.service +After=cloud-init-local.service +After=networking.service Requires=networking.service -Wants=local-fs.target cloud-init-local.service sshd.service sshd-keygen.service +Before=basic.target +Before=network-online.target +Before=sshd-keygen.service +Before=sshd.service +Before=systemd-user-sessions.service +Conflicts=shutdown.target [Service] Type=oneshot -- cgit v1.2.3