Merge "Add agent_ipmitool support"
This commit is contained in:
commit
63743fff93
29
lib/ironic
29
lib/ironic
@ -93,7 +93,7 @@ IRONIC_AGENT_KERNEL_URL=${IRONIC_AGENT_KERNEL_URL:-http://tarballs.openstack.org
|
||||
IRONIC_AGENT_RAMDISK_URL=${IRONIC_AGENT_RAMDISK_URL:-http://tarballs.openstack.org/ironic-python-agent/coreos/files/coreos_production_pxe_image-oem.cpio.gz}
|
||||
|
||||
# Which deploy driver to use - valid choices right now
|
||||
# are 'pxe_ssh', 'pxe_ipmitool' and 'agent_ssh'.
|
||||
# are 'pxe_ssh', 'pxe_ipmitool', 'agent_ssh' and 'agent_ipmitool'.
|
||||
IRONIC_DEPLOY_DRIVER=${IRONIC_DEPLOY_DRIVER:-pxe_ssh}
|
||||
|
||||
#TODO(agordeev): replace 'ubuntu' with host distro name getting
|
||||
@ -152,6 +152,11 @@ function is_ironic_hardware {
|
||||
return 1
|
||||
}
|
||||
|
||||
function is_deployed_by_agent {
|
||||
[[ -z "${IRONIC_DEPLOY_DRIVER%%agent*}" ]] && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
# install_ironic() - Collect source and prepare
|
||||
function install_ironic {
|
||||
# make sure all needed service were enabled
|
||||
@ -307,7 +312,7 @@ function configure_ironic_conductor {
|
||||
if [[ "$IRONIC_VM_LOG_CONSOLE" == "True" ]] ; then
|
||||
iniset $IRONIC_CONF_FILE pxe pxe_append_params "nofb nomodeset vga=normal console=ttyS0"
|
||||
fi
|
||||
if [[ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]] ; then
|
||||
if is_deployed_by_agent; then
|
||||
if [[ "$SWIFT_ENABLE_TEMPURLS" == "True" ]] ; then
|
||||
iniset $IRONIC_CONF_FILE glance swift_temp_url_key $SWIFT_TEMPURL_KEY
|
||||
else
|
||||
@ -510,7 +515,7 @@ function enroll_nodes {
|
||||
if [[ "$IRONIC_DEPLOY_DRIVER" == "pxe_ssh" ]] ; then
|
||||
local _IRONIC_DEPLOY_KERNEL_KEY=pxe_deploy_kernel
|
||||
local _IRONIC_DEPLOY_RAMDISK_KEY=pxe_deploy_ramdisk
|
||||
elif [[ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]] ; then
|
||||
elif is_deployed_by_agent; then
|
||||
local _IRONIC_DEPLOY_KERNEL_KEY=deploy_kernel
|
||||
local _IRONIC_DEPLOY_RAMDISK_KEY=deploy_ramdisk
|
||||
fi
|
||||
@ -552,6 +557,10 @@ function enroll_nodes {
|
||||
# we create the bare metal flavor with minimum value
|
||||
local node_options="-i ipmi_address=$ipmi_address -i ipmi_password=$ironic_ipmi_passwd\
|
||||
-i ipmi_username=$ironic_ipmi_username"
|
||||
if is_deployed_by_agent; then
|
||||
node_options+=" -i $_IRONIC_DEPLOY_KERNEL_KEY=$IRONIC_DEPLOY_KERNEL_ID"
|
||||
node_options+=" -i $_IRONIC_DEPLOY_RAMDISK_KEY=$IRONIC_DEPLOY_RAMDISK_ID"
|
||||
fi
|
||||
fi
|
||||
|
||||
local node_id=$(ironic node-create --chassis_uuid $chassis_id \
|
||||
@ -589,7 +598,7 @@ function configure_iptables {
|
||||
# nodes boot from TFTP and callback to the API server listening on $HOST_IP
|
||||
sudo iptables -I INPUT -d $HOST_IP -p udp --dport 69 -j ACCEPT || true
|
||||
sudo iptables -I INPUT -d $HOST_IP -p tcp --dport $IRONIC_SERVICE_PORT -j ACCEPT || true
|
||||
if [ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]; then
|
||||
if is_deployed_by_agent; then
|
||||
# agent ramdisk gets instance image from swift
|
||||
sudo iptables -I INPUT -d $HOST_IP -p tcp --dport ${SWIFT_DEFAULT_BIND_PORT:-8080} -j ACCEPT || true
|
||||
fi
|
||||
@ -665,8 +674,8 @@ function upload_baremetal_ironic_deploy {
|
||||
fi
|
||||
|
||||
if [ -z "$IRONIC_DEPLOY_KERNEL" -o -z "$IRONIC_DEPLOY_RAMDISK" ]; then
|
||||
local IRONIC_DEPLOY_KERNEL_PATH=$TOP_DIR/files/ir-deploy.kernel
|
||||
local IRONIC_DEPLOY_RAMDISK_PATH=$TOP_DIR/files/ir-deploy.initramfs
|
||||
local IRONIC_DEPLOY_KERNEL_PATH=$TOP_DIR/files/ir-deploy-$IRONIC_DEPLOY_DRIVER.kernel
|
||||
local IRONIC_DEPLOY_RAMDISK_PATH=$TOP_DIR/files/ir-deploy-$IRONIC_DEPLOY_DRIVER.initramfs
|
||||
else
|
||||
local IRONIC_DEPLOY_KERNEL_PATH=$IRONIC_DEPLOY_KERNEL
|
||||
local IRONIC_DEPLOY_RAMDISK_PATH=$IRONIC_DEPLOY_RAMDISK
|
||||
@ -677,17 +686,17 @@ function upload_baremetal_ironic_deploy {
|
||||
if [ "$IRONIC_BUILD_DEPLOY_RAMDISK" = "True" ]; then
|
||||
# we can build them only if we're not offline
|
||||
if [ "$OFFLINE" != "True" ]; then
|
||||
if [ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]; then
|
||||
if is_deployed_by_agent; then
|
||||
build_ipa_coreos_ramdisk $IRONIC_DEPLOY_KERNEL_PATH $IRONIC_DEPLOY_RAMDISK_PATH
|
||||
else
|
||||
ramdisk-image-create $IRONIC_DEPLOY_FLAVOR \
|
||||
-o $TOP_DIR/files/ir-deploy
|
||||
-o $TOP_DIR/files/ir-deploy-$IRONIC_DEPLOY_DRIVER
|
||||
fi
|
||||
else
|
||||
die $LINENO "Deploy kernel+ramdisk files don't exist and cannot be build in OFFLINE mode"
|
||||
fi
|
||||
else
|
||||
if [ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]; then
|
||||
if is_deployed_by_agent; then
|
||||
# download the agent image tarball
|
||||
wget "$IRONIC_AGENT_KERNEL_URL" -O $IRONIC_DEPLOY_KERNEL_PATH
|
||||
wget "$IRONIC_AGENT_RAMDISK_URL" -O $IRONIC_DEPLOY_RAMDISK_PATH
|
||||
@ -751,7 +760,7 @@ function cleanup_baremetal_basic_ops {
|
||||
restart_service xinetd
|
||||
sudo iptables -D INPUT -d $HOST_IP -p udp --dport 69 -j ACCEPT || true
|
||||
sudo iptables -D INPUT -d $HOST_IP -p tcp --dport $IRONIC_SERVICE_PORT -j ACCEPT || true
|
||||
if [ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]; then
|
||||
if is_deployed_by_agent; then
|
||||
# agent ramdisk gets instance image from swift
|
||||
sudo iptables -D INPUT -d $HOST_IP -p tcp --dport ${SWIFT_DEFAULT_BIND_PORT:-8080} -j ACCEPT || true
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user