feat(units): Generic config drive and other systemd units.
This commit is contained in:
parent
58b091061e
commit
c438a42587
30
Documentation/config-drive.md
Normal file
30
Documentation/config-drive.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Distribution via Config Drive
|
||||||
|
|
||||||
|
CoreOS supports providing configuration data via [config drive][config-drive]
|
||||||
|
disk images. Currently only providing a single script or cloud config file is
|
||||||
|
supported.
|
||||||
|
|
||||||
|
[config-drive]: http://docs.openstack.org/user-guide/content/enable_config_drive.html#config_drive_contents
|
||||||
|
|
||||||
|
## Contents and Format
|
||||||
|
|
||||||
|
The image should be a single FAT or ISO9660 file system with the label
|
||||||
|
`config-2` and the configuration data should be located at
|
||||||
|
`openstack/latest/user_data`.
|
||||||
|
|
||||||
|
For example, to wrap up a config named `user_data` in a config drive image:
|
||||||
|
|
||||||
|
mkdir -p /tmp/new-drive/openstack/latest
|
||||||
|
cp user_data /tmp/new-drive/openstack/latest/user_data
|
||||||
|
mkisofs -R -V config-2 -o configdrive.iso /tmp/new-drive
|
||||||
|
rm -r /tmp/new-drive
|
||||||
|
|
||||||
|
## QEMU virtfs
|
||||||
|
|
||||||
|
One exception to the above, when using QEMU it is possible to skip creating an
|
||||||
|
image and use a plain directory containing the same contents:
|
||||||
|
|
||||||
|
qemu-system-x86_64 \
|
||||||
|
-fsdev local,id=conf,security_model=none,readonly,path=/tmp/new-drive \
|
||||||
|
-device virtio-9p-pci,fsdev=conf,mount_tag=config-2 \
|
||||||
|
[usual qemu options here...]
|
11
units/90-configdrive.rules
Normal file
11
units/90-configdrive.rules
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Automatically trigger configdrive mounting.
|
||||||
|
|
||||||
|
ACTION!="add|change", GOTO="coreos_configdrive_end"
|
||||||
|
|
||||||
|
# A normal config drive. Block device formatted with iso9660 or fat
|
||||||
|
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="iso9660|vfat", ENV{ID_FS_LABEL}=="config-2", TAG+="systemd", ENV{SYSTEMD_WANTS}+="configdrive-block.service"
|
||||||
|
|
||||||
|
# Addtionally support virtfs from QEMU
|
||||||
|
SUBSYSTEM=="virtio", DRIVER=="9pnet_virtio", ATTR{mount_tag}=="config-2", TAG+="systemd", ENV{SYSTEMD_WANTS}+="configdrive-virtfs.service"
|
||||||
|
|
||||||
|
LABEL="coreos_configdrive_end"
|
15
units/configdrive-block.service
Normal file
15
units/configdrive-block.service
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Mount config drive
|
||||||
|
Conflicts=configdrive-virtfs.service umount.target
|
||||||
|
ConditionPathIsMountPoint=!/media/configdrive
|
||||||
|
# Only mount config drive block devices automatically in virtual machines
|
||||||
|
ConditionVirtualization=vm
|
||||||
|
|
||||||
|
# OpenStack defined config drive so they get to stick their name in it
|
||||||
|
Wants=user-cloudinit@media-configdrive-openstack-latest-user_data.service
|
||||||
|
Before=user-cloudinit@media-configdrive-openstack-latest-user_data.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=no
|
||||||
|
ExecStart=/bin/mount -t auto -o ro,x-mount.mkdir LABEL=config-2 /media/configdrive
|
18
units/configdrive-virtfs.service
Normal file
18
units/configdrive-virtfs.service
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Mount config drive from virtfs
|
||||||
|
Conflicts=configdrive-block.service umount.target
|
||||||
|
ConditionPathIsMountPoint=!/media/configdrive
|
||||||
|
ConditionVirtualization=vm
|
||||||
|
|
||||||
|
# OpenStack defined config drive so they get to stick their name in it
|
||||||
|
Wants=user-cloudinit@media-configdrive-openstack-latest-user_data.service
|
||||||
|
Before=user-cloudinit@media-configdrive-openstack-latest-user_data.service
|
||||||
|
|
||||||
|
# Support old style setup for now
|
||||||
|
Wants=addon-run@media-configdrive.service addon-config@media-configdrive.service
|
||||||
|
Before=addon-run@media-configdrive.service addon-config@media-configdrive.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=no
|
||||||
|
ExecStart=/bin/mount -t 9p -o trans=virtio,version=9p2000.L,x-mount.mkdir config-2 /media/configdrive
|
11
units/system-cloudinit@.service
Normal file
11
units/system-cloudinit@.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Load cloud-config from %f
|
||||||
|
Requires=dbus.service
|
||||||
|
After=dbus.service
|
||||||
|
Before=system-config.target
|
||||||
|
ConditionFileNotEmpty=%f
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=yes
|
||||||
|
ExecStart=/usr/bin/coreos-cloudinit --from-file=%f
|
10
units/system-config.target
Normal file
10
units/system-config.target
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Load system-provided cloud configs
|
||||||
|
|
||||||
|
# Generate /etc/environment
|
||||||
|
Requires=coreos-setup-environment.service
|
||||||
|
After=coreos-setup-environment.service
|
||||||
|
|
||||||
|
# Load OEM cloud-config.yml
|
||||||
|
Requires=system-cloudinit@usr-share-oem-cloud\x2dconfig.yml.service
|
||||||
|
After=system-cloudinit@usr-share-oem-cloud\x2dconfig.yml.service
|
12
units/user-cloudinit@.service
Normal file
12
units/user-cloudinit@.service
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Load cloud-config from %f
|
||||||
|
Requires=system-config.target
|
||||||
|
After=system-config.target
|
||||||
|
Before=user-config.target
|
||||||
|
ConditionFileNotEmpty=%f
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=yes
|
||||||
|
EnvironmentFile=-/etc/environment
|
||||||
|
ExecStart=/usr/bin/coreos-cloudinit --from-file=%f
|
8
units/user-config.target
Normal file
8
units/user-config.target
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Load user-provided cloud configs
|
||||||
|
Requires=system-config.target
|
||||||
|
After=system-config.target
|
||||||
|
|
||||||
|
# Load user_data placed by coreos-install
|
||||||
|
Requires=user-cloudinit@var-lib-coreos\x2dinstall-user_data.service
|
||||||
|
After=user-cloudinit@var-lib-coreos\x2dinstall-user_data.service
|
Loading…
Reference in New Issue
Block a user