Add ironic-python-agent support to devstack
This adds support for using ironic-python-agent with Ironic. Change-Id: I8f1e93e09ddde447996ecbedceb091f51d60040e
This commit is contained in:
parent
722284f24b
commit
a6a45467c4
59
lib/ironic
59
lib/ironic
@ -76,6 +76,12 @@ IRONIC_DEPLOY_RAMDISK=${IRONIC_DEPLOY_RAMDISK:-}
|
||||
IRONIC_DEPLOY_KERNEL=${IRONIC_DEPLOY_KERNEL:-}
|
||||
IRONIC_DEPLOY_ELEMENT=${IRONIC_DEPLOY_ELEMENT:-deploy-ironic}
|
||||
|
||||
IRONIC_AGENT_TARBALL=${IRONIC_AGENT_TARBALL:-http://tarballs.openstack.org/ironic-python-agent/coreos/ipa-coreos.tar.gz}
|
||||
|
||||
# Which deploy driver to use - valid choices right now
|
||||
# are 'pxe_ssh' and 'agent_ssh'.
|
||||
IRONIC_DEPLOY_DRIVER=${IRONIC_DEPLOY_DRIVER:-pxe_ssh}
|
||||
|
||||
#TODO(agordeev): replace 'ubuntu' with host distro name getting
|
||||
IRONIC_DEPLOY_FLAVOR=${IRONIC_DEPLOY_FLAVOR:-ubuntu $IRONIC_DEPLOY_ELEMENT}
|
||||
|
||||
@ -218,6 +224,22 @@ 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 [[ "$SWIFT_ENABLE_TEMPURLS" == "True" ]] ; then
|
||||
iniset $IRONIC_CONF_FILE glance swift_temp_url_key $SWIFT_TEMPURL_KEY
|
||||
else
|
||||
die $LINENO "SWIFT_ENABLE_TEMPURLS must be True to use agent_ssh driver in Ironic."
|
||||
fi
|
||||
iniset $IRONIC_CONF_FILE glance swift_endpoint_url http://${HOST_IP}:8080
|
||||
iniset $IRONIC_CONF_FILE glance swift_api_version v1
|
||||
iniset $IRONIC_CONF_FILE glance swift_account AUTH_${SERVICE_TENANT}
|
||||
iniset $IRONIC_CONF_FILE glance swift_container glance
|
||||
iniset $IRONIC_CONF_FILE glance swift_temp_url_duration 3600
|
||||
iniset $IRONIC_CONF_FILE agent heartbeat_timeout 30
|
||||
if [[ "$IRONIC_VM_LOG_CONSOLE" == "True" ]] ; then
|
||||
iniset $IRONIC_CONF_FILE agent agent_pxe_append_params "nofb nomodeset vga=normal console=ttyS0"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# create_ironic_cache_dir() - Part of the init_ironic() process
|
||||
@ -365,10 +387,21 @@ function create_bridge_and_vms {
|
||||
function enroll_vms {
|
||||
local chassis_id=$(ironic chassis-create -d "ironic test chassis" | grep " uuid " | get_field 2)
|
||||
local idx=0
|
||||
|
||||
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
|
||||
local _IRONIC_DEPLOY_KERNEL_KEY=deploy_kernel
|
||||
local _IRONIC_DEPLOY_RAMDISK_KEY=deploy_ramdisk
|
||||
fi
|
||||
|
||||
while read MAC; do
|
||||
local node_id=$(ironic node-create --chassis_uuid $chassis_id --driver pxe_ssh \
|
||||
-i pxe_deploy_kernel=$IRONIC_DEPLOY_KERNEL_ID \
|
||||
-i pxe_deploy_ramdisk=$IRONIC_DEPLOY_RAMDISK_ID \
|
||||
|
||||
local node_id=$(ironic node-create --chassis_uuid $chassis_id \
|
||||
--driver $IRONIC_DEPLOY_DRIVER \
|
||||
-i $_IRONIC_DEPLOY_KERNEL_KEY=$IRONIC_DEPLOY_KERNEL_ID \
|
||||
-i $_IRONIC_DEPLOY_RAMDISK_KEY=$IRONIC_DEPLOY_RAMDISK_ID \
|
||||
-i ssh_virt_type=$IRONIC_SSH_VIRT_TYPE \
|
||||
-i ssh_address=$IRONIC_VM_SSH_ADDRESS \
|
||||
-i ssh_port=$IRONIC_VM_SSH_PORT \
|
||||
@ -480,13 +513,27 @@ 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
|
||||
$DIB_DIR/bin/ramdisk-image-create $IRONIC_DEPLOY_FLAVOR \
|
||||
-o $TOP_DIR/files/ir-deploy
|
||||
if [ "$IRONIC_DEPLOY_RAMDISK" == "agent_ssh" ]; then
|
||||
die $LINENO "Ironic-python-agent build is not yet supported"
|
||||
else
|
||||
$DIB_DIR/bin/ramdisk-image-create $IRONIC_DEPLOY_FLAVOR \
|
||||
-o $TOP_DIR/files/ir-deploy
|
||||
fi
|
||||
else
|
||||
die $LINENO "Deploy kernel+ramdisk files don't exist and cannot be build in OFFLINE mode"
|
||||
fi
|
||||
else
|
||||
die $LINENO "Deploy kernel+ramdisk files don't exist and their building was disabled explicitly by IRONIC_BUILD_DEPLOY_RAMDISK"
|
||||
if [ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]; then
|
||||
# download the agent image tarball
|
||||
wget "$IRONIC_AGENT_TARBALL" -O ironic_agent_tarball.tar.gz
|
||||
tar zxfv ironic_agent_tarball.tar.gz
|
||||
mv UPLOAD/coreos_production_pxe.vmlinuz $IRONIC_DEPLOY_KERNEL_PATH
|
||||
mv UPLOAD/coreos_production_pxe_image-oem.cpio.gz $IRONIC_DEPLOY_RAMDISK_PATH
|
||||
rm -rf UPLOAD
|
||||
rm ironic_agent_tarball.tar.gz
|
||||
else
|
||||
die $LINENO "Deploy kernel+ramdisk files don't exist and their building was disabled explicitly by IRONIC_BUILD_DEPLOY_RAMDISK"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
9
stackrc
9
stackrc
@ -366,6 +366,15 @@ case "$VIRT_DRIVER" in
|
||||
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-0.3.0-x86_64-disk}
|
||||
IMAGE_URLS=${IMAGE_URLS:-"https://github.com/downloads/citrix-openstack/warehouse/cirros-0.3.0-x86_64-disk.vhd.tgz"}
|
||||
IMAGE_URLS+=",http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-x86_64-uec.tar.gz";;
|
||||
ironic)
|
||||
# Ironic can do both partition and full disk images, depending on the driver
|
||||
if [[ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]]; then
|
||||
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-${CIRROS_VERSION}-x86_64-disk}
|
||||
else
|
||||
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-${CIRROS_VERSION}-x86_64-uec}
|
||||
fi
|
||||
IMAGE_URLS=${IMAGE_URLS:-"http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-x86_64-uec.tar.gz"}
|
||||
IMAGE_URLS+=",http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-x86_64-disk.img";;
|
||||
*) # Default to Cirros with kernel, ramdisk and disk image
|
||||
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-${CIRROS_VERSION}-${CIRROS_ARCH}-uec}
|
||||
IMAGE_URLS=${IMAGE_URLS:-"http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-${CIRROS_ARCH}-uec.tar.gz"};;
|
||||
|
Loading…
Reference in New Issue
Block a user