Skip to content

Commit 3ce3905

Browse files
committed
Stop running auxiliary containers with maximum priveleges
None of the Metal3 components actually require --privileged. Instead, disable the SELinux isolation to allow the containers to mount host directories. Also don't expose sushy-tools and vbmc to the host networking. For this all to work, stop using a pod for these containers. I'm not sure why we even do that in the first place.
1 parent e20da06 commit 3ce3905

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

04_setup_ironic.sh

+13-17
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,6 @@ for name in ironic ironic-api ironic-conductor ironic-inspector dnsmasq httpd-${
171171
sudo podman ps --all | grep -w " $name$" && sudo podman rm $name -f
172172
done
173173

174-
# Remove existing pod
175-
if sudo podman pod exists ironic-pod ; then
176-
sudo podman pod rm ironic-pod -f
177-
fi
178-
179-
# Create pod
180-
sudo podman pod create -n ironic-pod
181-
182174
IRONIC_IMAGE=${IRONIC_LOCAL_IMAGE:-$IRONIC_IMAGE}
183175

184176
for IMAGE in ${IRONIC_IMAGE} ${VBMC_IMAGE} ${SUSHY_TOOLS_IMAGE} ; do
@@ -205,7 +197,7 @@ fi
205197

206198
# cached images to the bootstrap VM
207199
sudo -E podman pull --authfile "${PULL_SECRET_FILE}" "${IRONIC_IMAGE}" || echo "WARNING: Could not pull latest $IRONIC_IMAGE; will try to use cached images instead"
208-
sudo podman run -d --net host --privileged --name httpd-${PROVISIONING_NETWORK_NAME} --pod ironic-pod \
200+
sudo podman run -d --net host --name httpd-${PROVISIONING_NETWORK_NAME} \
209201
--env PROVISIONING_INTERFACE=${PROVISIONING_NETWORK_NAME} \
210202
-v $IRONIC_DATA_DIR:/shared --entrypoint /bin/runhttpd ${IRONIC_IMAGE}
211203

@@ -214,8 +206,8 @@ if [ -n "${IRONIC_IPA_DOWNLOADER_LOCAL_IMAGE:-}" ];
214206
then
215207
sudo -E podman pull --authfile $PULL_SECRET_FILE $IRONIC_IPA_DOWNLOADER_LOCAL_IMAGE
216208

217-
sudo podman run -d --net host --privileged --name ipa-downloader --pod ironic-pod \
218-
-v $IRONIC_DATA_DIR:/shared ${IRONIC_IPA_DOWNLOADER_LOCAL_IMAGE} /usr/local/bin/get-resource.sh
209+
sudo podman run -d --name ipa-downloader -v $IRONIC_DATA_DIR:/shared \
210+
${IRONIC_IPA_DOWNLOADER_LOCAL_IMAGE} /usr/local/bin/get-resource.sh
219211

220212
# Units have been introduced in 2.x
221213
if printf '2.0.0\n%s\n' "$PODMAN_VERSION" | sort -V -C; then
@@ -242,15 +234,19 @@ if [ "$NODES_PLATFORM" = "libvirt" ]; then
242234
# has told us the process isn't there but sometimes when it
243235
# dies it leaves the file.
244236
sudo rm -f $WORKING_DIR/virtualbmc/vbmc/master.pid
245-
sudo podman run -d --net host --privileged --name vbmc --pod ironic-pod \
246-
-v "$WORKING_DIR/virtualbmc/vbmc":/root/.vbmc -v "/root/.ssh":/root/ssh \
247-
"${VBMC_IMAGE}"
237+
IPMI_PORT_RANGE="$VBMC_BASE_PORT-$VBMC_MAX_PORT"
238+
sudo podman run -d -p 623:623/udp -p $IPMI_PORT_RANGE:$IPMI_PORT_RANGE/udp \
239+
--security-opt label=disable --name vbmc \
240+
-v "$WORKING_DIR/virtualbmc/vbmc":/root/.vbmc -v "/root/.ssh":/root/ssh \
241+
-v /run/libvirt:/run/libvirt "${VBMC_IMAGE}"
248242
fi
249243

250244
if ! is_running sushy-tools; then
251-
sudo podman run -d --net host --privileged --name sushy-tools --pod ironic-pod \
252-
-v "$WORKING_DIR/virtualbmc/sushy-tools":/root/sushy -v "/root/.ssh":/root/ssh \
253-
"${SUSHY_TOOLS_IMAGE}"
245+
# Virtual media implementation cannot reach back to the bootstrap VM
246+
# without host networking.
247+
sudo podman run -d --network host --security-opt label=disable --name sushy-tools \
248+
-v "$WORKING_DIR/virtualbmc/sushy-tools":/root/sushy -v "/root/.ssh":/root/ssh \
249+
-v /run/libvirt:/run/libvirt "${SUSHY_TOOLS_IMAGE}"
254250
fi
255251
fi
256252

0 commit comments

Comments
 (0)