74027265b1
This removes the systemd service templates and tasks from this role and leverages a common systemd roles instead. This change removes a lot of code duplication across all governed projects without sacrificing features or functionality. The intention of this change is to ensure uniformity and reduce the maintenance burden on the community when sweeping changes are needed. * To ensure we're using the extra data-disks correctly the bootstrap role has been updated to correctly handle mounts using systemd mount units and oneshot services. * This change sets the container path accordingly allowing an extra physical datadisk to be used for all of our container backends. * The gate test functionality can now be used with all of our container storage backends. This makes it possible for folks using all of our available options, [dir, machinectl, btrfs, lvm, zfs] to test an integrated build of OSA by simply setting the `lxc_container_backing_store` just as it would be done in a production deployment. Depends-On: https://review.openstack.org//555614 Change-Id: I0dc6daabad6c071ec7f9013a1e1eb0b3e594b544 Co-Authored-By: Markos Chandras <mchandras@suse.de> Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
261 lines
9.9 KiB
YAML
261 lines
9.9 KiB
YAML
---
|
|
# Copyright 2015, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
## AIO user-space configuration options
|
|
# Scenario used to bootstrap the host
|
|
bootstrap_host_scenario: aio_lxc
|
|
#
|
|
# Boolean option to implement OpenStack-Ansible configuration for an AIO
|
|
# Switch to no for a multi-node configuration
|
|
bootstrap_host_aio_config: yes
|
|
#
|
|
# Path to the location of the bootstrapping configuration files
|
|
bootstrap_host_aio_config_path: "{{ playbook_dir }}/../etc/openstack_deploy"
|
|
#
|
|
# Path to the location of the scripts the bootstrap scripts use
|
|
bootstrap_host_aio_script_path: "{{ playbook_dir }}/../scripts"
|
|
#
|
|
# The user space configuration file names to use
|
|
bootstrap_host_user_variables_filename: "user_variables.yml"
|
|
bootstrap_host_user_secrets_filename: "user_secrets.yml"
|
|
#
|
|
# Paths to configuration file targets that should be created by the bootstrap
|
|
bootstrap_host_target_config_paths:
|
|
- /etc/openstack_deploy
|
|
- /etc/openstack_deploy/conf.d
|
|
- /etc/openstack_deploy/env.d
|
|
|
|
# The user variables template to use
|
|
bootstrap_user_variables_template: user_variables.aio.yml.j2
|
|
|
|
# Extra user variables files can be loaded into /etc/openstack_deploy by
|
|
# test scenarios. The dict uses scenario as the key to load a list of extra
|
|
# templates if necessary.
|
|
bootstrap_user_variables_extra_templates:
|
|
ceph:
|
|
- src: user_variables_ceph.yml.j2
|
|
dest: user_variables_ceph.yml
|
|
congress:
|
|
- src: user_variables_congress.yml.j2
|
|
dest: user_variables_congress.yml
|
|
translations:
|
|
- src: user_variables_translations.yml.j2
|
|
dest: user_variables_translations.yml
|
|
octavia:
|
|
- src: user_variables_octavia.yml.j2
|
|
dest: user_variables_octavia.yml
|
|
|
|
## Loopback volumes
|
|
# Sparse loopback disks are used for the containers if there is no secondary
|
|
# disk available to partition for btrfs. They are also used for Ceph, Cinder,
|
|
# Swift and Nova (instance storage).
|
|
# The size of the loopback volumes can be customized here (in gigabytes).
|
|
#
|
|
# Boolean option to deploy the loopback disk for Swap
|
|
bootstrap_host_loopback_swap: yes
|
|
# Size of the Swap loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_swap_size: 4096
|
|
#
|
|
# Boolean option to deploy the loopback disk for Cinder
|
|
bootstrap_host_loopback_cinder: yes
|
|
# Size of the Cinder loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_cinder_size: 1024
|
|
#
|
|
# Boolean option to deploy the loopback disk for Swift
|
|
bootstrap_host_loopback_swift: yes
|
|
# Size of the Swift loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_swift_size: 1024
|
|
#
|
|
# Boolean option to deploy the loopback disk for Nova
|
|
bootstrap_host_loopback_nova: yes
|
|
# Size of the Nova loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_nova_size: 1024
|
|
#
|
|
# Boolean option to deploy the loopback disk for machines
|
|
bootstrap_host_loopback_machines: yes
|
|
# Size of the machines loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_machines_size: 128
|
|
#
|
|
# Boolean option to deploy the loopback disk for btrfs
|
|
bootstrap_host_loopback_btrfs: yes
|
|
# Size of the btrfs loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_btrfs_size: 1024
|
|
#
|
|
# Boolean option to deploy the loopback disk for btrfs
|
|
bootstrap_host_loopback_zfs: yes
|
|
# Size of the btrfs loopback disk in gigabytes (GB).
|
|
bootstrap_host_loopback_zfs_size: 1024
|
|
#
|
|
# Boolean option to deploy the OSD loopback disks and cluster UUID for Ceph
|
|
bootstrap_host_ceph: "{{ (bootstrap_host_scenario == 'ceph') | bool }}"
|
|
# Size of the Ceph OSD loopbacks
|
|
bootstrap_host_loopback_ceph_size: 1024
|
|
# Ceph OSDs to create on the AIO host
|
|
ceph_osd_images:
|
|
- 'ceph1'
|
|
- 'ceph2'
|
|
- 'ceph3'
|
|
|
|
## Network configuration
|
|
# The AIO bootstrap configures bridges for use with the AIO deployment.
|
|
# By default, these bridges are configured to be independent of any physical
|
|
# interfaces, and they have their 'bridge_ports' set to 'none'. However,
|
|
# deployers can add a physical interface to 'bridge_ports' to connect the
|
|
# bridge to a real physical interface.
|
|
#
|
|
# A setting of 'none' keeps the bridges as independent from physical
|
|
# interfaces (the default).
|
|
#
|
|
# Setting the value to 'eth1' would mean that the bridge is directly connected
|
|
# to the eth1 device.
|
|
#
|
|
# See https://wiki.debian.org/BridgeNetworkConnections for more details.
|
|
bootstrap_host_bridge_mgmt_ports: none
|
|
bootstrap_host_bridge_vxlan_ports: none
|
|
bootstrap_host_bridge_storage_ports: none
|
|
bootstrap_host_bridge_vlan_ports: "br-vlan-veth"
|
|
# This enables the VXLAN encapsulation the traditional bridges
|
|
# (br-mgmt, br-vxlan, br-storage)
|
|
bootstrap_host_encapsulation_enabled: "{{ not bootstrap_host_aio_config | bool }}"
|
|
#
|
|
# Default network IP ranges
|
|
mgmt_range: "172.29.236"
|
|
vxlan_range: "172.29.240"
|
|
storage_range: "172.29.244"
|
|
vlan_range: "172.29.248"
|
|
netmask: "255.255.252.0"
|
|
#
|
|
# NICs
|
|
bootstrap_host_public_interface: "{{ ansible_default_ipv4.interface }}"
|
|
bootstrap_host_encapsulation_interface: eth1
|
|
#
|
|
#Encapsulations
|
|
bootstrap_host_encapsulation_interfaces:
|
|
encap-mgmt:
|
|
id: 236
|
|
underlay_device: "{{ bootstrap_host_encapsulation_interface }}"
|
|
friendly_name: "Encapsulation of br-mgmt with VXLAN"
|
|
encap-vxlan:
|
|
id: 240
|
|
underlay_device: "{{ bootstrap_host_encapsulation_interface }}"
|
|
friendly_name: "Encapsulation of br-vxlan with VXLAN"
|
|
encap-storage:
|
|
id: 244
|
|
underlay_device: "{{ bootstrap_host_encapsulation_interface }}"
|
|
friendly_name: "Encapsulation of br-storage with VXLAN"
|
|
encap-vlan:
|
|
id: 248
|
|
underlay_device: "{{ bootstrap_host_encapsulation_interface }}"
|
|
friendly_name: "Encapsulation of br-vlan with VXLAN"
|
|
#
|
|
# Bridges
|
|
bridges:
|
|
- name: "br-mgmt"
|
|
ip_addr: "172.29.236.100"
|
|
netmask: "255.255.252.0"
|
|
- name: "br-vxlan"
|
|
ip_addr: "172.29.240.100"
|
|
netmask: "255.255.252.0"
|
|
- name: "br-storage"
|
|
ip_addr: "172.29.244.100"
|
|
netmask: "255.255.252.0"
|
|
- name: "br-vlan"
|
|
ip_addr: "172.29.248.100"
|
|
alias: "172.29.248.1"
|
|
veth_peer: "eth12"
|
|
netmask: "255.255.252.0"
|
|
|
|
bootstrap_host_bridges_interfaces:
|
|
br-mgmt:
|
|
ports: "{{ bootstrap_host_encapsulation_enabled | bool | ternary ('encap-mgmt', bootstrap_host_bridge_mgmt_ports) }}"
|
|
ip_address_range: "{{ mgmt_range }}"
|
|
ip_netmask: "{{ netmask }}"
|
|
br-storage:
|
|
ports: "{{ bootstrap_host_encapsulation_enabled | bool | ternary ('encap-storage', bootstrap_host_bridge_storage_ports) }}"
|
|
ip_address_range: "{{ storage_range }}"
|
|
ip_netmask: "{{ netmask }}"
|
|
br-vxlan:
|
|
ports: "{{ bootstrap_host_encapsulation_enabled | bool | ternary ('encap-vxlan', bootstrap_host_bridge_vxlan_ports) }}"
|
|
ip_address_range: "{{ vxlan_range }}"
|
|
ip_netmask: "{{ netmask }}"
|
|
br-vlan:
|
|
mode: "{{ bridge_vlan_inet_mode | default('static') }}"
|
|
ports: "{{ bootstrap_host_encapsulation_enabled | bool | ternary ('encap-vlan', bootstrap_host_bridge_vlan_ports) }}"
|
|
ip_address_range: "{{ vlan_range }}"
|
|
ip_netmask: "{{ netmask }}"
|
|
state_change_scripts: "{{ bridge_vlan_state_change_scripts }}"
|
|
#
|
|
# Convenience scripts
|
|
bridge_vlan_state_change_scripts: |
|
|
pre-up ip link add br-vlan-veth type veth peer name eth12 || true
|
|
pre-up ip link set br-vlan-veth up
|
|
pre-up ip link set eth12 up
|
|
post-down ip link del br-vlan-veth || true
|
|
bridge_iptables_rules: |
|
|
# To ensure ssh checksum is correct
|
|
up /sbin/iptables -A POSTROUTING -t mangle -p tcp -o {{ bootstrap_host_public_interface }} -j CHECKSUM --checksum-fill
|
|
down /sbin/iptables -D POSTROUTING -t mangle -p tcp -o {{ bootstrap_host_public_interface }} -j CHECKSUM --checksum-fill
|
|
# To provide internet connectivity to instances
|
|
up /sbin/iptables -t nat -A POSTROUTING -o {{ bootstrap_host_public_interface }} -j MASQUERADE
|
|
down /sbin/iptables -t nat -D POSTROUTING -o {{ bootstrap_host_public_interface }} -j MASQUERADE
|
|
|
|
## Extra storage
|
|
# An AIO may optionally be built using a second storage device. If a
|
|
# secondary disk device to use is not specified, then the AIO will be
|
|
# built on any existing disk partitions.
|
|
#
|
|
# WARNING: The data on a secondary storage device specified here will
|
|
# be destroyed and repartitioned.
|
|
#
|
|
# Specify the secondary disk device to use. When the data disk is in use, no NOT
|
|
# set the full path to the device. IE: "/dev/xvde" should be "xvde".
|
|
bootstrap_host_data_disk_device: null
|
|
#
|
|
# Boolean value to force the repartitioning of the secondary device.
|
|
bootstrap_host_data_disk_device_force: no
|
|
#
|
|
# If the storage capacity on this device is greater than or equal to this
|
|
# size (in GB), the bootstrap process will use it.
|
|
bootstrap_host_data_disk_min_size: 50
|
|
#
|
|
# Set the data disk formats table. If the backing store is set to lvm the option
|
|
# the partition will not actually be formatted however for parted, ext2 is used.
|
|
bootstrap_host_data_disk2_formats:
|
|
machinectl: btrfs
|
|
zfs: zfs
|
|
btrfs: btrfs
|
|
dir: ext4
|
|
lvm: ext2
|
|
|
|
bootstrap_host_data_disk2_fs: "{{ bootstrap_host_data_disk2_formats[lxc_container_backing_store] }}"
|
|
bootstrap_host_data_disk2_path: "{{ (lxc_container_backing_store == 'machinectl' or container_tech == 'nspawn') | ternary('/var/lib/machines', '/var/lib/lxc') }}"
|
|
|
|
|
|
# Boolean option to build Amphora image and certs
|
|
bootstrap_host_octavia: "{{ (bootstrap_host_scenario in ['octavia', 'translations']) | bool }}"
|
|
|
|
### Optional Settings ###
|
|
|
|
# Specify the public IP address for the host.
|
|
# By default the address will be set to the ipv4 address of the
|
|
# host's network interface that has the default route on it.
|
|
#bootstrap_host_public_address: 0.0.0.0
|
|
|
|
# Set the container technology in service. Options are nspawn and lxc.
|
|
container_tech: "{{ ('nspawn' in bootstrap_host_scenario) | ternary('nspawn', 'lxc') }}"
|
|
|
|
# Set the lxc backing store for the job
|
|
lxc_container_backing_store: machinectl
|