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..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,23 +1,62 @@ #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 + - 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 + runtime: yes + content: | + [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: 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 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 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 }