From bcc54c5b45165162e2cc66f11054eb349294d50a Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Mon, 16 Jun 2014 11:41:47 -0700 Subject: [PATCH 1/3] coreos-base/oem-rackspace-teeth: Make cloudinit drop-in an actual unit This will guarentee that cloudinit reloads systemd's unit files. Also, fix the ordering on the config-drive mount. --- .../files/cloud-config.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml index 10a86eb34e..eeed0a4677 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml @@ -1,23 +1,20 @@ #cloud-config -write_files: - - path: /run/systemd/system/user-configdrive.service.d/netconf.conf - permissions: 0644 - content: | - [Service] - ExecStart= - ExecStart=/usr/bin/coreos-cloudinit --from-configdrive=/media/configdrive --convert-netconf=debian - coreos: units: + - name: user-configdrive.service.d/netconf.conf + runtime: yes + content: | + [Service] + ExecStart= + ExecStart=/usr/bin/coreos-cloudinit --from-configdrive=/media/configdrive --convert-netconf=debian - name: media-configdrive.mount command: start runtime: yes content: | [Unit] - DefaultDependencies=no - Conflicts=umount.target - Before=local-fs.target umount.target + Wants=user-configdrive.service + Before=user-configdrive.service [Mount] What=/dev/disk/by-label/config-2 From 2708fd70a086c58c21b7f936c907c84ab85325d0 Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Wed, 18 Jun 2014 16:26:28 -0700 Subject: [PATCH 2/3] coreos-base/oem-rackspace-teeth: Add pingout service --- .../oem-rackspace-teeth/files/cloud-config.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml index eeed0a4677..96acb91980 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml @@ -8,6 +8,20 @@ coreos: [Service] ExecStart= ExecStart=/usr/bin/coreos-cloudinit --from-configdrive=/media/configdrive --convert-netconf=debian + - name: ping-out.service + runtime: yes + enable: yes + content: | + [Unit] + After=user-config.target + + [Service] + Type=oneshot + RemainAfterExit=yes + ExecStart=/usr/bin/sh -c "ping -A -c1 $(ip route | awk '/default/ { print $3 }')" + + [Install] + WantedBy=user-config.target - name: media-configdrive.mount command: start runtime: yes From 2a2ff85a46b125fd76e2535c794e5f0a0bb7b5e0 Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Mon, 7 Jul 2014 14:09:06 -0700 Subject: [PATCH 3/3] networkd: Emulate old kernel naming The old kernel names are handed out by netname.sh which is called by 79-netname.rules. rename-network-interfaces.service does the rename by stopping networkd, taking down the interfaces, re-adding the interfaces, and then restarting networkd. --- .../files/cloud-config.yml | 28 +++++++++++++++++++ .../oem-rackspace-teeth/files/netname.sh | 4 +++ .../oem-rackspace-teeth-0.0.1.ebuild | 3 ++ 3 files changed, 35 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/netname.sh diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml index 96acb91980..930daffa02 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/cloud-config.yml @@ -1,5 +1,19 @@ #cloud-config +write_files: + - path: /run/udev/rules.d/79-netname.rules + permissions: 444 + content: | + SUBSYSTEM!="net", GOTO="netname_end" + ACTION!="add", GOTO="netname_end" + ENV{ID_BUS}!="pci", GOTO="netname_end" + + IMPORT{program}="/usr/share/oem/bin/netname.sh $env{IFINDEX}" + + NAME=="", ENV{ID_NET_NAME_SIMPLE}!="", NAME="$env{ID_NET_NAME_SIMPLE}" + + LABEL="netname_end" + coreos: units: - name: user-configdrive.service.d/netconf.conf @@ -22,6 +36,20 @@ coreos: [Install] WantedBy=user-config.target + - name: rename-network-interfaces.service + command: start + runtime: yes + content: | + [Unit] + Before=user-config.target + + [Service] + Type=oneshot + RemainAfterExit=yes + ExecStart=/usr/bin/systemctl stop systemd-networkd + ExecStart=/usr/bin/bash -c "for dev in $(ip link show | gawk -F ':' '/^[0-9]+/ { print $2 }' | tr -d ' ' | sed 's/lo//'); do ip link set $dev down; done" + ExecStart=/usr/bin/bash -c "udevadm test /sys/class/net/*" + ExecStart=/usr/bin/systemctl start systemd-networkd - name: media-configdrive.mount command: start runtime: yes diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/netname.sh b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/netname.sh new file mode 100644 index 0000000000..74e18ff757 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/files/netname.sh @@ -0,0 +1,4 @@ +#! /bin/bash + +IFINDEX=$1 +echo "ID_NET_NAME_SIMPLE=eth$((${IFINDEX} - 2))" diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/oem-rackspace-teeth-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/oem-rackspace-teeth-0.0.1.ebuild index 52a3a4bb30..74768cd48c 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/oem-rackspace-teeth-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-teeth/oem-rackspace-teeth-0.0.1.ebuild @@ -15,6 +15,9 @@ KEYWORDS="amd64 x86" S="${WORKDIR}" src_install() { + into "/usr/share/oem" + dobin ${FILESDIR}/netname.sh + insinto "/usr/share/oem" doins ${FILESDIR}/cloud-config.yml }