Merge "Add configure_provision_network function"
This commit is contained in:
commit
146c91245e
@ -250,6 +250,30 @@ IRONIC_ENABLED_NETWORK_INTERFACES=${IRONIC_ENABLED_NETWORK_INTERFACES:-}
|
||||
# This is the network interface to use for a node
|
||||
IRONIC_NETWORK_INTERFACE=${IRONIC_NETWORK_INTERFACE:-}
|
||||
|
||||
# Ironic provision network name
|
||||
IRONIC_PROVISION_NETWORK_NAME=${IRONIC_PROVISION_NETWORK_NAME:-}
|
||||
|
||||
# Provision network provider type. Can be flat or vlan.
|
||||
IRONIC_PROVISION_PROVIDER_NETWORK_TYPE=${IRONIC_PROVISION_PROVIDER_NETWORK_TYPE:-'vlan'}
|
||||
|
||||
# If IRONIC_PROVISION_PROVIDER_NETWORK_TYPE is vlan. VLAN_ID may be specified. If it is not set,
|
||||
# vlan will be allocated dynamically.
|
||||
IRONIC_PROVISION_SEGMENTATION_ID=${IRONIC_PROVISION_SEGMENTATION_ID:-}
|
||||
|
||||
# Allocation network pool for provision network
|
||||
# Example: IRONIC_PROVISION_ALLOCATION_POOL=start=10.0.5.10,end=10.0.5.100
|
||||
IRONIC_PROVISION_ALLOCATION_POOL=${IRONIC_PROVISION_ALLOCATION_POOL:-}
|
||||
|
||||
# Ironic provision subnet name.
|
||||
IRONIC_PROVISION_PROVIDER_SUBNET_NAME=${IRONIC_PROVISION_PROVIDER_SUBNET_NAME:-${IRONIC_PROVISION_NETWORK_NAME}-subnet}
|
||||
|
||||
# Ironic provision subnet gateway.
|
||||
IRONIC_PROVISION_SUBNET_GATEWAY=${IRONIC_PROVISION_SUBNET_GATEWAY:-}
|
||||
|
||||
# Ironic provision subnet prefix
|
||||
# Example: IRONIC_PROVISION_SUBNET_PREFIX=10.0.5.0/24
|
||||
IRONIC_PROVISION_SUBNET_PREFIX=${IRONIC_PROVISION_SUBNET_PREFIX:-}
|
||||
|
||||
# get_pxe_boot_file() - Get the PXE/iPXE boot file path
|
||||
function get_pxe_boot_file {
|
||||
local relpath=syslinux/pxelinux.0
|
||||
@ -452,6 +476,59 @@ function configure_ironic_dirs {
|
||||
fi
|
||||
}
|
||||
|
||||
function configure_ironic_provision_network {
|
||||
|
||||
die_if_not_set $LINENO IRONIC_PROVISION_SUBNET_PREFIX "You must specify the IRONIC_PROVISION_SUBNET_PREFIX"
|
||||
die_if_not_set $LINENO PHYSICAL_NETWORK "You must specify the PHYSICAL_NETWORK"
|
||||
die_if_not_set $LINENO IRONIC_PROVISION_SUBNET_GATEWAY "You must specify the IRONIC_PROVISION_SUBNET_GATEWAY"
|
||||
|
||||
local net_id
|
||||
net_id=$(neutron net-create --provider:network_type $IRONIC_PROVISION_PROVIDER_NETWORK_TYPE \
|
||||
--provider:physical_network "$PHYSICAL_NETWORK" \
|
||||
${IRONIC_PROVISION_SEGMENTATION_ID:+--provider:segmentation_id $IRONIC_PROVISION_SEGMENTATION_ID} \
|
||||
${IRONIC_PROVISION_NETWORK_NAME} | grep ' id ' | get_field 2)
|
||||
|
||||
die_if_not_set $LINENO net_id "Failure creating net_id for $IRONIC_PROVISION_NETWORK_NAME"
|
||||
local subnet_id
|
||||
subnet_id="$(neutron subnet-create --ip_version 4 \
|
||||
${IRONIC_PROVISION_ALLOCATION_POOL:+--allocation-pool $IRONIC_PROVISION_ALLOCATION_POOL} \
|
||||
--name $IRONIC_PROVISION_PROVIDER_SUBNET_NAME \
|
||||
--gateway $IRONIC_PROVISION_SUBNET_GATEWAY $net_id \
|
||||
$IRONIC_PROVISION_SUBNET_PREFIX | grep ' id ' | get_field 2)"
|
||||
|
||||
die_if_not_set $LINENO subnet_id "Failure creating SUBNET_ID for $IRONIC_PROVISION_NETWORK_NAME"
|
||||
|
||||
iniset $IRONIC_CONF_FILE neutron provisioning_network_uuid $net_id
|
||||
|
||||
IRONIC_PROVISION_SEGMENTATION_ID=${IRONIC_PROVISION_SEGMENTATION_ID:-`neutron net-show ${net_id} | grep -w 'provider:segmentation_id'| get_field 2`}
|
||||
provision_net_prefix=${IRONIC_PROVISION_SUBNET_PREFIX##*/}
|
||||
|
||||
# Set provision network GW on physical interface
|
||||
# Add vlan on br interface in case of IRONIC_PROVISION_PROVIDER_NETWORK_TYPE==vlan
|
||||
# othervise assign ip to br interface directly.
|
||||
if [[ "$IRONIC_PROVISION_PROVIDER_NETWORK_TYPE" == "vlan" ]]; then
|
||||
sudo vconfig add $OVS_PHYSICAL_BRIDGE $IRONIC_PROVISION_SEGMENTATION_ID
|
||||
sudo ip link set dev $OVS_PHYSICAL_BRIDGE.$IRONIC_PROVISION_SEGMENTATION_ID up
|
||||
sudo ip addr add dev $OVS_PHYSICAL_BRIDGE.$IRONIC_PROVISION_SEGMENTATION_ID $IRONIC_PROVISION_SUBNET_GATEWAY/$provision_net_prefix
|
||||
else
|
||||
sudo ip link set dev $OVS_PHYSICAL_BRIDGE up
|
||||
sudo ip addr add dev $OVS_PHYSICAL_BRIDGE $IRONIC_PROVISION_SUBNET_GATEWAY/$provision_net_prefix
|
||||
fi
|
||||
}
|
||||
|
||||
function cleanup_ironic_provision_network {
|
||||
if [[ -z "${IRONIC_PROVISION_NETWORK_NAME}" ]]; then
|
||||
return 0
|
||||
fi
|
||||
# Cleanup OVS_PHYSICAL_BRIDGE subinterfaces
|
||||
local bridge_subint
|
||||
bridge_subint=$(cat /proc/net/dev | sed -n "s/^\(${OVS_PHYSICAL_BRIDGE}\.[0-9]*\).*/\1/p")
|
||||
for sub_int in $bridge_subint; do
|
||||
sudo ip link set dev $sub_int down
|
||||
sudo ip link del dev $sub_int
|
||||
done
|
||||
}
|
||||
|
||||
# configure_ironic() - Set config files, create data dirs, etc
|
||||
function configure_ironic {
|
||||
configure_ironic_dirs
|
||||
@ -1281,9 +1358,6 @@ function prepare_baremetal_basic_ops {
|
||||
configure_ironic_auxiliary
|
||||
fi
|
||||
upload_baremetal_ironic_deploy
|
||||
if [[ "$IRONIC_IS_HARDWARE" == "False" ]]; then
|
||||
create_bridge_and_vms
|
||||
fi
|
||||
enroll_nodes
|
||||
configure_tftpd
|
||||
configure_iptables
|
||||
|
@ -37,6 +37,15 @@ if is_service_enabled ir-api ir-cond; then
|
||||
# Initialize ironic
|
||||
init_ironic
|
||||
|
||||
if [[ "$IRONIC_IS_HARDWARE" == "False" ]]; then
|
||||
echo_summary "Creating bridge and VMs"
|
||||
create_bridge_and_vms
|
||||
fi
|
||||
if [[ -n "${IRONIC_PROVISION_NETWORK_NAME}" ]]; then
|
||||
echo_summary "Configuring Ironic provisioning network"
|
||||
configure_ironic_provision_network
|
||||
fi
|
||||
|
||||
# Start the ironic API and ironic taskmgr components
|
||||
echo_summary "Starting Ironic"
|
||||
start_ironic
|
||||
@ -51,6 +60,7 @@ if is_service_enabled ir-api ir-cond; then
|
||||
# unstack - Called by unstack.sh before other services are shut down.
|
||||
|
||||
stop_ironic
|
||||
cleanup_ironic_provision_network
|
||||
cleanup_baremetal_basic_ops
|
||||
fi
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user