forked from rpms/cloud-init
		
	import cloud-init-22.1-3.el8
This commit is contained in:
		
							parent
							
								
									848e7b6f4d
								
							
						
					
					
						commit
						dfbf9e3309
					
				
							
								
								
									
										2300
									
								
								SOURCES/ci-Add-native-NetworkManager-support-1224.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2300
									
								
								SOURCES/ci-Add-native-NetworkManager-support-1224.patch
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										257
									
								
								SOURCES/ci-Align-rhel-custom-files-with-upstream-1431.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										257
									
								
								SOURCES/ci-Align-rhel-custom-files-with-upstream-1431.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,257 @@ | |||||||
|  | From 5c99ba05086b1ec83ce7e0c64edb4add4b47d923 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | Date: Thu, 19 May 2022 11:14:39 +0200 | ||||||
|  | Subject: [PATCH 3/4] Align rhel custom files with upstream (#1431) | ||||||
|  | 
 | ||||||
|  | RH-Author: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | RH-MergeRequest: 65: Align rhel custom files with upstream (#1431) | ||||||
|  | RH-Commit: [1/2] 5d9067175688b1006472a477b0916b81c73d5e07 | ||||||
|  | RH-Bugzilla: 2082071 | ||||||
|  | RH-Acked-by: Mohamed Gamal Morsy <mmorsy@redhat.com> | ||||||
|  | RH-Acked-by: Eduardo Otubo <otubo@redhat.com> | ||||||
|  | RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com> | ||||||
|  | 
 | ||||||
|  | commit 9624758f91b61f4711e8d7b5c83075b5d23e0c43 | ||||||
|  | Author: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | Date:   Wed May 18 15:18:04 2022 +0200 | ||||||
|  | 
 | ||||||
|  |     Align rhel custom files with upstream (#1431) | ||||||
|  | 
 | ||||||
|  |     So far RHEL had its own custom .service and cloud.cfg files, | ||||||
|  |     that diverged from upstream. We always replaced the generated files | ||||||
|  |     with the ones we had. | ||||||
|  | 
 | ||||||
|  |     This caused only confusion and made it harder to rebase and backport | ||||||
|  |     patches targeting these files. | ||||||
|  |     At the same time, we are going to delete our custom downstream-only files | ||||||
|  |     and use the ones generated by .tmpl. | ||||||
|  | 
 | ||||||
|  |     The mapping is: | ||||||
|  |     config/cloud.cfg.tmpl -> rhel/cloud.cfg | ||||||
|  |     systemd/* -> rhel/systemd/* | ||||||
|  | 
 | ||||||
|  |     Such rhel-specific files are open and available in the Centos repo: | ||||||
|  |     https://gitlab.com/redhat/centos-stream/src/cloud-init | ||||||
|  | 
 | ||||||
|  |     With this commit, we are also introducing modules in cloud.cfg that | ||||||
|  |     were not in the default rhel cfg file, even though they should already | ||||||
|  |     have been there with previous rebases and releases. | ||||||
|  |     Anyways such modules support rhel as distro, and | ||||||
|  |     therefore should cause no harm. | ||||||
|  | 
 | ||||||
|  |     Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | 
 | ||||||
|  |     RHBZ: 2082071 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  config/cloud.cfg.tmpl                   | 23 +++++++++++++++++++++++ | ||||||
|  |  systemd/cloud-config.service.tmpl       |  4 ++++ | ||||||
|  |  systemd/cloud-final.service.tmpl        | 13 +++++++++++++ | ||||||
|  |  systemd/cloud-init-local.service.tmpl   | 22 +++++++++++++++++++++- | ||||||
|  |  systemd/cloud-init.service.tmpl         |  6 +++++- | ||||||
|  |  tests/unittests/test_render_cloudcfg.py |  1 + | ||||||
|  |  6 files changed, 67 insertions(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
 | ||||||
|  | index 86beee3c..f4d2fd14 100644
 | ||||||
|  | --- a/config/cloud.cfg.tmpl
 | ||||||
|  | +++ b/config/cloud.cfg.tmpl
 | ||||||
|  | @@ -34,7 +34,11 @@ disable_root: true
 | ||||||
|  |   | ||||||
|  |  {% if variant in ["almalinux", "alpine", "amazon", "centos", "cloudlinux", "eurolinux", | ||||||
|  |                    "fedora", "miraclelinux", "openEuler", "rhel", "rocky", "virtuozzo"] %} | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service,_netdev', '0', '2']
 | ||||||
|  | +{% else %}
 | ||||||
|  |  mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2'] | ||||||
|  | +{% endif %}
 | ||||||
|  |  {% if variant == "amazon" %} | ||||||
|  |  resize_rootfs: noblock | ||||||
|  |  {% endif %} | ||||||
|  | @@ -66,6 +70,14 @@ network:
 | ||||||
|  |    config: disabled | ||||||
|  |  {% endif %} | ||||||
|  |   | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +# Default redhat settings:
 | ||||||
|  | +ssh_deletekeys:   true
 | ||||||
|  | +ssh_genkeytypes:  ['rsa', 'ecdsa', 'ed25519']
 | ||||||
|  | +syslog_fix_perms: ~
 | ||||||
|  | +disable_vmware_customization: false
 | ||||||
|  | +{% endif %}
 | ||||||
|  | +
 | ||||||
|  |  # The modules that run in the 'init' stage | ||||||
|  |  cloud_init_modules: | ||||||
|  |   - migrator | ||||||
|  | @@ -107,10 +119,15 @@ cloud_config_modules:
 | ||||||
|  |  {% endif %} | ||||||
|  |  {% if variant not in ["photon"] %} | ||||||
|  |   - ssh-import-id | ||||||
|  | +{% if variant not in ["rhel"] %}
 | ||||||
|  |   - keyboard | ||||||
|  | +{% endif %}
 | ||||||
|  |   - locale | ||||||
|  |  {% endif %} | ||||||
|  |   - set-passwords | ||||||
|  | +{% if variant in ["rhel"] %}
 | ||||||
|  | + - rh_subscription
 | ||||||
|  | +{% endif %}
 | ||||||
|  |  {% if variant in ["rhel", "fedora", "photon"] %} | ||||||
|  |  {% if variant not in ["photon"] %} | ||||||
|  |   - spacewalk | ||||||
|  | @@ -239,6 +256,10 @@ system_info:
 | ||||||
|  |       name: ec2-user | ||||||
|  |       lock_passwd: True | ||||||
|  |       gecos: EC2 Default User | ||||||
|  | +{% elif variant == "rhel" %}
 | ||||||
|  | +     name: cloud-user
 | ||||||
|  | +     lock_passwd: true
 | ||||||
|  | +     gecos: Cloud User
 | ||||||
|  |  {% else %} | ||||||
|  |       name: {{ variant }} | ||||||
|  |       lock_passwd: True | ||||||
|  | @@ -254,6 +275,8 @@ system_info:
 | ||||||
|  |       groups: [adm, sudo] | ||||||
|  |  {% elif variant == "arch" %} | ||||||
|  |       groups: [wheel, users] | ||||||
|  | +{% elif variant == "rhel" %}
 | ||||||
|  | +     groups: [adm, systemd-journal]
 | ||||||
|  |  {% else %} | ||||||
|  |       groups: [wheel, adm, systemd-journal] | ||||||
|  |  {% endif %} | ||||||
|  | diff --git a/systemd/cloud-config.service.tmpl b/systemd/cloud-config.service.tmpl
 | ||||||
|  | index 9d928ca2..d5568a6e 100644
 | ||||||
|  | --- a/systemd/cloud-config.service.tmpl
 | ||||||
|  | +++ b/systemd/cloud-config.service.tmpl
 | ||||||
|  | @@ -4,6 +4,10 @@ Description=Apply the settings specified in cloud-config
 | ||||||
|  |  After=network-online.target cloud-config.target | ||||||
|  |  After=snapd.seeded.service | ||||||
|  |  Wants=network-online.target cloud-config.target | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | +ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | +{% endif %}
 | ||||||
|  |   | ||||||
|  |  [Service] | ||||||
|  |  Type=oneshot | ||||||
|  | diff --git a/systemd/cloud-final.service.tmpl b/systemd/cloud-final.service.tmpl
 | ||||||
|  | index 8207b18c..85f423ac 100644
 | ||||||
|  | --- a/systemd/cloud-final.service.tmpl
 | ||||||
|  | +++ b/systemd/cloud-final.service.tmpl
 | ||||||
|  | @@ -7,6 +7,10 @@ After=multi-user.target
 | ||||||
|  |  Before=apt-daily.service | ||||||
|  |  {% endif %} | ||||||
|  |  Wants=network-online.target cloud-config.service | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | +ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | +{% endif %}
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  [Service] | ||||||
|  | @@ -15,7 +19,16 @@ ExecStart=/usr/bin/cloud-init modules --mode=final
 | ||||||
|  |  RemainAfterExit=yes | ||||||
|  |  TimeoutSec=0 | ||||||
|  |  KillMode=process | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +# Restart NetworkManager if it is present and running.
 | ||||||
|  | +ExecStartPost=/bin/sh -c 'u=NetworkManager.service; \
 | ||||||
|  | + out=$(systemctl show --property=SubState $u) || exit; \
 | ||||||
|  | + [ "$out" = "SubState=running" ] || exit 0; \
 | ||||||
|  | + systemctl reload-or-try-restart $u'
 | ||||||
|  | +{% else %}
 | ||||||
|  |  TasksMax=infinity | ||||||
|  | +{% endif %}
 | ||||||
|  | +
 | ||||||
|  |   | ||||||
|  |  # Output needs to appear in instance console output | ||||||
|  |  StandardOutput=journal+console | ||||||
|  | diff --git a/systemd/cloud-init-local.service.tmpl b/systemd/cloud-init-local.service.tmpl
 | ||||||
|  | index 7166f640..a6b82650 100644
 | ||||||
|  | --- a/systemd/cloud-init-local.service.tmpl
 | ||||||
|  | +++ b/systemd/cloud-init-local.service.tmpl
 | ||||||
|  | @@ -1,23 +1,43 @@
 | ||||||
|  |  ## template:jinja | ||||||
|  |  [Unit] | ||||||
|  |  Description=Initial cloud-init job (pre-networking) | ||||||
|  | -{% if variant in ["ubuntu", "unknown", "debian"] %}
 | ||||||
|  | +{% if variant in ["ubuntu", "unknown", "debian", "rhel" ] %}
 | ||||||
|  |  DefaultDependencies=no | ||||||
|  |  {% endif %} | ||||||
|  |  Wants=network-pre.target | ||||||
|  |  After=hv_kvp_daemon.service | ||||||
|  |  After=systemd-remount-fs.service | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +Requires=dbus.socket
 | ||||||
|  | +After=dbus.socket
 | ||||||
|  | +{% endif %}
 | ||||||
|  |  Before=NetworkManager.service | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +Before=network.service
 | ||||||
|  | +{% endif %}
 | ||||||
|  |  Before=network-pre.target | ||||||
|  |  Before=shutdown.target | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +Before=firewalld.target
 | ||||||
|  | +Conflicts=shutdown.target
 | ||||||
|  | +{% endif %}
 | ||||||
|  |  {% if variant in ["ubuntu", "unknown", "debian"] %} | ||||||
|  |  Before=sysinit.target | ||||||
|  |  Conflicts=shutdown.target | ||||||
|  |  {% endif %} | ||||||
|  |  RequiresMountsFor=/var/lib/cloud | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | +ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | +{% endif %}
 | ||||||
|  |   | ||||||
|  |  [Service] | ||||||
|  |  Type=oneshot | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +ExecStartPre=/bin/mkdir -p /run/cloud-init
 | ||||||
|  | +ExecStartPre=/sbin/restorecon /run/cloud-init
 | ||||||
|  | +ExecStartPre=/usr/bin/touch /run/cloud-init/enabled
 | ||||||
|  | +{% endif %}
 | ||||||
|  |  ExecStart=/usr/bin/cloud-init init --local | ||||||
|  |  ExecStart=/bin/touch /run/cloud-init/network-config-ready | ||||||
|  |  RemainAfterExit=yes | ||||||
|  | diff --git a/systemd/cloud-init.service.tmpl b/systemd/cloud-init.service.tmpl
 | ||||||
|  | index e71e5679..c170aef7 100644
 | ||||||
|  | --- a/systemd/cloud-init.service.tmpl
 | ||||||
|  | +++ b/systemd/cloud-init.service.tmpl
 | ||||||
|  | @@ -1,7 +1,7 @@
 | ||||||
|  |  ## template:jinja | ||||||
|  |  [Unit] | ||||||
|  |  Description=Initial cloud-init job (metadata service crawler) | ||||||
|  | -{% if variant not in ["photon"] %}
 | ||||||
|  | +{% if variant not in ["photon", "rhel"] %}
 | ||||||
|  |  DefaultDependencies=no | ||||||
|  |  {% endif %} | ||||||
|  |  Wants=cloud-init-local.service | ||||||
|  | @@ -36,6 +36,10 @@ Before=shutdown.target
 | ||||||
|  |  Conflicts=shutdown.target | ||||||
|  |  {% endif %} | ||||||
|  |  Before=systemd-user-sessions.service | ||||||
|  | +{% if variant == "rhel" %}
 | ||||||
|  | +ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | +ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | +{% endif %}
 | ||||||
|  |   | ||||||
|  |  [Service] | ||||||
|  |  Type=oneshot | ||||||
|  | diff --git a/tests/unittests/test_render_cloudcfg.py b/tests/unittests/test_render_cloudcfg.py
 | ||||||
|  | index 30fbd1a4..9f95d448 100644
 | ||||||
|  | --- a/tests/unittests/test_render_cloudcfg.py
 | ||||||
|  | +++ b/tests/unittests/test_render_cloudcfg.py
 | ||||||
|  | @@ -68,6 +68,7 @@ class TestRenderCloudCfg:
 | ||||||
|  |          default_user_exceptions = { | ||||||
|  |              "amazon": "ec2-user", | ||||||
|  |              "debian": "ubuntu", | ||||||
|  | +            "rhel": "cloud-user",
 | ||||||
|  |              "unknown": "ubuntu", | ||||||
|  |          } | ||||||
|  |          default_user = system_cfg["system_info"]["default_user"]["name"] | ||||||
|  | -- 
 | ||||||
|  | 2.35.3 | ||||||
|  | 
 | ||||||
							
								
								
									
										373
									
								
								SOURCES/ci-Remove-rhel-specific-files.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										373
									
								
								SOURCES/ci-Remove-rhel-specific-files.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,373 @@ | |||||||
|  | From d43f0d93386f123892451d923c2b3c6fe7130c39 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | Date: Thu, 19 May 2022 11:38:22 +0200 | ||||||
|  | Subject: [PATCH 4/4] Remove rhel specific files | ||||||
|  | 
 | ||||||
|  | RH-Author: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | RH-MergeRequest: 65: Align rhel custom files with upstream (#1431) | ||||||
|  | RH-Commit: [2/2] 5e31f0bcb500682e7746ccbd2e628c2ef339d6c6 | ||||||
|  | RH-Bugzilla: 2082071 | ||||||
|  | RH-Acked-by: Mohamed Gamal Morsy <mmorsy@redhat.com> | ||||||
|  | RH-Acked-by: Eduardo Otubo <otubo@redhat.com> | ||||||
|  | RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com> | ||||||
|  | 
 | ||||||
|  | Remove all files in rhel/ directory and related commands that copy | ||||||
|  | and replace them with the generated ones. | ||||||
|  | 
 | ||||||
|  | Also adjust setup.py, align it with upstream: | ||||||
|  | - by default, after rhel 8.3 ds-identify is in /usr/libexec, so no need to move it manually
 | ||||||
|  | - bash-completions work also in /usr/share, as upstream
 | ||||||
|  | - udev also works in /lib/udev
 | ||||||
|  | 
 | ||||||
|  | Also remove rhel/README since it is outdated (chef is used in cloud.cfg) and cloud-init-tmpfiles.conf, | ||||||
|  | as it exists also in .distro. | ||||||
|  | 
 | ||||||
|  | X-downstream-only: yes | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  redhat/cloud-init.spec.template       | 21 ++------ | ||||||
|  |  rhel/README.rhel                      |  5 -- | ||||||
|  |  rhel/cloud-init-tmpfiles.conf         |  1 - | ||||||
|  |  rhel/cloud.cfg                        | 69 --------------------------- | ||||||
|  |  rhel/systemd/cloud-config.service     | 18 ------- | ||||||
|  |  rhel/systemd/cloud-config.target      | 11 ----- | ||||||
|  |  rhel/systemd/cloud-final.service      | 24 ---------- | ||||||
|  |  rhel/systemd/cloud-init-local.service | 31 ------------ | ||||||
|  |  rhel/systemd/cloud-init.service       | 26 ---------- | ||||||
|  |  rhel/systemd/cloud-init.target        |  7 --- | ||||||
|  |  setup.py                              | 28 ++++++++++- | ||||||
|  |  11 files changed, 31 insertions(+), 210 deletions(-) | ||||||
|  |  delete mode 100644 rhel/README.rhel | ||||||
|  |  delete mode 100644 rhel/cloud-init-tmpfiles.conf | ||||||
|  |  delete mode 100644 rhel/cloud.cfg | ||||||
|  |  delete mode 100644 rhel/systemd/cloud-config.service | ||||||
|  |  delete mode 100644 rhel/systemd/cloud-config.target | ||||||
|  |  delete mode 100644 rhel/systemd/cloud-final.service | ||||||
|  |  delete mode 100644 rhel/systemd/cloud-init-local.service | ||||||
|  |  delete mode 100644 rhel/systemd/cloud-init.service | ||||||
|  |  delete mode 100644 rhel/systemd/cloud-init.target | ||||||
|  | 
 | ||||||
|  |   | ||||||
|  | diff --git a/rhel/README.rhel b/rhel/README.rhel
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index aa29630d..00000000
 | ||||||
|  | --- a/rhel/README.rhel
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,5 +0,0 @@
 | ||||||
|  | -The following cloud-init modules are currently unsupported on this OS:
 | ||||||
|  | - - apt_update_upgrade ('apt_update', 'apt_upgrade', 'apt_mirror', 'apt_preserve_sources_list', 'apt_old_mirror', 'apt_sources', 'debconf_selections', 'packages' options)
 | ||||||
|  | - - byobu ('byobu_by_default' option)
 | ||||||
|  | - - chef
 | ||||||
|  | - - grub_dpkg
 | ||||||
|  | diff --git a/rhel/cloud-init-tmpfiles.conf b/rhel/cloud-init-tmpfiles.conf
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index 0c6d2a3b..00000000
 | ||||||
|  | --- a/rhel/cloud-init-tmpfiles.conf
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1 +0,0 @@
 | ||||||
|  | -d /run/cloud-init 0700 root root - -
 | ||||||
|  | diff --git a/rhel/cloud.cfg b/rhel/cloud.cfg
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index cbee197a..00000000
 | ||||||
|  | --- a/rhel/cloud.cfg
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,69 +0,0 @@
 | ||||||
|  | -users:
 | ||||||
|  | - - default
 | ||||||
|  | -
 | ||||||
|  | -disable_root: 1
 | ||||||
|  | -ssh_pwauth:   0
 | ||||||
|  | -
 | ||||||
|  | -mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
 | ||||||
|  | -resize_rootfs_tmp: /dev
 | ||||||
|  | -ssh_deletekeys:   1
 | ||||||
|  | -ssh_genkeytypes:  ['rsa', 'ecdsa', 'ed25519']
 | ||||||
|  | -syslog_fix_perms: ~
 | ||||||
|  | -disable_vmware_customization: false
 | ||||||
|  | -
 | ||||||
|  | -cloud_init_modules:
 | ||||||
|  | - - disk_setup
 | ||||||
|  | - - migrator
 | ||||||
|  | - - bootcmd
 | ||||||
|  | - - write-files
 | ||||||
|  | - - growpart
 | ||||||
|  | - - resizefs
 | ||||||
|  | - - set_hostname
 | ||||||
|  | - - update_hostname
 | ||||||
|  | - - update_etc_hosts
 | ||||||
|  | - - rsyslog
 | ||||||
|  | - - users-groups
 | ||||||
|  | - - ssh
 | ||||||
|  | -
 | ||||||
|  | -cloud_config_modules:
 | ||||||
|  | - - mounts
 | ||||||
|  | - - locale
 | ||||||
|  | - - set-passwords
 | ||||||
|  | - - rh_subscription
 | ||||||
|  | - - yum-add-repo
 | ||||||
|  | - - package-update-upgrade-install
 | ||||||
|  | - - timezone
 | ||||||
|  | - - puppet
 | ||||||
|  | - - chef
 | ||||||
|  | - - salt-minion
 | ||||||
|  | - - mcollective
 | ||||||
|  | - - disable-ec2-metadata
 | ||||||
|  | - - runcmd
 | ||||||
|  | -
 | ||||||
|  | -cloud_final_modules:
 | ||||||
|  | - - rightscale_userdata
 | ||||||
|  | - - scripts-per-once
 | ||||||
|  | - - scripts-per-boot
 | ||||||
|  | - - scripts-per-instance
 | ||||||
|  | - - scripts-user
 | ||||||
|  | - - ssh-authkey-fingerprints
 | ||||||
|  | - - keys-to-console
 | ||||||
|  | - - phone-home
 | ||||||
|  | - - final-message
 | ||||||
|  | - - power-state-change
 | ||||||
|  | -
 | ||||||
|  | -system_info:
 | ||||||
|  | -  default_user:
 | ||||||
|  | -    name: cloud-user
 | ||||||
|  | -    lock_passwd: true
 | ||||||
|  | -    gecos: Cloud User
 | ||||||
|  | -    groups: [adm, systemd-journal]
 | ||||||
|  | -    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
 | ||||||
|  | -    shell: /bin/bash
 | ||||||
|  | -  distro: rhel
 | ||||||
|  | -  paths:
 | ||||||
|  | -    cloud_dir: /var/lib/cloud
 | ||||||
|  | -    templates_dir: /etc/cloud/templates
 | ||||||
|  | -  ssh_svcname: sshd
 | ||||||
|  | -
 | ||||||
|  | -# vim:syntax=yaml
 | ||||||
|  | diff --git a/rhel/systemd/cloud-config.service b/rhel/systemd/cloud-config.service
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index f3dcd4be..00000000
 | ||||||
|  | --- a/rhel/systemd/cloud-config.service
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,18 +0,0 @@
 | ||||||
|  | -[Unit]
 | ||||||
|  | -Description=Apply the settings specified in cloud-config
 | ||||||
|  | -After=network-online.target cloud-config.target
 | ||||||
|  | -Wants=network-online.target cloud-config.target
 | ||||||
|  | -ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | -ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | -
 | ||||||
|  | -[Service]
 | ||||||
|  | -Type=oneshot
 | ||||||
|  | -ExecStart=/usr/bin/cloud-init modules --mode=config
 | ||||||
|  | -RemainAfterExit=yes
 | ||||||
|  | -TimeoutSec=0
 | ||||||
|  | -
 | ||||||
|  | -# Output needs to appear in instance console output
 | ||||||
|  | -StandardOutput=journal+console
 | ||||||
|  | -
 | ||||||
|  | -[Install]
 | ||||||
|  | -WantedBy=cloud-init.target
 | ||||||
|  | diff --git a/rhel/systemd/cloud-config.target b/rhel/systemd/cloud-config.target
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index ae9b7d02..00000000
 | ||||||
|  | --- a/rhel/systemd/cloud-config.target
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,11 +0,0 @@
 | ||||||
|  | -# cloud-init normally emits a "cloud-config" upstart event to inform third
 | ||||||
|  | -# parties that cloud-config is available, which does us no good when we're
 | ||||||
|  | -# using systemd.  cloud-config.target serves as this synchronization point
 | ||||||
|  | -# instead.  Services that would "start on cloud-config" with upstart can
 | ||||||
|  | -# instead use "After=cloud-config.target" and "Wants=cloud-config.target"
 | ||||||
|  | -# as appropriate.
 | ||||||
|  | -
 | ||||||
|  | -[Unit]
 | ||||||
|  | -Description=Cloud-config availability
 | ||||||
|  | -Wants=cloud-init-local.service cloud-init.service
 | ||||||
|  | -After=cloud-init-local.service cloud-init.service
 | ||||||
|  | diff --git a/rhel/systemd/cloud-final.service b/rhel/systemd/cloud-final.service
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index e281c0cf..00000000
 | ||||||
|  | --- a/rhel/systemd/cloud-final.service
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,24 +0,0 @@
 | ||||||
|  | -[Unit]
 | ||||||
|  | -Description=Execute cloud user/final scripts
 | ||||||
|  | -After=network-online.target cloud-config.service rc-local.service
 | ||||||
|  | -Wants=network-online.target cloud-config.service
 | ||||||
|  | -ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | -ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | -
 | ||||||
|  | -[Service]
 | ||||||
|  | -Type=oneshot
 | ||||||
|  | -ExecStart=/usr/bin/cloud-init modules --mode=final
 | ||||||
|  | -RemainAfterExit=yes
 | ||||||
|  | -TimeoutSec=0
 | ||||||
|  | -KillMode=process
 | ||||||
|  | -# Restart NetworkManager if it is present and running.
 | ||||||
|  | -ExecStartPost=/bin/sh -c 'u=NetworkManager.service; \
 | ||||||
|  | - out=$(systemctl show --property=SubState $u) || exit; \
 | ||||||
|  | - [ "$out" = "SubState=running" ] || exit 0; \
 | ||||||
|  | - systemctl reload-or-try-restart $u'
 | ||||||
|  | -
 | ||||||
|  | -# Output needs to appear in instance console output
 | ||||||
|  | -StandardOutput=journal+console
 | ||||||
|  | -
 | ||||||
|  | -[Install]
 | ||||||
|  | -WantedBy=cloud-init.target
 | ||||||
|  | diff --git a/rhel/systemd/cloud-init-local.service b/rhel/systemd/cloud-init-local.service
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index 8f9f6c9f..00000000
 | ||||||
|  | --- a/rhel/systemd/cloud-init-local.service
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,31 +0,0 @@
 | ||||||
|  | -[Unit]
 | ||||||
|  | -Description=Initial cloud-init job (pre-networking)
 | ||||||
|  | -DefaultDependencies=no
 | ||||||
|  | -Wants=network-pre.target
 | ||||||
|  | -After=systemd-remount-fs.service
 | ||||||
|  | -Requires=dbus.socket
 | ||||||
|  | -After=dbus.socket
 | ||||||
|  | -Before=NetworkManager.service network.service
 | ||||||
|  | -Before=network-pre.target
 | ||||||
|  | -Before=shutdown.target
 | ||||||
|  | -Before=firewalld.target
 | ||||||
|  | -Conflicts=shutdown.target
 | ||||||
|  | -RequiresMountsFor=/var/lib/cloud
 | ||||||
|  | -ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | -ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | -
 | ||||||
|  | -[Service]
 | ||||||
|  | -Type=oneshot
 | ||||||
|  | -ExecStartPre=/bin/mkdir -p /run/cloud-init
 | ||||||
|  | -ExecStartPre=/sbin/restorecon /run/cloud-init
 | ||||||
|  | -ExecStartPre=/usr/bin/touch /run/cloud-init/enabled
 | ||||||
|  | -ExecStart=/usr/bin/cloud-init init --local
 | ||||||
|  | -ExecStart=/bin/touch /run/cloud-init/network-config-ready
 | ||||||
|  | -RemainAfterExit=yes
 | ||||||
|  | -TimeoutSec=0
 | ||||||
|  | -
 | ||||||
|  | -# Output needs to appear in instance console output
 | ||||||
|  | -StandardOutput=journal+console
 | ||||||
|  | -
 | ||||||
|  | -[Install]
 | ||||||
|  | -WantedBy=cloud-init.target
 | ||||||
|  | diff --git a/rhel/systemd/cloud-init.service b/rhel/systemd/cloud-init.service
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index 0b3d796d..00000000
 | ||||||
|  | --- a/rhel/systemd/cloud-init.service
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,26 +0,0 @@
 | ||||||
|  | -[Unit]
 | ||||||
|  | -Description=Initial cloud-init job (metadata service crawler)
 | ||||||
|  | -Wants=cloud-init-local.service
 | ||||||
|  | -Wants=sshd-keygen.service
 | ||||||
|  | -Wants=sshd.service
 | ||||||
|  | -After=cloud-init-local.service
 | ||||||
|  | -After=NetworkManager.service network.service
 | ||||||
|  | -After=NetworkManager-wait-online.service
 | ||||||
|  | -Before=network-online.target
 | ||||||
|  | -Before=sshd-keygen.service
 | ||||||
|  | -Before=sshd.service
 | ||||||
|  | -Before=systemd-user-sessions.service
 | ||||||
|  | -ConditionPathExists=!/etc/cloud/cloud-init.disabled
 | ||||||
|  | -ConditionKernelCommandLine=!cloud-init=disabled
 | ||||||
|  | -
 | ||||||
|  | -[Service]
 | ||||||
|  | -Type=oneshot
 | ||||||
|  | -ExecStart=/usr/bin/cloud-init init
 | ||||||
|  | -RemainAfterExit=yes
 | ||||||
|  | -TimeoutSec=0
 | ||||||
|  | -
 | ||||||
|  | -# Output needs to appear in instance console output
 | ||||||
|  | -StandardOutput=journal+console
 | ||||||
|  | -
 | ||||||
|  | -[Install]
 | ||||||
|  | -WantedBy=cloud-init.target
 | ||||||
|  | diff --git a/rhel/systemd/cloud-init.target b/rhel/systemd/cloud-init.target
 | ||||||
|  | deleted file mode 100644 | ||||||
|  | index 083c3b6f..00000000
 | ||||||
|  | --- a/rhel/systemd/cloud-init.target
 | ||||||
|  | +++ /dev/null
 | ||||||
|  | @@ -1,7 +0,0 @@
 | ||||||
|  | -# cloud-init target is enabled by cloud-init-generator
 | ||||||
|  | -# To disable it you can either:
 | ||||||
|  | -#  a.) boot with kernel cmdline of 'cloud-init=disabled'
 | ||||||
|  | -#  b.) touch a file /etc/cloud/cloud-init.disabled
 | ||||||
|  | -[Unit]
 | ||||||
|  | -Description=Cloud-init target
 | ||||||
|  | -After=multi-user.target
 | ||||||
|  | diff --git a/setup.py b/setup.py
 | ||||||
|  | index 3c377eaa..a9132d2c 100755
 | ||||||
|  | --- a/setup.py
 | ||||||
|  | +++ b/setup.py
 | ||||||
|  | @@ -139,6 +139,21 @@ INITSYS_FILES = {
 | ||||||
|  |      "sysvinit_deb": [f for f in glob("sysvinit/debian/*") if is_f(f)], | ||||||
|  |      "sysvinit_openrc": [f for f in glob("sysvinit/gentoo/*") if is_f(f)], | ||||||
|  |      "sysvinit_suse": [f for f in glob("sysvinit/suse/*") if is_f(f)], | ||||||
|  | +    "systemd": [
 | ||||||
|  | +        render_tmpl(f)
 | ||||||
|  | +        for f in (
 | ||||||
|  | +            glob("systemd/*.tmpl")
 | ||||||
|  | +            + glob("systemd/*.service")
 | ||||||
|  | +            + glob("systemd/*.socket")
 | ||||||
|  | +            + glob("systemd/*.target")
 | ||||||
|  | +        )
 | ||||||
|  | +        if (is_f(f) and not is_generator(f))
 | ||||||
|  | +    ],
 | ||||||
|  | +    "systemd.generators": [
 | ||||||
|  | +        render_tmpl(f, mode=0o755)
 | ||||||
|  | +        for f in glob("systemd/*")
 | ||||||
|  | +        if is_f(f) and is_generator(f)
 | ||||||
|  | +    ],
 | ||||||
|  |      "upstart": [f for f in glob("upstart/*") if is_f(f)], | ||||||
|  |  } | ||||||
|  |  INITSYS_ROOTS = { | ||||||
|  | @@ -148,6 +163,10 @@ INITSYS_ROOTS = {
 | ||||||
|  |      "sysvinit_deb": "etc/init.d", | ||||||
|  |      "sysvinit_openrc": "etc/init.d", | ||||||
|  |      "sysvinit_suse": "etc/init.d", | ||||||
|  | +    "systemd": pkg_config_read("systemd", "systemdsystemunitdir"),
 | ||||||
|  | +    "systemd.generators": pkg_config_read(
 | ||||||
|  | +        "systemd", "systemdsystemgeneratordir"
 | ||||||
|  | +    ),
 | ||||||
|  |      "upstart": "etc/init/", | ||||||
|  |  } | ||||||
|  |  INITSYS_TYPES = sorted([f.partition(".")[0] for f in INITSYS_ROOTS.keys()]) | ||||||
|  | @@ -262,13 +281,15 @@ data_files = [
 | ||||||
|  |      ( | ||||||
|  |          USR_LIB_EXEC + "/cloud-init", | ||||||
|  |          [ | ||||||
|  | +            "tools/ds-identify",
 | ||||||
|  |              "tools/hook-hotplug", | ||||||
|  |              "tools/uncloud-init", | ||||||
|  |              "tools/write-ssh-key-fingerprints", | ||||||
|  |          ], | ||||||
|  |      ), | ||||||
|  |      ( | ||||||
|  | -        ETC + "/bash_completion.d", ["bash_completion/cloud-init"],
 | ||||||
|  | +        USR + "/share/bash-completion/completions",
 | ||||||
|  | +        ["bash_completion/cloud-init"],
 | ||||||
|  |      ), | ||||||
|  |      (USR + "/share/doc/cloud-init", [f for f in glob("doc/*") if is_f(f)]), | ||||||
|  |      ( | ||||||
|  | @@ -287,7 +308,8 @@ if not platform.system().endswith("BSD"):
 | ||||||
|  |                  ETC + "/NetworkManager/dispatcher.d/", | ||||||
|  |                  ["tools/hook-network-manager"], | ||||||
|  |              ), | ||||||
|  | -            ("/usr/lib/udev/rules.d", [f for f in glob("udev/*.rules")]),
 | ||||||
|  | +            (ETC + "/dhcp/dhclient-exit-hooks.d/", ["tools/hook-dhclient"]),
 | ||||||
|  | +            (LIB + "/udev/rules.d", [f for f in glob("udev/*.rules")]),
 | ||||||
|  |              ( | ||||||
|  |                  ETC + "/systemd/system/sshd-keygen@.service.d/", | ||||||
|  |                  ["systemd/disable-sshd-keygen-if-cloud-init-active.conf"], | ||||||
|  | @@ -317,6 +339,8 @@ setuptools.setup(
 | ||||||
|  |      scripts=["tools/cloud-init-per"], | ||||||
|  |      license="Dual-licensed under GPLv3 or Apache 2.0", | ||||||
|  |      data_files=data_files, | ||||||
|  | +    install_requires=requirements,
 | ||||||
|  | +    cmdclass=cmdclass,
 | ||||||
|  |      entry_points={ | ||||||
|  |          "console_scripts": [ | ||||||
|  |              "cloud-init = cloudinit.cmd.main:main", | ||||||
|  | -- 
 | ||||||
|  | 2.35.3 | ||||||
|  | 
 | ||||||
							
								
								
									
										164
									
								
								SOURCES/ci-Support-EC2-tags-in-instance-metadata-1309.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								SOURCES/ci-Support-EC2-tags-in-instance-metadata-1309.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,164 @@ | |||||||
|  | From fbec3008305845072a787f46008bbb82d89dec53 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | Date: Mon, 30 May 2022 16:46:41 +0200 | ||||||
|  | Subject: [PATCH] Support EC2 tags in instance metadata (#1309) | ||||||
|  | 
 | ||||||
|  | RH-Author: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | RH-MergeRequest: 70: Support EC2 tags in instance metadata (#1309) | ||||||
|  | RH-Commit: [1/1] 2497547016173a4c6e7d3c900f80de390d445c44 | ||||||
|  | RH-Bugzilla: 2082686 | ||||||
|  | RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com> | ||||||
|  | RH-Acked-by: Mohamed Gamal Morsy <mmorsy@redhat.com> | ||||||
|  | 
 | ||||||
|  | commit 40c52ce1f4049449b04f93226721f63af874c5c7 | ||||||
|  | Author: Eduardo Dobay <edudobay@users.noreply.github.com> | ||||||
|  | Date:   Wed Apr 6 01:28:01 2022 -0300 | ||||||
|  | 
 | ||||||
|  |     Support EC2 tags in instance metadata (#1309) | ||||||
|  | 
 | ||||||
|  |     Add support for newer EC2 metadata versions (up to 2021-03-23), so that | ||||||
|  |     tags can be retrieved from the `ds.meta_data.tags` field, as well as | ||||||
|  |     with any new fields that might have been added since the 2018-09-24 | ||||||
|  |     version. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  cloudinit/sources/DataSourceEc2.py  |  5 +++-- | ||||||
|  |  doc/rtd/topics/datasources/ec2.rst  | 28 ++++++++++++++++++++++------ | ||||||
|  |  tests/unittests/sources/test_ec2.py | 26 +++++++++++++++++++++++++- | ||||||
|  |  tools/.github-cla-signers           |  1 + | ||||||
|  |  4 files changed, 51 insertions(+), 9 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py
 | ||||||
|  | index 03b3870c..a030b498 100644
 | ||||||
|  | --- a/cloudinit/sources/DataSourceEc2.py
 | ||||||
|  | +++ b/cloudinit/sources/DataSourceEc2.py
 | ||||||
|  | @@ -61,8 +61,9 @@ class DataSourceEc2(sources.DataSource):
 | ||||||
|  |      min_metadata_version = "2009-04-04" | ||||||
|  |   | ||||||
|  |      # Priority ordered list of additional metadata versions which will be tried | ||||||
|  | -    # for extended metadata content. IPv6 support comes in 2016-09-02
 | ||||||
|  | -    extended_metadata_versions = ["2018-09-24", "2016-09-02"]
 | ||||||
|  | +    # for extended metadata content. IPv6 support comes in 2016-09-02.
 | ||||||
|  | +    # Tags support comes in 2021-03-23.
 | ||||||
|  | +    extended_metadata_versions = ["2021-03-23", "2018-09-24", "2016-09-02"]
 | ||||||
|  |   | ||||||
|  |      # Setup read_url parameters per get_url_params. | ||||||
|  |      url_max_wait = 120 | ||||||
|  | diff --git a/doc/rtd/topics/datasources/ec2.rst b/doc/rtd/topics/datasources/ec2.rst
 | ||||||
|  | index 94e4158d..77232269 100644
 | ||||||
|  | --- a/doc/rtd/topics/datasources/ec2.rst
 | ||||||
|  | +++ b/doc/rtd/topics/datasources/ec2.rst
 | ||||||
|  | @@ -38,11 +38,26 @@ Userdata is accessible via the following URL:
 | ||||||
|  |      GET http://169.254.169.254/2009-04-04/user-data | ||||||
|  |      1234,fred,reboot,true | 4512,jimbo, | 173,,, | ||||||
|  |   | ||||||
|  | -Note that there are multiple versions of this data provided, cloud-init
 | ||||||
|  | -by default uses **2009-04-04** but newer versions can be supported with
 | ||||||
|  | -relative ease (newer versions have more data exposed, while maintaining
 | ||||||
|  | -backward compatibility with the previous versions).
 | ||||||
|  | -Version **2016-09-02** is required for secondary IP address support.
 | ||||||
|  | +Note that there are multiple EC2 Metadata versions of this data provided
 | ||||||
|  | +to instances. cloud-init will attempt to use the most recent API version it
 | ||||||
|  | +supports in order to get latest API features and instance-data. If a given
 | ||||||
|  | +API version is not exposed to the instance, those API features will be
 | ||||||
|  | +unavailable to the instance.
 | ||||||
|  | +
 | ||||||
|  | +
 | ||||||
|  | ++----------------+----------------------------------------------------------+
 | ||||||
|  | ++ EC2 version    | supported instance-data/feature                          |
 | ||||||
|  | ++================+==========================================================+
 | ||||||
|  | ++ **2021-03-23** | Required for Instance tag support. This feature must be  |
 | ||||||
|  | +|                | enabled individually on each instance.  See the          |
 | ||||||
|  | +|                | `EC2 tags user guide`_.                                  |
 | ||||||
|  | ++----------------+----------------------------------------------------------+
 | ||||||
|  | +| **2016-09-02** | Required for secondary IP address support.               |
 | ||||||
|  | ++----------------+----------------------------------------------------------+
 | ||||||
|  | +| **2009-04-04** | Minimum supports EC2 API version for meta-data and       |
 | ||||||
|  | +|                | user-data.                                               |
 | ||||||
|  | ++----------------+----------------------------------------------------------+
 | ||||||
|  | +
 | ||||||
|  |   | ||||||
|  |  To see which versions are supported from your cloud provider use the following | ||||||
|  |  URL: | ||||||
|  | @@ -71,7 +86,7 @@ configuration (in `/etc/cloud/cloud.cfg` or `/etc/cloud/cloud.cfg.d/`).
 | ||||||
|  |   | ||||||
|  |  The settings that may be configured are: | ||||||
|  |   | ||||||
|  | - * **metadata_urls**: This list of urls will be searched for an Ec2
 | ||||||
|  | + * **metadata_urls**: This list of urls will be searched for an EC2
 | ||||||
|  |     metadata service. The first entry that successfully returns a 200 response | ||||||
|  |     for <url>/<version>/meta-data/instance-id will be selected. | ||||||
|  |     (default: ['http://169.254.169.254', 'http://instance-data:8773']). | ||||||
|  | @@ -121,4 +136,5 @@ Notes
 | ||||||
|  |     For example: the primary NIC will have a DHCP route-metric of 100, | ||||||
|  |     the next NIC will be 200. | ||||||
|  |   | ||||||
|  | +.. _EC2 tags user guide: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#work-with-tags-in-IMDS
 | ||||||
|  |  .. vi: textwidth=79 | ||||||
|  | diff --git a/tests/unittests/sources/test_ec2.py b/tests/unittests/sources/test_ec2.py
 | ||||||
|  | index b376660d..7c8a5ea5 100644
 | ||||||
|  | --- a/tests/unittests/sources/test_ec2.py
 | ||||||
|  | +++ b/tests/unittests/sources/test_ec2.py
 | ||||||
|  | @@ -210,6 +210,17 @@ SECONDARY_IP_METADATA_2018_09_24 = {
 | ||||||
|  |   | ||||||
|  |  M_PATH_NET = "cloudinit.sources.DataSourceEc2.net." | ||||||
|  |   | ||||||
|  | +TAGS_METADATA_2021_03_23 = {
 | ||||||
|  | +    **DEFAULT_METADATA,
 | ||||||
|  | +    "tags": {
 | ||||||
|  | +        "instance": {
 | ||||||
|  | +            "Environment": "production",
 | ||||||
|  | +            "Application": "test",
 | ||||||
|  | +            "TagWithoutValue": "",
 | ||||||
|  | +        }
 | ||||||
|  | +    },
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |   | ||||||
|  |  def _register_ssh_keys(rfunc, base_url, keys_data): | ||||||
|  |      """handle ssh key inconsistencies. | ||||||
|  | @@ -670,7 +681,7 @@ class TestEc2(test_helpers.HttprettyTestCase):
 | ||||||
|  |          logs_with_redacted = [log for log in all_logs if REDACT_TOK in log] | ||||||
|  |          logs_with_token = [log for log in all_logs if "API-TOKEN" in log] | ||||||
|  |          self.assertEqual(1, len(logs_with_redacted_ttl)) | ||||||
|  | -        self.assertEqual(81, len(logs_with_redacted))
 | ||||||
|  | +        self.assertEqual(83, len(logs_with_redacted))
 | ||||||
|  |          self.assertEqual(0, len(logs_with_token)) | ||||||
|  |   | ||||||
|  |      @mock.patch("cloudinit.net.dhcp.maybe_perform_dhcp_discovery") | ||||||
|  | @@ -811,6 +822,19 @@ class TestEc2(test_helpers.HttprettyTestCase):
 | ||||||
|  |          ) | ||||||
|  |          self.assertIn("Crawl of metadata service took", self.logs.getvalue()) | ||||||
|  |   | ||||||
|  | +    def test_get_instance_tags(self):
 | ||||||
|  | +        ds = self._setup_ds(
 | ||||||
|  | +            platform_data=self.valid_platform_data,
 | ||||||
|  | +            sys_cfg={"datasource": {"Ec2": {"strict_id": False}}},
 | ||||||
|  | +            md={"md": TAGS_METADATA_2021_03_23},
 | ||||||
|  | +        )
 | ||||||
|  | +        self.assertTrue(ds.get_data())
 | ||||||
|  | +        self.assertIn("tags", ds.metadata)
 | ||||||
|  | +        self.assertIn("instance", ds.metadata["tags"])
 | ||||||
|  | +        instance_tags = ds.metadata["tags"]["instance"]
 | ||||||
|  | +        self.assertEqual(instance_tags["Application"], "test")
 | ||||||
|  | +        self.assertEqual(instance_tags["Environment"], "production")
 | ||||||
|  | +
 | ||||||
|  |   | ||||||
|  |  class TestGetSecondaryAddresses(test_helpers.CiTestCase): | ||||||
|  |   | ||||||
|  | diff --git a/tools/.github-cla-signers b/tools/.github-cla-signers
 | ||||||
|  | index ac157a2f..9f71ea0c 100644
 | ||||||
|  | --- a/tools/.github-cla-signers
 | ||||||
|  | +++ b/tools/.github-cla-signers
 | ||||||
|  | @@ -26,6 +26,7 @@ dermotbradley
 | ||||||
|  |  dhensby | ||||||
|  |  eandersson | ||||||
|  |  eb3095 | ||||||
|  | +edudobay
 | ||||||
|  |  emmanuelthome | ||||||
|  |  eslerm | ||||||
|  |  esposem | ||||||
|  | -- 
 | ||||||
|  | 2.27.0 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,110 @@ | |||||||
|  | From 13ded463a6a0b1b0bf0dffc0a997f006dd25c4f3 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | Date: Thu, 19 May 2022 15:51:27 +0200 | ||||||
|  | Subject: [PATCH 2/4] Use Network-Manager and Netplan as default renderers for | ||||||
|  |  RHEL and Fedora (#1465) | ||||||
|  | 
 | ||||||
|  | RH-Author: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | RH-MergeRequest: 57: Add native NetworkManager support (#1224) | ||||||
|  | RH-Commit: [2/2] f2f977564bea496b0d76c0cef242959d03c2c73e | ||||||
|  | RH-Bugzilla: 2059872 | ||||||
|  | RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com> | ||||||
|  | RH-Acked-by: Jon Maloy <jmaloy@redhat.com> | ||||||
|  | RH-Acked-by: Eduardo Otubo <otubo@redhat.com> | ||||||
|  | 
 | ||||||
|  | commit 7703aa98b89c8daba207c28a0422268ead10019a | ||||||
|  | Author: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | Date:   Thu May 19 15:05:01 2022 +0200 | ||||||
|  | 
 | ||||||
|  |     Use Network-Manager and Netplan as default renderers for RHEL and Fedora (#1465) | ||||||
|  | 
 | ||||||
|  |     This is adapted from Neal Gompa's PR: | ||||||
|  |     https://github.com/canonical/cloud-init/pull/1435 | ||||||
|  | 
 | ||||||
|  |     The only difference is that we are not modifying renderers.py (thus | ||||||
|  |     modifying the priority of all distros), but just tweaking cloud.cfg to | ||||||
|  |     apply this change to Fedora and RHEL. Other distros can optionally | ||||||
|  |     add themselves afterwards. | ||||||
|  | 
 | ||||||
|  |             net: Prefer Netplan and NetworkManager renderers by default | ||||||
|  | 
 | ||||||
|  |             NetworkManager is used by default on a variety of Linux distributions, | ||||||
|  |             and exists as a cross-distribution network management service. | ||||||
|  | 
 | ||||||
|  |             Additionally, add information about the NetworkManager renderer to | ||||||
|  |             the cloud-init documentation. | ||||||
|  | 
 | ||||||
|  |             Because Netplan can be explicitly used to manage NetworkManager, | ||||||
|  |             it needs to be preferred before NetworkManager. | ||||||
|  | 
 | ||||||
|  |             This change is a follow-up to #1224, which added the native | ||||||
|  |             NetworkManager renderer. | ||||||
|  |             This patch has been deployed on Fedora's cloud-init package throughout | ||||||
|  |             the development of Fedora Linux 36 to verify that it works. | ||||||
|  | 
 | ||||||
|  |             This should also make it tremendously easier for Linux distributions | ||||||
|  |             to use cloud-init because now a standard configuration is supported | ||||||
|  |             by default. | ||||||
|  | 
 | ||||||
|  |             Signed-off-by: Neal Gompa <ngompa13@gmail.com> | ||||||
|  | 
 | ||||||
|  |     Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  config/cloud.cfg.tmpl             |  3 +++ | ||||||
|  |  doc/rtd/topics/network-config.rst | 12 +++++++++++- | ||||||
|  |  2 files changed, 14 insertions(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
 | ||||||
|  | index fb4b456c..86beee3c 100644
 | ||||||
|  | --- a/config/cloud.cfg.tmpl
 | ||||||
|  | +++ b/config/cloud.cfg.tmpl
 | ||||||
|  | @@ -330,4 +330,7 @@ system_info:
 | ||||||
|  |  {% elif variant in ["dragonfly"] %} | ||||||
|  |     network: | ||||||
|  |        renderers: ['freebsd'] | ||||||
|  | +{% elif variant in ["rhel", "fedora"] %}
 | ||||||
|  | +   network:
 | ||||||
|  | +      renderers: ['netplan', 'network-manager', 'networkd', 'sysconfig', 'eni']
 | ||||||
|  |  {% endif %} | ||||||
|  | diff --git a/doc/rtd/topics/network-config.rst b/doc/rtd/topics/network-config.rst
 | ||||||
|  | index c461a3fe..f503caab 100644
 | ||||||
|  | --- a/doc/rtd/topics/network-config.rst
 | ||||||
|  | +++ b/doc/rtd/topics/network-config.rst
 | ||||||
|  | @@ -188,6 +188,15 @@ generated configuration into an internal network configuration state. From
 | ||||||
|  |  this state `Cloud-init`_ delegates rendering of the configuration to Distro | ||||||
|  |  supported formats.  The following ``renderers`` are supported in cloud-init: | ||||||
|  |   | ||||||
|  | +- **NetworkManager**
 | ||||||
|  | +
 | ||||||
|  | +`NetworkManager <https://networkmanager.dev>`_ is the standard Linux network
 | ||||||
|  | +configuration tool suite. It supports a wide range of networking setups.
 | ||||||
|  | +Configuration is typically stored in ``/etc/NetworkManager``.
 | ||||||
|  | +
 | ||||||
|  | +It is the default for a number of Linux distributions, notably Fedora;
 | ||||||
|  | +CentOS/RHEL; and derivatives.
 | ||||||
|  | +
 | ||||||
|  |  - **ENI** | ||||||
|  |   | ||||||
|  |  /etc/network/interfaces or ``ENI`` is supported by the ``ifupdown`` package | ||||||
|  | @@ -215,6 +224,7 @@ is as follows:
 | ||||||
|  |  - ENI | ||||||
|  |  - Sysconfig | ||||||
|  |  - Netplan | ||||||
|  | +- NetworkManager
 | ||||||
|  |   | ||||||
|  |  When applying the policy, `Cloud-init`_ checks if the current instance has the | ||||||
|  |  correct binaries and paths to support the renderer.  The first renderer that | ||||||
|  | @@ -223,7 +233,7 @@ supplying an updated configuration in cloud-config. ::
 | ||||||
|  |   | ||||||
|  |    system_info: | ||||||
|  |      network: | ||||||
|  | -      renderers: ['netplan', 'eni', 'sysconfig', 'freebsd', 'netbsd', 'openbsd']
 | ||||||
|  | +      renderers: ['netplan', 'network-manager', 'eni', 'sysconfig', 'freebsd', 'netbsd', 'openbsd']
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  Network Configuration Tools | ||||||
|  | -- 
 | ||||||
|  | 2.35.3 | ||||||
|  | 
 | ||||||
| @ -6,7 +6,7 @@ | |||||||
| 
 | 
 | ||||||
| Name:           cloud-init | Name:           cloud-init | ||||||
| Version:        22.1 | Version:        22.1 | ||||||
| Release:        1%{?dist} | Release:        3%{?dist} | ||||||
| Summary:        Cloud instance init scripts | Summary:        Cloud instance init scripts | ||||||
| 
 | 
 | ||||||
| Group:          System Environment/Base | Group:          System Environment/Base | ||||||
| @ -21,6 +21,16 @@ Patch0003: 0003-limit-permissions-on-def_log_file.patch | |||||||
| Patch0004: 0004-include-NOZEROCONF-yes-in-etc-sysconfig-network.patch | Patch0004: 0004-include-NOZEROCONF-yes-in-etc-sysconfig-network.patch | ||||||
| Patch0005: 0005-Remove-race-condition-between-cloud-init-and-Network.patch | Patch0005: 0005-Remove-race-condition-between-cloud-init-and-Network.patch | ||||||
| Patch0006: 0006-rhel-cloud.cfg-remove-ssh_genkeytypes-in-settings.py.patch | Patch0006: 0006-rhel-cloud.cfg-remove-ssh_genkeytypes-in-settings.py.patch | ||||||
|  | # For bz#2059872 - [RHEL-8]Rebase cloud-init from Fedora so it can configure networking using NM keyfiles | ||||||
|  | Patch7: ci-Add-native-NetworkManager-support-1224.patch | ||||||
|  | # For bz#2059872 - [RHEL-8]Rebase cloud-init from Fedora so it can configure networking using NM keyfiles | ||||||
|  | Patch8: ci-Use-Network-Manager-and-Netplan-as-default-renderers.patch | ||||||
|  | # For bz#2082071 - Align cloud.cfg file and systemd with cloud-init upstream .tmpl files | ||||||
|  | Patch9: ci-Align-rhel-custom-files-with-upstream-1431.patch | ||||||
|  | # For bz#2082071 - Align cloud.cfg file and systemd with cloud-init upstream .tmpl files | ||||||
|  | Patch10: ci-Remove-rhel-specific-files.patch | ||||||
|  | # For bz#2082686 - [cloud][init] Add support for reading tags from instance metadata | ||||||
|  | Patch11: ci-Support-EC2-tags-in-instance-metadata-1309.patch | ||||||
| 
 | 
 | ||||||
| BuildArch:      noarch | BuildArch:      noarch | ||||||
| 
 | 
 | ||||||
| @ -96,8 +106,6 @@ sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/env python3|' \ | |||||||
| %install | %install | ||||||
| %py3_install -- | %py3_install -- | ||||||
| 
 | 
 | ||||||
| python3 tools/render-cloudcfg --variant fedora > $RPM_BUILD_ROOT/%{_sysconfdir}/cloud/cloud.cfg |  | ||||||
| 
 |  | ||||||
| sed -i "s,@@PACKAGED_VERSION@@,%{version}-%{release}," $RPM_BUILD_ROOT/%{python3_sitelib}/cloudinit/version.py | sed -i "s,@@PACKAGED_VERSION@@,%{version}-%{release}," $RPM_BUILD_ROOT/%{python3_sitelib}/cloudinit/version.py | ||||||
| 
 | 
 | ||||||
| mkdir -p $RPM_BUILD_ROOT/var/lib/cloud | mkdir -p $RPM_BUILD_ROOT/var/lib/cloud | ||||||
| @ -107,9 +115,6 @@ mkdir -p $RPM_BUILD_ROOT/run/cloud-init | |||||||
| mkdir -p $RPM_BUILD_ROOT/%{_tmpfilesdir} | mkdir -p $RPM_BUILD_ROOT/%{_tmpfilesdir} | ||||||
| cp -p %{SOURCE1} $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf | cp -p %{SOURCE1} $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf | ||||||
| 
 | 
 | ||||||
| # We supply our own config file since our software differs from Ubuntu's. |  | ||||||
| cp -p rhel/cloud.cfg $RPM_BUILD_ROOT/%{_sysconfdir}/cloud/cloud.cfg |  | ||||||
| 
 |  | ||||||
| mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d | mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d | ||||||
| cp -p tools/21-cloudinit.conf $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudinit.conf | cp -p tools/21-cloudinit.conf $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudinit.conf | ||||||
| 
 | 
 | ||||||
| @ -117,17 +122,10 @@ cp -p tools/21-cloudinit.conf $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudi | |||||||
| mv $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/hook-network-manager \ | mv $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/hook-network-manager \ | ||||||
|    $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/cloud-init-azure-hook |    $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/cloud-init-azure-hook | ||||||
| 
 | 
 | ||||||
| # Install our own systemd units (rhbz#1440831) |  | ||||||
| mkdir -p $RPM_BUILD_ROOT%{_unitdir} |  | ||||||
| cp rhel/systemd/* $RPM_BUILD_ROOT%{_unitdir}/ |  | ||||||
| 
 |  | ||||||
| [ ! -d $RPM_BUILD_ROOT/usr/lib/systemd/system-generators ] && mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system-generators | [ ! -d $RPM_BUILD_ROOT/usr/lib/systemd/system-generators ] && mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system-generators | ||||||
| python3 tools/render-cloudcfg --variant rhel systemd/cloud-init-generator.tmpl > $RPM_BUILD_ROOT/usr/lib/systemd/system-generators/cloud-init-generator | python3 tools/render-cloudcfg --variant rhel systemd/cloud-init-generator.tmpl > $RPM_BUILD_ROOT/usr/lib/systemd/system-generators/cloud-init-generator | ||||||
| chmod 755 $RPM_BUILD_ROOT/usr/lib/systemd/system-generators/cloud-init-generator | chmod 755 $RPM_BUILD_ROOT/usr/lib/systemd/system-generators/cloud-init-generator | ||||||
| 
 | 
 | ||||||
| [ ! -d $RPM_BUILD_ROOT/usr/lib/%{name} ] && mkdir -p $RPM_BUILD_ROOT/usr/lib/%{name} |  | ||||||
| cp -p tools/ds-identify $RPM_BUILD_ROOT%{_libexecdir}/%{name}/ds-identify |  | ||||||
| 
 |  | ||||||
| # installing man pages | # installing man pages | ||||||
| mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1/ | mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1/ | ||||||
| for man in cloud-id.1 cloud-init.1 cloud-init-per.1; do | for man in cloud-id.1 cloud-init.1 cloud-init-per.1; do | ||||||
| @ -183,7 +181,6 @@ fi | |||||||
| 
 | 
 | ||||||
| %files | %files | ||||||
| %license LICENSE | %license LICENSE | ||||||
| %doc ChangeLog rhel/README.rhel |  | ||||||
| %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg | %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg | ||||||
| %dir               %{_sysconfdir}/cloud/cloud.cfg.d | %dir               %{_sysconfdir}/cloud/cloud.cfg.d | ||||||
| %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/*.cfg | %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/*.cfg | ||||||
| @ -193,6 +190,8 @@ fi | |||||||
| %{_unitdir}/cloud-config.service | %{_unitdir}/cloud-config.service | ||||||
| %{_unitdir}/cloud-config.target | %{_unitdir}/cloud-config.target | ||||||
| %{_unitdir}/cloud-final.service | %{_unitdir}/cloud-final.service | ||||||
|  | %{_unitdir}/cloud-init-hotplugd.service | ||||||
|  | %{_unitdir}/cloud-init-hotplugd.socket | ||||||
| %{_unitdir}/cloud-init-local.service | %{_unitdir}/cloud-init-local.service | ||||||
| %{_unitdir}/cloud-init.service | %{_unitdir}/cloud-init.service | ||||||
| %{_unitdir}/cloud-init.target | %{_unitdir}/cloud-init.target | ||||||
| @ -205,10 +204,10 @@ fi | |||||||
| %dir %verify(not mode) /run/cloud-init | %dir %verify(not mode) /run/cloud-init | ||||||
| %dir /var/lib/cloud | %dir /var/lib/cloud | ||||||
| /etc/NetworkManager/dispatcher.d/cloud-init-azure-hook | /etc/NetworkManager/dispatcher.d/cloud-init-azure-hook | ||||||
| %{_udevrulesdir}/66-azure-ephemeral.rules | /etc/dhcp/dhclient-exit-hooks.d/hook-dhclient | ||||||
| %{_sysconfdir}/bash_completion.d/cloud-init | /lib/udev/rules.d/66-azure-ephemeral.rules | ||||||
|  | %{_datadir}/bash-completion/completions/cloud-init | ||||||
| %{_bindir}/cloud-id | %{_bindir}/cloud-id | ||||||
| %{_libexecdir}/%{name}/ds-identify |  | ||||||
| /usr/lib/systemd/system-generators/cloud-init-generator | /usr/lib/systemd/system-generators/cloud-init-generator | ||||||
| %{_sysconfdir}/systemd/system/sshd-keygen@.service.d/disable-sshd-keygen-if-cloud-init-active.conf | %{_sysconfdir}/systemd/system/sshd-keygen@.service.d/disable-sshd-keygen-if-cloud-init-active.conf | ||||||
| 
 | 
 | ||||||
| @ -217,6 +216,21 @@ fi | |||||||
| %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf | %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Thu Jun 23 2022 Jon Maloy <jmaloy@redhat.com> - 22.1-3 | ||||||
|  | - ci-Support-EC2-tags-in-instance-metadata-1309.patch [bz#2082686] | ||||||
|  | - Resolves: bz#2082686 | ||||||
|  |   ([cloud][init] Add support for reading tags from instance metadata) | ||||||
|  | 
 | ||||||
|  | * Tue May 31 2022 Jon Maloy <jmaloy@redhat.com> - 22.1-2 | ||||||
|  | - ci-Add-native-NetworkManager-support-1224.patch [bz#2059872] | ||||||
|  | - ci-Use-Network-Manager-and-Netplan-as-default-renderers.patch [bz#2059872] | ||||||
|  | - ci-Align-rhel-custom-files-with-upstream-1431.patch [bz#2082071] | ||||||
|  | - ci-Remove-rhel-specific-files.patch [bz#2082071] | ||||||
|  | - Resolves: bz#2059872 | ||||||
|  |   ([RHEL-8]Rebase cloud-init from Fedora so it can configure networking using NM keyfiles) | ||||||
|  | - Resolves: bz#2082071 | ||||||
|  |   (Align cloud.cfg file and systemd with cloud-init upstream .tmpl files) | ||||||
|  | 
 | ||||||
| * Mon Apr 25 2022 Amy Chen <xiachen@redhat.com> - 22.1-1 | * Mon Apr 25 2022 Amy Chen <xiachen@redhat.com> - 22.1-1 | ||||||
| - Rebaes to 22.1 [bz#2065544] | - Rebaes to 22.1 [bz#2065544] | ||||||
| - Resolves: bz#2065544 | - Resolves: bz#2065544 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user