Merge "Make BMC optional"
This commit is contained in:
commit
7966bfa15e
@ -105,6 +105,16 @@ Create a Private Network
|
|||||||
existing one.
|
existing one.
|
||||||
|
|
||||||
|
|
||||||
|
Disable BMC
|
||||||
|
-----------
|
||||||
|
|
||||||
|
**File:** environments/disable-bmc.yaml
|
||||||
|
|
||||||
|
**Description:** Deploy a stack without a BMC. This will obviously make it impossible to
|
||||||
|
control the instances via IPMI. It will also prevent use of
|
||||||
|
ovb-build-nodes-json because there will be no BMC addresses.
|
||||||
|
|
||||||
|
|
||||||
Public Network External Router
|
Public Network External Router
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
13
environments/disable-bmc.yaml
Normal file
13
environments/disable-bmc.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# *******************************************************************
|
||||||
|
# This file was created automatically by the sample environment
|
||||||
|
# generator. Developers should use `tox -e genconfig` to update it.
|
||||||
|
# Users are recommended to make changes to a copy of the file instead
|
||||||
|
# of the original, if any customizations are needed.
|
||||||
|
# *******************************************************************
|
||||||
|
# title: Disable BMC
|
||||||
|
# description: |
|
||||||
|
# Deploy a stack without a BMC. This will obviously make it impossible to
|
||||||
|
# control the instances via IPMI. It will also prevent use of
|
||||||
|
# ovb-build-nodes-json because there will be no BMC addresses.
|
||||||
|
resource_registry:
|
||||||
|
OS::OVB::BMC: ../templates/bmc-none.yaml
|
@ -219,6 +219,8 @@ def _deploy(stack_name, stack_template, env_paths, poll):
|
|||||||
all_files = {}
|
all_files = {}
|
||||||
all_files.update(template_files)
|
all_files.update(template_files)
|
||||||
all_files.update(env_files)
|
all_files.update(env_files)
|
||||||
|
# NOTE(bnemec): Unfortunately, we can't pass this in as parameter_default
|
||||||
|
# because the Heat API doesn't accept parameter_defaults.
|
||||||
parameters = {'cloud_data': auth._cloud_json()}
|
parameters = {'cloud_data': auth._cloud_json()}
|
||||||
|
|
||||||
hclient.stacks.create(stack_name=stack_name,
|
hclient.stacks.create(stack_name=stack_name,
|
||||||
@ -303,7 +305,7 @@ def _process_role(role_file, base_envs, stack_name, args):
|
|||||||
'overcloud_tenant_net',
|
'overcloud_tenant_net',
|
||||||
]
|
]
|
||||||
allowed_registry_keys = ['OS::OVB::BaremetalPorts', 'OS::OVB::BMCPort',
|
allowed_registry_keys = ['OS::OVB::BaremetalPorts', 'OS::OVB::BMCPort',
|
||||||
'OS::OVB::UndercloudNetworks',
|
'OS::OVB::UndercloudNetworks', 'OS::OVB::BMC',
|
||||||
]
|
]
|
||||||
# NOTE(bnemec): Not sure what purpose this serves. Can probably be removed.
|
# NOTE(bnemec): Not sure what purpose this serves. Can probably be removed.
|
||||||
role_env = role_data
|
role_env = role_data
|
||||||
|
@ -185,7 +185,7 @@ environments:
|
|||||||
the host cloud, but at the cost of potential inconsistency if the state
|
the host cloud, but at the cost of potential inconsistency if the state
|
||||||
of a baremetal instance is changed without using the BMC.
|
of a baremetal instance is changed without using the BMC.
|
||||||
files:
|
files:
|
||||||
templates/virtual-baremetal.yaml:
|
templates/bmc.yaml:
|
||||||
parameters:
|
parameters:
|
||||||
- bmc_use_cache
|
- bmc_use_cache
|
||||||
sample_values:
|
sample_values:
|
||||||
@ -254,4 +254,13 @@ environments:
|
|||||||
traffic through the undercloud.
|
traffic through the undercloud.
|
||||||
resource_registry:
|
resource_registry:
|
||||||
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-public-router.yaml
|
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-public-router.yaml
|
||||||
|
-
|
||||||
|
name: disable-bmc
|
||||||
|
title: Disable BMC
|
||||||
|
description: |
|
||||||
|
Deploy a stack without a BMC. This will obviously make it impossible to
|
||||||
|
control the instances via IPMI. It will also prevent use of
|
||||||
|
ovb-build-nodes-json because there will be no BMC addresses.
|
||||||
|
resource_registry:
|
||||||
|
OS::OVB::BMC: ../templates/bmc-none.yaml
|
||||||
|
|
||||||
|
10
templates/bmc-none.yaml
Normal file
10
templates/bmc-none.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
heat_template_version: newton
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
cloud_data:
|
||||||
|
type: string
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
bmc:
|
||||||
|
type: OS::Heat::None
|
155
templates/bmc.yaml
Normal file
155
templates/bmc.yaml
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
heat_template_version: newton
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
bmc_flavor:
|
||||||
|
type: string
|
||||||
|
default: m1.small
|
||||||
|
description: The Nova flavor to use for the bmc instance
|
||||||
|
|
||||||
|
bmc_image:
|
||||||
|
type: string
|
||||||
|
default: CentOS-7-x86_64-GenericCloud
|
||||||
|
description: |
|
||||||
|
The base image for the bmc instance. A CentOS 7 image is currently the
|
||||||
|
only one supported.
|
||||||
|
|
||||||
|
bmc_use_cache:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
description: |
|
||||||
|
Enable instance status caching on the BMC. This can reduce load on the
|
||||||
|
host cloud, but if an instance's status is changed outside the BMC it may
|
||||||
|
become out of sync.
|
||||||
|
|
||||||
|
key_name:
|
||||||
|
type: string
|
||||||
|
default: default
|
||||||
|
description: Nova keypair to inject into the undercloud and bmc
|
||||||
|
|
||||||
|
private_net:
|
||||||
|
type: string
|
||||||
|
default: private
|
||||||
|
description: Name of a private network which can have floating ips associated with it
|
||||||
|
|
||||||
|
bmc_prefix:
|
||||||
|
type: string
|
||||||
|
default: bmc
|
||||||
|
description: Prefix for the name of the bmc instance
|
||||||
|
|
||||||
|
os_user:
|
||||||
|
type: string
|
||||||
|
default: admin
|
||||||
|
description: |
|
||||||
|
The user on the host cloud that will be used to provision the
|
||||||
|
environment
|
||||||
|
|
||||||
|
os_password:
|
||||||
|
type: string
|
||||||
|
default: password
|
||||||
|
hidden: true
|
||||||
|
description: The password for os_user
|
||||||
|
|
||||||
|
os_tenant:
|
||||||
|
type: string
|
||||||
|
default: admin
|
||||||
|
description: The tenant for os_user
|
||||||
|
|
||||||
|
os_auth_url:
|
||||||
|
type: string
|
||||||
|
default: http://127.0.0.1:5000/v2.0
|
||||||
|
description: The Keystone auth_url of the host cloud
|
||||||
|
|
||||||
|
os_project:
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
description: |
|
||||||
|
The project for os_user. Required for Keystone v3, should be left
|
||||||
|
blank for Keystone v2.
|
||||||
|
|
||||||
|
os_user_domain:
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
description: |
|
||||||
|
The user domain for os_user. Required for Keystone v3, should be left
|
||||||
|
blank for Keystone v2.
|
||||||
|
|
||||||
|
os_project_domain:
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
description: |
|
||||||
|
The project domain for os_user. Required for Keystone v3, should be left
|
||||||
|
blank for Keystone v2.
|
||||||
|
|
||||||
|
cloud_data:
|
||||||
|
type: string
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
baremetal_prefix:
|
||||||
|
type: string
|
||||||
|
default: baremetal
|
||||||
|
description: Prefix for the name of the baremetal instances
|
||||||
|
|
||||||
|
node_count:
|
||||||
|
type: number
|
||||||
|
description: Number of baremetal nodes to deploy
|
||||||
|
|
||||||
|
resources:
|
||||||
|
bmc_port:
|
||||||
|
type: OS::OVB::BMCPort
|
||||||
|
properties:
|
||||||
|
bmc_prefix: {get_param: bmc_prefix}
|
||||||
|
private_net: {get_param: private_net}
|
||||||
|
|
||||||
|
bmc_other_ports:
|
||||||
|
type: OS::Heat::ResourceGroup
|
||||||
|
properties:
|
||||||
|
count: {get_param: node_count}
|
||||||
|
resource_def:
|
||||||
|
type: OS::Neutron::Port
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
list_join:
|
||||||
|
- ''
|
||||||
|
- - {get_param: bmc_prefix}
|
||||||
|
- _%index%
|
||||||
|
network: {get_param: private_net}
|
||||||
|
|
||||||
|
bmc_handle:
|
||||||
|
type: OS::Heat::WaitConditionHandle
|
||||||
|
|
||||||
|
bmc_wait_condition:
|
||||||
|
type: OS::Heat::WaitCondition
|
||||||
|
properties:
|
||||||
|
handle: {get_resource: bmc_handle}
|
||||||
|
timeout: 600
|
||||||
|
|
||||||
|
bmc_server:
|
||||||
|
type: OS::Nova::Server
|
||||||
|
depends_on: [bmc_other_ports, bmc_port]
|
||||||
|
properties:
|
||||||
|
flavor: {get_param: bmc_flavor}
|
||||||
|
image: {get_param: bmc_image}
|
||||||
|
key_name: {get_param: key_name}
|
||||||
|
networks: {get_attr: [bmc_port, port]}
|
||||||
|
name: {get_param: bmc_prefix}
|
||||||
|
user_data_format: RAW
|
||||||
|
user_data:
|
||||||
|
str_replace:
|
||||||
|
params:
|
||||||
|
$os_user: {get_param: os_user}
|
||||||
|
$os_password: {get_param: os_password}
|
||||||
|
$os_tenant: {get_param: os_tenant}
|
||||||
|
$os_auth_url: {get_param: os_auth_url}
|
||||||
|
$os_project: {get_param: os_project}
|
||||||
|
$os__user_domain: {get_param: os_user_domain}
|
||||||
|
$os__project_domain: {get_param: os_project_domain}
|
||||||
|
$bm_node_count: {get_param: node_count}
|
||||||
|
$bmc_prefix: {get_param: bmc_prefix}
|
||||||
|
$bmc_utility: {get_attr: [bmc_port, ip_address]}
|
||||||
|
$bmc_use_cache: {get_param: bmc_use_cache}
|
||||||
|
$bm_prefix: {get_param: baremetal_prefix}
|
||||||
|
$private_net: {get_param: private_net}
|
||||||
|
$openstackbmc_script: {get_file: ../bin/openstackbmc}
|
||||||
|
$cloud_data: {get_param: cloud_data}
|
||||||
|
$signal_command: {get_attr: [bmc_handle, curl_cli]}
|
||||||
|
template: {get_file: ../bin/install_openstackbmc.sh}
|
@ -183,17 +183,7 @@ resources:
|
|||||||
node_count: {get_param: node_count}
|
node_count: {get_param: node_count}
|
||||||
private_net: {get_attr: [private_network, private_net]}
|
private_net: {get_attr: [private_network, private_net]}
|
||||||
networks: {get_attr: [undercloud_networks, networks]}
|
networks: {get_attr: [undercloud_networks, networks]}
|
||||||
bmc_flavor: {get_param: bmc_flavor}
|
|
||||||
bmc_prefix: {get_param: bmc_prefix}
|
|
||||||
bmc_image: {get_param: bmc_image}
|
|
||||||
baremetal_prefix: {get_param: baremetal_prefix}
|
baremetal_prefix: {get_param: baremetal_prefix}
|
||||||
os_user: {get_param: os_user}
|
|
||||||
os_password: {get_param: os_password}
|
|
||||||
os_tenant: {get_param: os_tenant}
|
|
||||||
os_auth_url: {get_param: os_auth_url}
|
|
||||||
os_project: {get_param: os_project}
|
|
||||||
os_user_domain: {get_param: os_user_domain}
|
|
||||||
os_project_domain: {get_param: os_project_domain}
|
|
||||||
cloud_data: {get_param: cloud_data}
|
cloud_data: {get_param: cloud_data}
|
||||||
dhcp_ips: {get_param: dhcp_ips}
|
dhcp_ips: {get_param: dhcp_ips}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ resource_registry:
|
|||||||
OS::OVB::PrivateNetwork: private-net-existing.yaml
|
OS::OVB::PrivateNetwork: private-net-existing.yaml
|
||||||
OS::OVB::BaremetalNetworks: baremetal-networks-none.yaml
|
OS::OVB::BaremetalNetworks: baremetal-networks-none.yaml
|
||||||
OS::OVB::BaremetalPorts: baremetal-ports-default.yaml
|
OS::OVB::BaremetalPorts: baremetal-ports-default.yaml
|
||||||
|
OS::OVB::BMC: bmc.yaml
|
||||||
OS::OVB::BMCPort: bmc-port.yaml
|
OS::OVB::BMCPort: bmc-port.yaml
|
||||||
OS::OVB::UndercloudPorts: undercloud-ports.yaml
|
OS::OVB::UndercloudPorts: undercloud-ports.yaml
|
||||||
OS::OVB::UndercloudNetworks: undercloud-networks.yaml
|
OS::OVB::UndercloudNetworks: undercloud-networks.yaml
|
||||||
|
@ -5,26 +5,6 @@ description: Template for deploying OpenStack BMC nodes. Can be wrapped in a Re
|
|||||||
# Ensure force_config_drive is _not_ set in nova.conf
|
# Ensure force_config_drive is _not_ set in nova.conf
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
bmc_flavor:
|
|
||||||
type: string
|
|
||||||
default: m1.small
|
|
||||||
description: The Nova flavor to use for the bmc instance
|
|
||||||
|
|
||||||
bmc_image:
|
|
||||||
type: string
|
|
||||||
default: CentOS-7-x86_64-GenericCloud
|
|
||||||
description: |
|
|
||||||
The base image for the bmc instance. A CentOS 7 image is currently the
|
|
||||||
only one supported.
|
|
||||||
|
|
||||||
bmc_use_cache:
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
description: |
|
|
||||||
Enable instance status caching on the BMC. This can reduce load on the
|
|
||||||
host cloud, but if an instance's status is changed outside the BMC it may
|
|
||||||
become out of sync.
|
|
||||||
|
|
||||||
baremetal_flavor:
|
baremetal_flavor:
|
||||||
type: string
|
type: string
|
||||||
default: baremetal
|
default: baremetal
|
||||||
@ -55,11 +35,6 @@ parameters:
|
|||||||
default: {"private": "private", "provision": "provision"}
|
default: {"private": "private", "provision": "provision"}
|
||||||
description: A map of networks to their names.
|
description: A map of networks to their names.
|
||||||
|
|
||||||
bmc_prefix:
|
|
||||||
type: string
|
|
||||||
default: bmc
|
|
||||||
description: Prefix for the name of the bmc instance
|
|
||||||
|
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
default: baremetal
|
default: baremetal
|
||||||
@ -73,53 +48,8 @@ parameters:
|
|||||||
The value should usually include '%index%' to differentiate multiple
|
The value should usually include '%index%' to differentiate multiple
|
||||||
instances. For example: 'my-custom-name-%index%'
|
instances. For example: 'my-custom-name-%index%'
|
||||||
|
|
||||||
os_user:
|
|
||||||
type: string
|
|
||||||
default: admin
|
|
||||||
description: |
|
|
||||||
The user on the host cloud that will be used to provision the
|
|
||||||
environment
|
|
||||||
|
|
||||||
os_password:
|
|
||||||
type: string
|
|
||||||
default: password
|
|
||||||
hidden: true
|
|
||||||
description: The password for os_user
|
|
||||||
|
|
||||||
os_tenant:
|
|
||||||
type: string
|
|
||||||
default: admin
|
|
||||||
description: The tenant for os_user
|
|
||||||
|
|
||||||
os_auth_url:
|
|
||||||
type: string
|
|
||||||
default: http://127.0.0.1:5000/v2.0
|
|
||||||
description: The Keystone auth_url of the host cloud
|
|
||||||
|
|
||||||
os_project:
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: |
|
|
||||||
The project for os_user. Required for Keystone v3, should be left
|
|
||||||
blank for Keystone v2.
|
|
||||||
|
|
||||||
os_user_domain:
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: |
|
|
||||||
The user domain for os_user. Required for Keystone v3, should be left
|
|
||||||
blank for Keystone v2.
|
|
||||||
|
|
||||||
os_project_domain:
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: |
|
|
||||||
The project domain for os_user. Required for Keystone v3, should be left
|
|
||||||
blank for Keystone v2.
|
|
||||||
|
|
||||||
cloud_data:
|
cloud_data:
|
||||||
type: string
|
type: string
|
||||||
default: '{}'
|
|
||||||
hidden: true
|
hidden: true
|
||||||
|
|
||||||
dhcp_ips:
|
dhcp_ips:
|
||||||
@ -159,65 +89,11 @@ conditions:
|
|||||||
- ''
|
- ''
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
bmc_port:
|
bmc:
|
||||||
type: OS::OVB::BMCPort
|
type: OS::OVB::BMC
|
||||||
|
depends_on: openstack_baremetal_servers
|
||||||
properties:
|
properties:
|
||||||
bmc_prefix: {get_param: bmc_prefix}
|
cloud_data: {get_param: cloud_data}
|
||||||
private_net: {get_param: private_net}
|
|
||||||
|
|
||||||
bmc_other_ports:
|
|
||||||
type: OS::Heat::ResourceGroup
|
|
||||||
properties:
|
|
||||||
count: {get_param: node_count}
|
|
||||||
resource_def:
|
|
||||||
type: OS::Neutron::Port
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
list_join:
|
|
||||||
- ''
|
|
||||||
- - {get_param: bmc_prefix}
|
|
||||||
- _%index%
|
|
||||||
network: {get_param: private_net}
|
|
||||||
|
|
||||||
bmc_handle:
|
|
||||||
type: OS::Heat::WaitConditionHandle
|
|
||||||
|
|
||||||
bmc_wait_condition:
|
|
||||||
type: OS::Heat::WaitCondition
|
|
||||||
properties:
|
|
||||||
handle: {get_resource: bmc_handle}
|
|
||||||
timeout: 600
|
|
||||||
|
|
||||||
bmc_server:
|
|
||||||
type: OS::Nova::Server
|
|
||||||
depends_on: [openstack_baremetal_servers, bmc_other_ports, bmc_port]
|
|
||||||
properties:
|
|
||||||
flavor: {get_param: bmc_flavor}
|
|
||||||
image: {get_param: bmc_image}
|
|
||||||
key_name: {get_param: key_name}
|
|
||||||
networks: {get_attr: [bmc_port, port]}
|
|
||||||
name: {get_param: bmc_prefix}
|
|
||||||
user_data_format: RAW
|
|
||||||
user_data:
|
|
||||||
str_replace:
|
|
||||||
params:
|
|
||||||
$os_user: {get_param: os_user}
|
|
||||||
$os_password: {get_param: os_password}
|
|
||||||
$os_tenant: {get_param: os_tenant}
|
|
||||||
$os_auth_url: {get_param: os_auth_url}
|
|
||||||
$os_project: {get_param: os_project}
|
|
||||||
$os__user_domain: {get_param: os_user_domain}
|
|
||||||
$os__project_domain: {get_param: os_project_domain}
|
|
||||||
$bm_node_count: {get_param: node_count}
|
|
||||||
$bmc_prefix: {get_param: bmc_prefix}
|
|
||||||
$bmc_utility: {get_attr: [bmc_port, ip_address]}
|
|
||||||
$bmc_use_cache: {get_param: bmc_use_cache}
|
|
||||||
$bm_prefix: {get_param: baremetal_prefix}
|
|
||||||
$private_net: {get_param: private_net}
|
|
||||||
$openstackbmc_script: {get_file: ../bin/openstackbmc}
|
|
||||||
$cloud_data: {get_param: cloud_data}
|
|
||||||
$signal_command: {get_attr: [bmc_handle, curl_cli]}
|
|
||||||
template: {get_file: ../bin/install_openstackbmc.sh}
|
|
||||||
|
|
||||||
baremetal_networks:
|
baremetal_networks:
|
||||||
type: OS::OVB::BaremetalNetworks
|
type: OS::OVB::BaremetalNetworks
|
||||||
|
Loading…
Reference in New Issue
Block a user