diff options
author | James Falcon <therealfalcon@gmail.com> | 2021-07-19 14:13:21 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-19 14:13:21 -0500 |
commit | 184c836a16e9954a2cba11ae21f07923077ec904 (patch) | |
tree | 6289d70e4f833d300a25136dde6a56fcd1b0a0dc /systemd/cloud-init-hotplugd.service | |
parent | eacb0353803263934aa2ac827c37e461c87cb107 (diff) | |
download | vyos-cloud-init-184c836a16e9954a2cba11ae21f07923077ec904.tar.gz vyos-cloud-init-184c836a16e9954a2cba11ae21f07923077ec904.zip |
Initial hotplug support (#936)
Adds a udev script which will invoke a hotplug hook script on all net
add events. The script will write some udev arguments to a systemd FIFO
socket (to ensure we have only instance of cloud-init running at a
time), which is then read by a new service that calls a new 'cloud-init
devel hotplug-hook' command to handle the new event.
This hotplug-hook command will:
- Fetch the pickled datsource
- Verify that the hotplug event is supported/enabled
- Update the metadata for the datasource
- Ensure the hotplugged device exists within the datasource
- Apply the config change on the datasource metadata
- Bring up the new interface (or apply global network configuration)
- Save the updated metadata back to the pickle cache
Also scattered in some unrelated typing where helpful
Diffstat (limited to 'systemd/cloud-init-hotplugd.service')
-rw-r--r-- | systemd/cloud-init-hotplugd.service | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/systemd/cloud-init-hotplugd.service b/systemd/cloud-init-hotplugd.service new file mode 100644 index 00000000..b64632ef --- /dev/null +++ b/systemd/cloud-init-hotplugd.service @@ -0,0 +1,22 @@ +# Paired with cloud-init-hotplugd.socket to read from the FIFO +# /run/cloud-init/hook-hotplug-cmd which is created during a udev network +# add or remove event as processed by 10-cloud-init-hook-hotplug.rules. + +# On start, read args from the FIFO, process and provide structured arguments +# to `cloud-init devel hotplug-hook` which will setup or teardown network +# devices as configured by user-data. + +# Known bug with an enforcing SELinux policy: LP: #1936229 +# cloud-init-hotplud.service will read args from file descriptor 3 + +[Unit] +Description=cloud-init hotplug hook daemon +After=cloud-init-hotplugd.socket + +[Service] +Type=simple +ExecStart=/bin/bash -c 'read args <&3; echo "args=$args"; \ + exec /usr/bin/cloud-init devel hotplug-hook $args; \ + exit 0' +SyslogIdentifier=cloud-init-hotplugd +TimeoutStopSec=5 |