|
|
ad9e5f |
From 5e1e568d7085fd4443b4e3ccc492f5e31747e270 Mon Sep 17 00:00:00 2001
|
|
|
ad9e5f |
From: Amy Chen <xiachen@redhat.com>
|
|
|
ad9e5f |
Date: Wed, 20 Apr 2022 10:59:48 +0800
|
|
|
c1c26e |
Subject: Add initial redhat setup
|
|
|
c1c26e |
|
|
|
ad9e5f |
Merged patches (22.1)
|
|
|
ad9e5f |
- d18029bf Add netifaces package as a Requires in cloud-init.spec.template
|
|
|
ad9e5f |
- 31adf961 Add gdisk and openssl as deps to fix UEFI / Azure initialization
|
|
|
ad9e5f |
- f4a2905d Add dhcp-client as a dependency
|
|
|
ad9e5f |
- 290e14cc cloud-init.spec.template: update %systemd_postun parameter
|
|
|
ad9e5f |
- 9be4ae9b (tag: cloud-init-21.1-1.el8) Update to cloud-init-21.1-1.el8
|
|
|
ad9e5f |
|
|
|
ad9e5f |
Conflicts:
|
|
|
ad9e5f |
cloudinit/config/cc_chef.py Using double quotes instead of single quotes
|
|
|
ad9e5f |
|
|
|
ad9e5f |
cloudinit/settings.py
|
|
|
ad9e5f |
- Using rhel settings
|
|
|
ad9e5f |
- Using double quotes instead of single quotes
|
|
|
ad9e5f |
|
|
|
ad9e5f |
setup.py
|
|
|
ad9e5f |
- Following the changes of 21.1 rebase
|
|
|
ad9e5f |
- Using double quotes instead of single quotes
|
|
|
ad9e5f |
|
|
|
ad9e5f |
redhat/cloud-init.spec.template
|
|
|
ad9e5f |
- Add the drop-in to the right cloud-init.spec used by our package builder, which is downstream-only part of the bz 2002492 fix.
|
|
|
ad9e5f |
|
|
|
ad9e5f |
redhat/Makefile.common
|
|
|
ad9e5f |
- Backport the build handling fixes from patch "Update to cloud-init-21.1-1.el8"
|
|
|
ad9e5f |
|
|
|
ad9e5f |
Signed-off-by: Amy Chen <xiachen@redhat.com>
|
|
|
ad9e5f |
|
|
|
fc6e82 |
Merged patches (21.1):
|
|
|
fc6e82 |
- 915d30ad Change gating file to correct rhel version
|
|
|
fc6e82 |
- 311f318d Removing net-tools dependency
|
|
|
fc6e82 |
- 74731806 Adding man pages to Red Hat spec file
|
|
|
fc6e82 |
- 758d333d Removing blocking test from yaml configuration file
|
|
|
fc6e82 |
- c7e7c59c Changing permission of cloud-init-generator to 755
|
|
|
fc6e82 |
- 8b85abbb Installing man pages in the correct place with correct permissions
|
|
|
fc6e82 |
- c6808d8d Fix unit failure of cloud-final.service if NetworkManager was not present.
|
|
|
fc6e82 |
- 11866ef6 Report full specific version with "cloud-init --version"
|
|
|
fc6e82 |
|
|
|
c1c26e |
Rebase notes (18.5):
|
|
|
c1c26e |
- added bash_completition file
|
|
|
c1c26e |
- added cloud-id file
|
|
|
c1c26e |
|
|
|
ea00c4 |
Merged patches (20.3):
|
|
|
ea00c4 |
- 01900d0 changing ds-identify patch from /usr/lib to /usr/libexec
|
|
|
ea00c4 |
- 7f47ca3 Render the generator from template instead of cp
|
|
|
ea00c4 |
|
|
|
16d12a |
Merged patches (19.4):
|
|
|
16d12a |
- 4ab5a61 Fix for network configuration not persisting after reboot
|
|
|
16d12a |
- 84cf125 Removing cloud-user from wheel
|
|
|
16d12a |
- 31290ab Adding gating tests for Azure, ESXi and AWS
|
|
|
16d12a |
|
|
|
c1c26e |
Merged patches (18.5):
|
|
|
c1c26e |
- 2d6b469 add power-state-change module to cloud_final_modules
|
|
|
c1c26e |
- 764159f Adding systemd mount options to wait for cloud-init
|
|
|
c1c26e |
- da4d99e Adding disk_setup to rhel/cloud.cfg
|
|
|
c1c26e |
- f5c6832 Enable cloud-init by default on vmware
|
|
|
ea00c4 |
|
|
|
ea00c4 |
Conflicts:
|
|
|
ea00c4 |
cloudinit/config/cc_chef.py:
|
|
|
ea00c4 |
- Updated header documentation text
|
|
|
ea00c4 |
- Replacing double quotes by simple quotes
|
|
|
ea00c4 |
|
|
|
ea00c4 |
setup.py:
|
|
|
ea00c4 |
- Adding missing cmdclass info
|
|
|
ea00c4 |
|
|
|
ea00c4 |
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
|
|
c1c26e |
---
|
|
|
16d12a |
.gitignore | 1 +
|
|
|
ad9e5f |
cloudinit/config/cc_chef.py | 65 ++-
|
|
|
c1c26e |
cloudinit/settings.py | 7 +-
|
|
|
c1c26e |
redhat/.gitignore | 1 +
|
|
|
ad9e5f |
redhat/Makefile | 71 +++
|
|
|
fc6e82 |
redhat/Makefile.common | 37 ++
|
|
|
c1c26e |
redhat/cloud-init-tmpfiles.conf | 1 +
|
|
|
ad9e5f |
redhat/cloud-init.spec.template | 696 ++++++++++++++++++++++++++
|
|
|
fc6e82 |
redhat/gating.yaml | 8 +
|
|
|
c1c26e |
redhat/rpmbuild/BUILD/.gitignore | 3 +
|
|
|
c1c26e |
redhat/rpmbuild/RPMS/.gitignore | 3 +
|
|
|
c1c26e |
redhat/rpmbuild/SOURCES/.gitignore | 3 +
|
|
|
c1c26e |
redhat/rpmbuild/SPECS/.gitignore | 3 +
|
|
|
c1c26e |
redhat/rpmbuild/SRPMS/.gitignore | 3 +
|
|
|
ad9e5f |
redhat/scripts/frh.py | 25 +
|
|
|
ad9e5f |
redhat/scripts/git-backport-diff | 327 ++++++++++++
|
|
|
ad9e5f |
redhat/scripts/git-compile-check | 215 ++++++++
|
|
|
ad9e5f |
redhat/scripts/process-patches.sh | 92 ++++
|
|
|
c1c26e |
redhat/scripts/tarball_checksum.sh | 3 +
|
|
|
c1c26e |
rhel/README.rhel | 5 +
|
|
|
c1c26e |
rhel/cloud-init-tmpfiles.conf | 1 +
|
|
|
ad9e5f |
rhel/cloud.cfg | 69 +++
|
|
|
fc6e82 |
rhel/systemd/cloud-config.service | 18 +
|
|
|
c1c26e |
rhel/systemd/cloud-config.target | 11 +
|
|
|
ad9e5f |
rhel/systemd/cloud-final.service | 24 +
|
|
|
ea00c4 |
rhel/systemd/cloud-init-local.service | 31 ++
|
|
|
ad9e5f |
rhel/systemd/cloud-init.service | 25 +
|
|
|
16d12a |
rhel/systemd/cloud-init.target | 7 +
|
|
|
ad9e5f |
setup.py | 28 +-
|
|
|
ea00c4 |
tools/read-version | 28 +-
|
|
|
ad9e5f |
30 files changed, 1756 insertions(+), 55 deletions(-)
|
|
|
c1c26e |
create mode 100644 redhat/.gitignore
|
|
|
c1c26e |
create mode 100644 redhat/Makefile
|
|
|
c1c26e |
create mode 100644 redhat/Makefile.common
|
|
|
c1c26e |
create mode 100644 redhat/cloud-init-tmpfiles.conf
|
|
|
c1c26e |
create mode 100644 redhat/cloud-init.spec.template
|
|
|
16d12a |
create mode 100644 redhat/gating.yaml
|
|
|
c1c26e |
create mode 100644 redhat/rpmbuild/BUILD/.gitignore
|
|
|
c1c26e |
create mode 100644 redhat/rpmbuild/RPMS/.gitignore
|
|
|
c1c26e |
create mode 100644 redhat/rpmbuild/SOURCES/.gitignore
|
|
|
c1c26e |
create mode 100644 redhat/rpmbuild/SPECS/.gitignore
|
|
|
c1c26e |
create mode 100644 redhat/rpmbuild/SRPMS/.gitignore
|
|
|
c1c26e |
create mode 100755 redhat/scripts/frh.py
|
|
|
c1c26e |
create mode 100755 redhat/scripts/git-backport-diff
|
|
|
c1c26e |
create mode 100755 redhat/scripts/git-compile-check
|
|
|
c1c26e |
create mode 100755 redhat/scripts/process-patches.sh
|
|
|
c1c26e |
create mode 100755 redhat/scripts/tarball_checksum.sh
|
|
|
c1c26e |
create mode 100644 rhel/README.rhel
|
|
|
c1c26e |
create mode 100644 rhel/cloud-init-tmpfiles.conf
|
|
|
c1c26e |
create mode 100644 rhel/cloud.cfg
|
|
|
c1c26e |
create mode 100644 rhel/systemd/cloud-config.service
|
|
|
c1c26e |
create mode 100644 rhel/systemd/cloud-config.target
|
|
|
c1c26e |
create mode 100644 rhel/systemd/cloud-final.service
|
|
|
c1c26e |
create mode 100644 rhel/systemd/cloud-init-local.service
|
|
|
c1c26e |
create mode 100644 rhel/systemd/cloud-init.service
|
|
|
16d12a |
create mode 100644 rhel/systemd/cloud-init.target
|
|
|
c1c26e |
|
|
|
c1c26e |
diff --git a/cloudinit/config/cc_chef.py b/cloudinit/config/cc_chef.py
|
|
|
ad9e5f |
index fdb3a6e3..d028c548 100644
|
|
|
c1c26e |
--- a/cloudinit/config/cc_chef.py
|
|
|
c1c26e |
+++ b/cloudinit/config/cc_chef.py
|
|
|
ea00c4 |
@@ -6,7 +6,70 @@
|
|
|
ea00c4 |
#
|
|
|
ea00c4 |
# This file is part of cloud-init. See LICENSE file for license information.
|
|
|
c1c26e |
|
|
|
ea00c4 |
-"""Chef: module that configures, starts and installs chef."""
|
|
|
ea00c4 |
+"""
|
|
|
ea00c4 |
+Chef
|
|
|
ea00c4 |
+----
|
|
|
ea00c4 |
+**Summary:** module that configures, starts and installs chef.
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+This module enables chef to be installed (from packages or
|
|
|
ea00c4 |
+from gems, or from omnibus). Before this occurs chef configurations are
|
|
|
ea00c4 |
+written to disk (validation.pem, client.pem, firstboot.json, client.rb),
|
|
|
ea00c4 |
+and needed chef folders/directories are created (/etc/chef and /var/log/chef
|
|
|
ea00c4 |
+and so-on). Then once installing proceeds correctly if configured chef will
|
|
|
ea00c4 |
+be started (in daemon mode or in non-daemon mode) and then once that has
|
|
|
ea00c4 |
+finished (if ran in non-daemon mode this will be when chef finishes
|
|
|
ea00c4 |
+converging, if ran in daemon mode then no further actions are possible since
|
|
|
ea00c4 |
+chef will have forked into its own process) then a post run function can
|
|
|
ea00c4 |
+run that can do finishing activities (such as removing the validation pem
|
|
|
ea00c4 |
+file).
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+**Internal name:** ``cc_chef``
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+**Module frequency:** per always
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+**Supported distros:** all
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+**Config keys**::
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+ chef:
|
|
|
ea00c4 |
+ directories: (defaulting to /etc/chef, /var/log/chef, /var/lib/chef,
|
|
|
c1c26e |
+ /var/cache/chef, /var/backups/chef, /run/chef)
|
|
|
ea00c4 |
+ validation_cert: (optional string to be written to file validation_key)
|
|
|
ea00c4 |
+ special value 'system' means set use existing file
|
|
|
ea00c4 |
+ validation_key: (optional the path for validation_cert. default
|
|
|
ea00c4 |
+ /etc/chef/validation.pem)
|
|
|
ea00c4 |
+ firstboot_path: (path to write run_list and initial_attributes keys that
|
|
|
ea00c4 |
+ should also be present in this configuration, defaults
|
|
|
ea00c4 |
+ to /etc/chef/firstboot.json)
|
|
|
ea00c4 |
+ exec: boolean to run or not run chef (defaults to false, unless
|
|
|
ea00c4 |
+ a gem installed is requested
|
|
|
ea00c4 |
+ where this will then default
|
|
|
ea00c4 |
+ to true)
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+ chef.rb template keys (if falsey, then will be skipped and not
|
|
|
ea00c4 |
+ written to /etc/chef/client.rb)
|
|
|
ea00c4 |
+
|
|
|
ea00c4 |
+ chef:
|
|
|
ea00c4 |
+ client_key:
|
|
|
ea00c4 |
+ encrypted_data_bag_secret:
|
|
|
ea00c4 |
+ environment:
|
|
|
ea00c4 |
+ file_backup_path:
|
|
|
ea00c4 |
+ file_cache_path:
|
|
|
ea00c4 |
+ json_attribs:
|
|
|
ea00c4 |
+ log_level:
|
|
|
ea00c4 |
+ log_location:
|
|
|
ea00c4 |
+ node_name:
|
|
|
ea00c4 |
+ omnibus_url:
|
|
|
ea00c4 |
+ omnibus_url_retries:
|
|
|
ea00c4 |
+ omnibus_version:
|
|
|
ea00c4 |
+ pid_file:
|
|
|
ea00c4 |
+ server_url:
|
|
|
ea00c4 |
+ show_time:
|
|
|
ea00c4 |
+ ssl_verify_mode:
|
|
|
ea00c4 |
+ validation_cert:
|
|
|
ea00c4 |
+ validation_key:
|
|
|
ea00c4 |
+ validation_name:
|
|
|
ea00c4 |
+"""
|
|
|
ea00c4 |
|
|
|
ea00c4 |
import itertools
|
|
|
ea00c4 |
import json
|
|
|
c1c26e |
diff --git a/cloudinit/settings.py b/cloudinit/settings.py
|
|
|
ad9e5f |
index ecc1403b..39650a5b 100644
|
|
|
c1c26e |
--- a/cloudinit/settings.py
|
|
|
c1c26e |
+++ b/cloudinit/settings.py
|
|
|
ad9e5f |
@@ -50,13 +50,16 @@ CFG_BUILTIN = {
|
|
|
c1c26e |
],
|
|
|
ad9e5f |
"def_log_file": "/var/log/cloud-init.log",
|
|
|
ad9e5f |
"log_cfgs": [],
|
|
|
ad9e5f |
- "syslog_fix_perms": ["syslog:adm", "root:adm", "root:wheel", "root:root"],
|
|
|
ad9e5f |
+ "mount_default_fields": [None, None, "auto", "defaults,nofail", "0", "2"],
|
|
|
ad9e5f |
+ "ssh_deletekeys": False,
|
|
|
ad9e5f |
+ "ssh_genkeytypes": [],
|
|
|
ad9e5f |
+ "syslog_fix_perms": [],
|
|
|
ad9e5f |
"system_info": {
|
|
|
ad9e5f |
"paths": {
|
|
|
ad9e5f |
"cloud_dir": "/var/lib/cloud",
|
|
|
ad9e5f |
"templates_dir": "/etc/cloud/templates/",
|
|
|
c1c26e |
},
|
|
|
ad9e5f |
- "distro": "ubuntu",
|
|
|
ad9e5f |
+ "distro": "rhel",
|
|
|
ad9e5f |
"network": {"renderers": None},
|
|
|
c1c26e |
},
|
|
|
ad9e5f |
"vendor_data": {"enabled": True, "prefix": []},
|
|
|
c1c26e |
diff --git a/rhel/README.rhel b/rhel/README.rhel
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..aa29630d
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/README.rhel
|
|
|
c1c26e |
@@ -0,0 +1,5 @@
|
|
|
c1c26e |
+The following cloud-init modules are currently unsupported on this OS:
|
|
|
c1c26e |
+ - apt_update_upgrade ('apt_update', 'apt_upgrade', 'apt_mirror', 'apt_preserve_sources_list', 'apt_old_mirror', 'apt_sources', 'debconf_selections', 'packages' options)
|
|
|
c1c26e |
+ - byobu ('byobu_by_default' option)
|
|
|
c1c26e |
+ - chef
|
|
|
c1c26e |
+ - grub_dpkg
|
|
|
c1c26e |
diff --git a/rhel/cloud-init-tmpfiles.conf b/rhel/cloud-init-tmpfiles.conf
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..0c6d2a3b
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/cloud-init-tmpfiles.conf
|
|
|
c1c26e |
@@ -0,0 +1 @@
|
|
|
c1c26e |
+d /run/cloud-init 0700 root root - -
|
|
|
c1c26e |
diff --git a/rhel/cloud.cfg b/rhel/cloud.cfg
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..82e8bf62
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/cloud.cfg
|
|
|
c1c26e |
@@ -0,0 +1,69 @@
|
|
|
c1c26e |
+users:
|
|
|
c1c26e |
+ - default
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+disable_root: 1
|
|
|
c1c26e |
+ssh_pwauth: 0
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
|
|
|
c1c26e |
+resize_rootfs_tmp: /dev
|
|
|
c1c26e |
+ssh_deletekeys: 0
|
|
|
c1c26e |
+ssh_genkeytypes: ~
|
|
|
c1c26e |
+syslog_fix_perms: ~
|
|
|
c1c26e |
+disable_vmware_customization: false
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+cloud_init_modules:
|
|
|
c1c26e |
+ - disk_setup
|
|
|
c1c26e |
+ - migrator
|
|
|
c1c26e |
+ - bootcmd
|
|
|
c1c26e |
+ - write-files
|
|
|
c1c26e |
+ - growpart
|
|
|
c1c26e |
+ - resizefs
|
|
|
c1c26e |
+ - set_hostname
|
|
|
c1c26e |
+ - update_hostname
|
|
|
c1c26e |
+ - update_etc_hosts
|
|
|
c1c26e |
+ - rsyslog
|
|
|
c1c26e |
+ - users-groups
|
|
|
c1c26e |
+ - ssh
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+cloud_config_modules:
|
|
|
c1c26e |
+ - mounts
|
|
|
c1c26e |
+ - locale
|
|
|
c1c26e |
+ - set-passwords
|
|
|
c1c26e |
+ - rh_subscription
|
|
|
c1c26e |
+ - yum-add-repo
|
|
|
c1c26e |
+ - package-update-upgrade-install
|
|
|
c1c26e |
+ - timezone
|
|
|
c1c26e |
+ - puppet
|
|
|
c1c26e |
+ - chef
|
|
|
c1c26e |
+ - salt-minion
|
|
|
c1c26e |
+ - mcollective
|
|
|
c1c26e |
+ - disable-ec2-metadata
|
|
|
c1c26e |
+ - runcmd
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+cloud_final_modules:
|
|
|
c1c26e |
+ - rightscale_userdata
|
|
|
c1c26e |
+ - scripts-per-once
|
|
|
c1c26e |
+ - scripts-per-boot
|
|
|
c1c26e |
+ - scripts-per-instance
|
|
|
c1c26e |
+ - scripts-user
|
|
|
c1c26e |
+ - ssh-authkey-fingerprints
|
|
|
c1c26e |
+ - keys-to-console
|
|
|
c1c26e |
+ - phone-home
|
|
|
c1c26e |
+ - final-message
|
|
|
c1c26e |
+ - power-state-change
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+system_info:
|
|
|
c1c26e |
+ default_user:
|
|
|
c1c26e |
+ name: cloud-user
|
|
|
c1c26e |
+ lock_passwd: true
|
|
|
c1c26e |
+ gecos: Cloud User
|
|
|
16d12a |
+ groups: [adm, systemd-journal]
|
|
|
c1c26e |
+ sudo: ["ALL=(ALL) NOPASSWD:ALL"]
|
|
|
c1c26e |
+ shell: /bin/bash
|
|
|
c1c26e |
+ distro: rhel
|
|
|
c1c26e |
+ paths:
|
|
|
c1c26e |
+ cloud_dir: /var/lib/cloud
|
|
|
c1c26e |
+ templates_dir: /etc/cloud/templates
|
|
|
c1c26e |
+ ssh_svcname: sshd
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+# vim:syntax=yaml
|
|
|
c1c26e |
diff --git a/rhel/systemd/cloud-config.service b/rhel/systemd/cloud-config.service
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..f3dcd4be
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/systemd/cloud-config.service
|
|
|
c1c26e |
@@ -0,0 +1,18 @@
|
|
|
c1c26e |
+[Unit]
|
|
|
c1c26e |
+Description=Apply the settings specified in cloud-config
|
|
|
c1c26e |
+After=network-online.target cloud-config.target
|
|
|
c1c26e |
+Wants=network-online.target cloud-config.target
|
|
|
c1c26e |
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
|
|
c1c26e |
+ConditionKernelCommandLine=!cloud-init=disabled
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Service]
|
|
|
c1c26e |
+Type=oneshot
|
|
|
c1c26e |
+ExecStart=/usr/bin/cloud-init modules --mode=config
|
|
|
c1c26e |
+RemainAfterExit=yes
|
|
|
c1c26e |
+TimeoutSec=0
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+# Output needs to appear in instance console output
|
|
|
c1c26e |
+StandardOutput=journal+console
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Install]
|
|
|
16d12a |
+WantedBy=cloud-init.target
|
|
|
c1c26e |
diff --git a/rhel/systemd/cloud-config.target b/rhel/systemd/cloud-config.target
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..ae9b7d02
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/systemd/cloud-config.target
|
|
|
c1c26e |
@@ -0,0 +1,11 @@
|
|
|
c1c26e |
+# cloud-init normally emits a "cloud-config" upstart event to inform third
|
|
|
c1c26e |
+# parties that cloud-config is available, which does us no good when we're
|
|
|
c1c26e |
+# using systemd. cloud-config.target serves as this synchronization point
|
|
|
c1c26e |
+# instead. Services that would "start on cloud-config" with upstart can
|
|
|
c1c26e |
+# instead use "After=cloud-config.target" and "Wants=cloud-config.target"
|
|
|
c1c26e |
+# as appropriate.
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Unit]
|
|
|
c1c26e |
+Description=Cloud-config availability
|
|
|
c1c26e |
+Wants=cloud-init-local.service cloud-init.service
|
|
|
c1c26e |
+After=cloud-init-local.service cloud-init.service
|
|
|
c1c26e |
diff --git a/rhel/systemd/cloud-final.service b/rhel/systemd/cloud-final.service
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..e281c0cf
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/systemd/cloud-final.service
|
|
|
fc6e82 |
@@ -0,0 +1,24 @@
|
|
|
c1c26e |
+[Unit]
|
|
|
c1c26e |
+Description=Execute cloud user/final scripts
|
|
|
c1c26e |
+After=network-online.target cloud-config.service rc-local.service
|
|
|
c1c26e |
+Wants=network-online.target cloud-config.service
|
|
|
c1c26e |
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
|
|
c1c26e |
+ConditionKernelCommandLine=!cloud-init=disabled
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Service]
|
|
|
c1c26e |
+Type=oneshot
|
|
|
c1c26e |
+ExecStart=/usr/bin/cloud-init modules --mode=final
|
|
|
c1c26e |
+RemainAfterExit=yes
|
|
|
c1c26e |
+TimeoutSec=0
|
|
|
c1c26e |
+KillMode=process
|
|
|
fc6e82 |
+# Restart NetworkManager if it is present and running.
|
|
|
fc6e82 |
+ExecStartPost=/bin/sh -c 'u=NetworkManager.service; \
|
|
|
fc6e82 |
+ out=$(systemctl show --property=SubState $u) || exit; \
|
|
|
fc6e82 |
+ [ "$out" = "SubState=running" ] || exit 0; \
|
|
|
fc6e82 |
+ systemctl reload-or-try-restart $u'
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+# Output needs to appear in instance console output
|
|
|
c1c26e |
+StandardOutput=journal+console
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Install]
|
|
|
16d12a |
+WantedBy=cloud-init.target
|
|
|
c1c26e |
diff --git a/rhel/systemd/cloud-init-local.service b/rhel/systemd/cloud-init-local.service
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..8f9f6c9f
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/systemd/cloud-init-local.service
|
|
|
c1c26e |
@@ -0,0 +1,31 @@
|
|
|
c1c26e |
+[Unit]
|
|
|
c1c26e |
+Description=Initial cloud-init job (pre-networking)
|
|
|
c1c26e |
+DefaultDependencies=no
|
|
|
c1c26e |
+Wants=network-pre.target
|
|
|
c1c26e |
+After=systemd-remount-fs.service
|
|
|
c1c26e |
+Requires=dbus.socket
|
|
|
c1c26e |
+After=dbus.socket
|
|
|
c1c26e |
+Before=NetworkManager.service network.service
|
|
|
c1c26e |
+Before=network-pre.target
|
|
|
c1c26e |
+Before=shutdown.target
|
|
|
c1c26e |
+Before=firewalld.target
|
|
|
c1c26e |
+Conflicts=shutdown.target
|
|
|
c1c26e |
+RequiresMountsFor=/var/lib/cloud
|
|
|
c1c26e |
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
|
|
c1c26e |
+ConditionKernelCommandLine=!cloud-init=disabled
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Service]
|
|
|
c1c26e |
+Type=oneshot
|
|
|
c1c26e |
+ExecStartPre=/bin/mkdir -p /run/cloud-init
|
|
|
c1c26e |
+ExecStartPre=/sbin/restorecon /run/cloud-init
|
|
|
c1c26e |
+ExecStartPre=/usr/bin/touch /run/cloud-init/enabled
|
|
|
c1c26e |
+ExecStart=/usr/bin/cloud-init init --local
|
|
|
c1c26e |
+ExecStart=/bin/touch /run/cloud-init/network-config-ready
|
|
|
c1c26e |
+RemainAfterExit=yes
|
|
|
c1c26e |
+TimeoutSec=0
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+# Output needs to appear in instance console output
|
|
|
c1c26e |
+StandardOutput=journal+console
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Install]
|
|
|
16d12a |
+WantedBy=cloud-init.target
|
|
|
c1c26e |
diff --git a/rhel/systemd/cloud-init.service b/rhel/systemd/cloud-init.service
|
|
|
c1c26e |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..d0023a05
|
|
|
c1c26e |
--- /dev/null
|
|
|
c1c26e |
+++ b/rhel/systemd/cloud-init.service
|
|
|
c1c26e |
@@ -0,0 +1,25 @@
|
|
|
c1c26e |
+[Unit]
|
|
|
c1c26e |
+Description=Initial cloud-init job (metadata service crawler)
|
|
|
c1c26e |
+Wants=cloud-init-local.service
|
|
|
c1c26e |
+Wants=sshd-keygen.service
|
|
|
c1c26e |
+Wants=sshd.service
|
|
|
c1c26e |
+After=cloud-init-local.service
|
|
|
c1c26e |
+After=NetworkManager.service network.service
|
|
|
c1c26e |
+Before=network-online.target
|
|
|
c1c26e |
+Before=sshd-keygen.service
|
|
|
c1c26e |
+Before=sshd.service
|
|
|
c1c26e |
+Before=systemd-user-sessions.service
|
|
|
c1c26e |
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
|
|
c1c26e |
+ConditionKernelCommandLine=!cloud-init=disabled
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Service]
|
|
|
c1c26e |
+Type=oneshot
|
|
|
c1c26e |
+ExecStart=/usr/bin/cloud-init init
|
|
|
c1c26e |
+RemainAfterExit=yes
|
|
|
c1c26e |
+TimeoutSec=0
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+# Output needs to appear in instance console output
|
|
|
c1c26e |
+StandardOutput=journal+console
|
|
|
c1c26e |
+
|
|
|
c1c26e |
+[Install]
|
|
|
16d12a |
+WantedBy=cloud-init.target
|
|
|
16d12a |
diff --git a/rhel/systemd/cloud-init.target b/rhel/systemd/cloud-init.target
|
|
|
16d12a |
new file mode 100644
|
|
|
fc6e82 |
index 00000000..083c3b6f
|
|
|
16d12a |
--- /dev/null
|
|
|
16d12a |
+++ b/rhel/systemd/cloud-init.target
|
|
|
16d12a |
@@ -0,0 +1,7 @@
|
|
|
16d12a |
+# cloud-init target is enabled by cloud-init-generator
|
|
|
16d12a |
+# To disable it you can either:
|
|
|
16d12a |
+# a.) boot with kernel cmdline of 'cloud-init=disabled'
|
|
|
16d12a |
+# b.) touch a file /etc/cloud/cloud-init.disabled
|
|
|
16d12a |
+[Unit]
|
|
|
16d12a |
+Description=Cloud-init target
|
|
|
16d12a |
+After=multi-user.target
|
|
|
c1c26e |
diff --git a/setup.py b/setup.py
|
|
|
ad9e5f |
index a9132d2c..3c377eaa 100755
|
|
|
c1c26e |
--- a/setup.py
|
|
|
c1c26e |
+++ b/setup.py
|
|
|
ad9e5f |
@@ -139,21 +139,6 @@ INITSYS_FILES = {
|
|
|
ad9e5f |
"sysvinit_deb": [f for f in glob("sysvinit/debian/*") if is_f(f)],
|
|
|
ad9e5f |
"sysvinit_openrc": [f for f in glob("sysvinit/gentoo/*") if is_f(f)],
|
|
|
ad9e5f |
"sysvinit_suse": [f for f in glob("sysvinit/suse/*") if is_f(f)],
|
|
|
ad9e5f |
- "systemd": [
|
|
|
ad9e5f |
- render_tmpl(f)
|
|
|
ad9e5f |
- for f in (
|
|
|
ad9e5f |
- glob("systemd/*.tmpl")
|
|
|
ad9e5f |
- + glob("systemd/*.service")
|
|
|
ad9e5f |
- + glob("systemd/*.socket")
|
|
|
ad9e5f |
- + glob("systemd/*.target")
|
|
|
ad9e5f |
- )
|
|
|
ad9e5f |
- if (is_f(f) and not is_generator(f))
|
|
|
ad9e5f |
- ],
|
|
|
ad9e5f |
- "systemd.generators": [
|
|
|
16d12a |
- render_tmpl(f, mode=0o755)
|
|
|
ad9e5f |
- for f in glob("systemd/*")
|
|
|
ad9e5f |
- if is_f(f) and is_generator(f)
|
|
|
ad9e5f |
- ],
|
|
|
ad9e5f |
"upstart": [f for f in glob("upstart/*") if is_f(f)],
|
|
|
c1c26e |
}
|
|
|
c1c26e |
INITSYS_ROOTS = {
|
|
|
ad9e5f |
@@ -163,10 +148,6 @@ INITSYS_ROOTS = {
|
|
|
ad9e5f |
"sysvinit_deb": "etc/init.d",
|
|
|
ad9e5f |
"sysvinit_openrc": "etc/init.d",
|
|
|
ad9e5f |
"sysvinit_suse": "etc/init.d",
|
|
|
ad9e5f |
- "systemd": pkg_config_read("systemd", "systemdsystemunitdir"),
|
|
|
ad9e5f |
- "systemd.generators": pkg_config_read(
|
|
|
ad9e5f |
- "systemd", "systemdsystemgeneratordir"
|
|
|
ad9e5f |
- ),
|
|
|
ad9e5f |
"upstart": "etc/init/",
|
|
|
c1c26e |
}
|
|
|
c1c26e |
INITSYS_TYPES = sorted([f.partition(".")[0] for f in INITSYS_ROOTS.keys()])
|
|
|
ad9e5f |
@@ -281,15 +262,13 @@ data_files = [
|
|
|
ad9e5f |
(
|
|
|
ad9e5f |
USR_LIB_EXEC + "/cloud-init",
|
|
|
ad9e5f |
[
|
|
|
ad9e5f |
- "tools/ds-identify",
|
|
|
ad9e5f |
"tools/hook-hotplug",
|
|
|
ad9e5f |
"tools/uncloud-init",
|
|
|
ad9e5f |
"tools/write-ssh-key-fingerprints",
|
|
|
ad9e5f |
],
|
|
|
ad9e5f |
),
|
|
|
ad9e5f |
(
|
|
|
ad9e5f |
- USR + "/share/bash-completion/completions",
|
|
|
ad9e5f |
- ["bash_completion/cloud-init"],
|
|
|
ad9e5f |
+ ETC + "/bash_completion.d", ["bash_completion/cloud-init"],
|
|
|
ad9e5f |
),
|
|
|
ad9e5f |
(USR + "/share/doc/cloud-init", [f for f in glob("doc/*") if is_f(f)]),
|
|
|
ad9e5f |
(
|
|
|
ad9e5f |
@@ -308,8 +287,7 @@ if not platform.system().endswith("BSD"):
|
|
|
ad9e5f |
ETC + "/NetworkManager/dispatcher.d/",
|
|
|
ad9e5f |
["tools/hook-network-manager"],
|
|
|
ad9e5f |
),
|
|
|
ad9e5f |
- (ETC + "/dhcp/dhclient-exit-hooks.d/", ["tools/hook-dhclient"]),
|
|
|
ad9e5f |
- (LIB + "/udev/rules.d", [f for f in glob("udev/*.rules")]),
|
|
|
ad9e5f |
+ ("/usr/lib/udev/rules.d", [f for f in glob("udev/*.rules")]),
|
|
|
ad9e5f |
(
|
|
|
ad9e5f |
ETC + "/systemd/system/sshd-keygen@.service.d/",
|
|
|
ad9e5f |
["systemd/disable-sshd-keygen-if-cloud-init-active.conf"],
|
|
|
ad9e5f |
@@ -339,8 +317,6 @@ setuptools.setup(
|
|
|
ad9e5f |
scripts=["tools/cloud-init-per"],
|
|
|
ad9e5f |
license="Dual-licensed under GPLv3 or Apache 2.0",
|
|
|
c1c26e |
data_files=data_files,
|
|
|
c1c26e |
- install_requires=requirements,
|
|
|
c1c26e |
- cmdclass=cmdclass,
|
|
|
c1c26e |
entry_points={
|
|
|
ad9e5f |
"console_scripts": [
|
|
|
ad9e5f |
"cloud-init = cloudinit.cmd.main:main",
|
|
|
c1c26e |
diff --git a/tools/read-version b/tools/read-version
|
|
|
fc6e82 |
index 02c90643..79755f78 100755
|
|
|
c1c26e |
--- a/tools/read-version
|
|
|
c1c26e |
+++ b/tools/read-version
|
|
|
ea00c4 |
@@ -71,32 +71,8 @@ version_long = None
|
|
|
ea00c4 |
is_release_branch_ci = (
|
|
|
ea00c4 |
os.environ.get("TRAVIS_PULL_REQUEST_BRANCH", "").startswith("upstream/")
|
|
|
ea00c4 |
)
|
|
|
ea00c4 |
-if is_gitdir(_tdir) and which("git") and not is_release_branch_ci:
|
|
|
c1c26e |
- flags = []
|
|
|
c1c26e |
- if use_tags:
|
|
|
c1c26e |
- flags = ['--tags']
|
|
|
c1c26e |
- cmd = ['git', 'describe', '--abbrev=8', '--match=[0-9]*'] + flags
|
|
|
c1c26e |
-
|
|
|
16d12a |
- try:
|
|
|
16d12a |
- version = tiny_p(cmd).strip()
|
|
|
16d12a |
- except RuntimeError:
|
|
|
16d12a |
- version = None
|
|
|
c1c26e |
-
|
|
|
16d12a |
- if version is None or not version.startswith(src_version):
|
|
|
c1c26e |
- sys.stderr.write("git describe version (%s) differs from "
|
|
|
c1c26e |
- "cloudinit.version (%s)\n" % (version, src_version))
|
|
|
c1c26e |
- sys.stderr.write(
|
|
|
c1c26e |
- "Please get the latest upstream tags.\n"
|
|
|
c1c26e |
- "As an example, this can be done with the following:\n"
|
|
|
c1c26e |
- "$ git remote add upstream https://git.launchpad.net/cloud-init\n"
|
|
|
c1c26e |
- "$ git fetch upstream --tags\n"
|
|
|
c1c26e |
- )
|
|
|
c1c26e |
- sys.exit(1)
|
|
|
c1c26e |
-
|
|
|
c1c26e |
- version_long = tiny_p(cmd + ["--long"]).strip()
|
|
|
c1c26e |
-else:
|
|
|
c1c26e |
- version = src_version
|
|
|
c1c26e |
- version_long = None
|
|
|
c1c26e |
+version = src_version
|
|
|
c1c26e |
+version_long = None
|
|
|
c1c26e |
|
|
|
c1c26e |
# version is X.Y.Z[+xxx.gHASH]
|
|
|
c1c26e |
# version_long is None or X.Y.Z-xxx-gHASH
|
|
|
c1c26e |
--
|
|
|
ad9e5f |
2.31.1
|
|
|
c1c26e |
|