Skip to content

Commit

Permalink
Multinode xena (#248)
Browse files Browse the repository at this point in the history
* feat:  copy `ci-multinode` from PR `#246`

* feat: copy `ansible` from PR `#246`

* revert: configure-aio-resources.yml to `da05599`

* feat: actually copy contents of `ci-multinode`

For some reason the previous commit does not contain the important
changes to the configuration. This commit fixes that.

* feat: include `.automation.conf` from PR `#246`

* revert: `stackhpc-ci` back to `stackhpc/xena`

* feat: update address of `pulp-server`

* feat: bump `stackhpc.cephadm` version

* feat: `haproxy` group has been replaced with `loadbalancer`

* fix: ensure `cephadm_host_labels` is defined

* feat: reduce concurrency and remove load list

* feat: increase `max_microversion`

* fix: restore order to `requirements.yml`

* fix: README has been moved

* fix: remove unused collection

* fix: add missing new line

* feat: disable some unwanted service within ci-multinode

* fix: remove extra blank lines

* feat: revert `TEMPEST_CONCURRENCY` to two

* feat: load `ci-multinode` tempest settings conditionally

Firstly, the skip-list has been renamed from `tempest-full` to `ci-multinode` as this
list would be environment specific. Secondly the `config.sh` script now contains a
conditional for the `ci-multinode` environment allowing for the test list and
concurrency settings to be loaded without impacting other environments.

* fix: use `HTTP` dashboard URL over `HTTPS`

* fix: reduce multinode tempest concurrency

* feat: bump `stackhpc.cephadm` collection version

* feat: remove unecessary comment
  • Loading branch information
jackhodgkiss authored Jan 31, 2023
1 parent 2ccb7bd commit bd91186
Show file tree
Hide file tree
Showing 30 changed files with 2,000 additions and 61 deletions.
4 changes: 4 additions & 0 deletions .automation.conf/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ if [ ! -z ${KAYOBE_ENVIRONMENT:+x} ]; then
# Seem to get servers failing to spawn with higher concurrency
export TEMPEST_CONCURRENCY=1
fi
if [[ "$KAYOBE_ENVIRONMENT" =~ "ci-multinode" ]]; then
export KAYOBE_AUTOMATION_TEMPEST_LOADLIST=tempest-full
export KAYOBE_AUTOMATION_TEMPEST_SKIPLIST=ci-multinode
fi
fi

if [[ -z "${KAYOBE_AUTOMATION_TEMPEST_CONF_OVERRIDES:+x}" ]] || [[ ! -e "${KAYOBE_AUTOMATION_TEMPEST_CONF_OVERRIDES}" ]]; then
Expand Down
1,601 changes: 1,601 additions & 0 deletions .automation.conf/tempest/load-lists/tempest-full

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .automation.conf/tempest/skip-lists/ci-multinode
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details.*: "Cirros image doesn't have '/var/run/udhcpc.eth0.pid"
30 changes: 30 additions & 0 deletions .automation.conf/tempest/tempest-ci-multinode.overrides.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[DEFAULT]
openstack_client_http_timeout = 300

[auth]
compute_quotas = cores:-1,ram:-1

[identity]
v3_endpoint_type = publicURL

[compute]
min_compute_nodes = 2
min_microversion = 2.1
max_microversion = 2.88

[service-clients]
http_timeout = 600

[compute-feature-enabled]
resize = true
live_migration = true
block_migration_for_live_migration = false
volume_backed_live_migration = true
console_output = true

[volume]
min_microversion = 3.0
max_microversion = 3.66

[dashboard]
dashboard_url = http://192.168.39.2
9 changes: 1 addition & 8 deletions etc/kayobe/ansible/configure-vxlan.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
- name: Configure VXLAN
hosts: storage,seed,controllers,compute
hosts: controllers,compute,seed,storage
gather_facts: false
vars:
ansible_user: "{{ bootstrap_user }}"
Expand All @@ -11,10 +11,3 @@
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
roles:
- role: stackhpc.vxlan
vars:
vxlan_phys_dev: "{{ admin_oc_net_name | net_interface }}"
vxlan_dstport: 4790
vxlan_interfaces:
- device: vxlan10
group: 224.0.0.10
bridge: breth1
23 changes: 23 additions & 0 deletions etc/kayobe/ansible/fix-hostname.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
- name: Fix hostname on storage nodes for cephadm
hosts: storage
gather_facts: false
vars:
ansible_user: "{{ bootstrap_user }}"
# We can't assume that a virtualenv exists at this point, so use the system
# python interpreter.
ansible_python_interpreter: /usr/bin/python3
# Work around no known_hosts entry on first boot.
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
tasks:
- name: Get current hostname
ansible.builtin.command:
cmd: hostname
changed_when: false
register: current_hostname

- name: Set hostname to a non FQDN
ansible.builtin.command:
cmd: hostnamectl set-hostname "{{ inventory_hostname }}"
when: current_hostname.stdout != inventory_hostname
become: true
21 changes: 21 additions & 0 deletions etc/kayobe/ansible/fix-networking.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
- name: Fix networking
hosts: seed,compute,controllers,storage
gather_facts: false
vars:
ansible_user: "{{ bootstrap_user }}"
# We can't assume that a virtualenv exists at this point, so use the system
# python interpreter.
ansible_python_interpreter: /usr/bin/python3
# Work around no known_hosts entry on first boot.
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
tasks:
- name: Ensure `hosts` file contains pulp entries
ansible.builtin.copy:
content: |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.34 pelican pelican.service.compute.sms-lab.cloud
10.205.3.187 pulp-server pulp-server.internal.sms-cloud
dest: /etc/hosts
become: true
2 changes: 1 addition & 1 deletion etc/kayobe/ansible/requirements.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
collections:
- name: stackhpc.cephadm
version: 1.10.0
version: 1.12.2
- name: stackhpc.pulp
version: 0.4.1
roles:
Expand Down
1 change: 1 addition & 0 deletions etc/kayobe/environments/ci-multinode/compute.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
compute_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}"
# List of storage volume groups. See mrlesmithjr.manage-lvm role for
# format.
compute_lvm_groups:
Expand Down
1 change: 1 addition & 0 deletions etc/kayobe/environments/ci-multinode/controllers.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
controller_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}"
# List of storage volume groups. See mrlesmithjr.manage-lvm role for
# format.
controller_lvm_groups:
Expand Down
2 changes: 2 additions & 0 deletions etc/kayobe/environments/ci-multinode/growroot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
growroot_group: "seed:overcloud"
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
cephadm_host_labels: []
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
###############################################################################
# VXLAN configuration.

# These variables are used by stackhpc.vxlan to construct a VXLAN interface.
# The physical device that the VXLAN is plugged into.
vxlan_phys_dev: "{{ admin_oc_interface }}"

# Destination port used by the VXLAN interface. Note: OpenStack uses 4789.
vxlan_dstport: 4790

# Virtual network identifier used by the VLXAN. This must be unique between multinode environments.
vxlan_vni:

# This is a dictionary of interfaces to be created by the stackhpc.vxlan role.
vxlan_interfaces:
- device: "vxlan{{ vxlan_vni }}"
group: "{{ '239.0.0.0/8' | next_nth_usable(vxlan_vni) }}"
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
# List of extra LVs to include in the rootvg VG.
stackhpc_lvm_group_rootvg_lvs_extra:
- "{{ stackhpc_lvm_lv_docker }}"

###############################################################################
# StackHPC LVM Logical Volume (LV) configuration.

# StackHPC LVM lv_swap LV size.
stackhpc_lvm_lv_swap_size: 1g

# StackHPC LVM lv_root LV size.
stackhpc_lvm_lv_root_size: 10g

# StackHPC LVM lv_tmp LV size.
stackhpc_lvm_lv_tmp_size: 10g

# StackHPC LVM lv_var LV size.
stackhpc_lvm_lv_var_size: 20g

# StackHPC LVM lv_var_tmp LV size.
stackhpc_lvm_lv_var_tmp_size: 5g

# StackHPC LVM lv_log LV size.
stackhpc_lvm_lv_log_size: 10g

# StackHPC LVM lv_audit LV size.
stackhpc_lvm_lv_audit_size: 5g

# StackHPC LVM lv_home LV size.
stackhpc_lvm_lv_home_size: 5g

# StackHPC LVM lv_docker LV size.
stackhpc_lvm_lv_docker_size: 75%FREE
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
---
###############################################################################
# Network interface definitions for the controller group.
# Network interface definitions for the compute group.

admin_interface: eno1
admin_oc_interface: "eno1"

# Controller interface on all-in-one network.
aio_interface: breth1
# Use dummy1 if it exists, otherwise the bridge will have no ports.
aio_bridge_ports: []
internal_interface: "{{ vxlan_interfaces[0].device }}.{{ internal_vlan }}"

storage_interface: "{{ vxlan_interfaces[0].device }}.{{ storage_vlan }}"

tunnel_interface: "{{ vxlan_interfaces[0].device }}.{{ tunnel_vlan }}"

###############################################################################
# Dummy variable to allow Ansible to accept this file.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
# List of extra LVs to include in the rootvg VG.
stackhpc_lvm_group_rootvg_lvs_extra:
- "{{ stackhpc_lvm_lv_docker }}"

###############################################################################
# StackHPC LVM Logical Volume (LV) configuration.

# StackHPC LVM lv_swap LV size.
stackhpc_lvm_lv_swap_size: 1g

# StackHPC LVM lv_root LV size.
stackhpc_lvm_lv_root_size: 10g

# StackHPC LVM lv_tmp LV size.
stackhpc_lvm_lv_tmp_size: 10g

# StackHPC LVM lv_var LV size.
stackhpc_lvm_lv_var_size: 20g

# StackHPC LVM lv_var_tmp LV size.
stackhpc_lvm_lv_var_tmp_size: 5g

# StackHPC LVM lv_log LV size.
stackhpc_lvm_lv_log_size: 10g

# StackHPC LVM lv_audit LV size.
stackhpc_lvm_lv_audit_size: 5g

# StackHPC LVM lv_home LV size.
stackhpc_lvm_lv_home_size: 5g

# StackHPC LVM lv_docker LV size.
stackhpc_lvm_lv_docker_size: 75%FREE
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
###############################################################################
# Network interface definitions for the controller group.

admin_interface: eno1
admin_oc_interface: "eno1"

# Controller interface on all-in-one network.
aio_interface: breth1
# Use dummy1 if it exists, otherwise the bridge will have no ports.
aio_bridge_ports: []
internal_interface: "{{ vxlan_interfaces[0].device }}.{{ internal_vlan }}"

storage_interface: "{{ vxlan_interfaces[0].device }}.{{ storage_vlan }}"

tunnel_interface: "{{ vxlan_interfaces[0].device }}.{{ tunnel_vlan }}"

public_interface: "{{ vxlan_interfaces[0].device }}.{{ public_vlan }}"

###############################################################################
# Dummy variable to allow Ansible to accept this file.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
# List of extra LVs to include in the rootvg VG.
stackhpc_lvm_group_rootvg_lvs_extra:
- "{{ stackhpc_lvm_lv_docker }}"

###############################################################################
# StackHPC LVM Logical Volume (LV) configuration.

# StackHPC LVM lv_swap LV size.
stackhpc_lvm_lv_swap_size: 1g

# StackHPC LVM lv_root LV size.
stackhpc_lvm_lv_root_size: 10g

# StackHPC LVM lv_tmp LV size.
stackhpc_lvm_lv_tmp_size: 10g

# StackHPC LVM lv_var LV size.
stackhpc_lvm_lv_var_size: 20g

# StackHPC LVM lv_var_tmp LV size.
stackhpc_lvm_lv_var_tmp_size: 5g

# StackHPC LVM lv_log LV size.
stackhpc_lvm_lv_log_size: 10g

# StackHPC LVM lv_audit LV size.
stackhpc_lvm_lv_audit_size: 5g

# StackHPC LVM lv_home LV size.
stackhpc_lvm_lv_home_size: 5g

# StackHPC LVM lv_docker LV size.
stackhpc_lvm_lv_docker_size: 75%FREE
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
---
###############################################################################
# Network interface definitions for the controller group.
# Network interface definitions for the seed group.

admin_interface: eth0
admin_oc_interface: "{{ 'ens2' if os_distribution == 'ubuntu' else 'ens3' }}"

provision_oc_interface: "{{ vxlan_interfaces[0].device}}.{{ provision_oc_vlan }}"

external_interface: "{{ vxlan_interfaces[0].device }}.{{ external_vlan }}"

public_interface: "{{ vxlan_interfaces[0].device }}.{{ public_vlan }}"

# Controller interface on all-in-one network.
aio_interface: breth1
# Use dummy1 if it exists, otherwise the bridge will have no ports.
aio_bridge_ports: []
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
# List of extra LVs to include in the rootvg VG.
stackhpc_lvm_group_rootvg_lvs_extra:
- "{{ stackhpc_lvm_lv_docker }}"

###############################################################################
# StackHPC LVM Logical Volume (LV) configuration.

# StackHPC LVM lv_swap LV size.
stackhpc_lvm_lv_swap_size: 1g

Expand All @@ -21,3 +29,6 @@ stackhpc_lvm_lv_audit_size: 1g

# StackHPC LVM lv_home LV size.
stackhpc_lvm_lv_home_size: 2g

# StackHPC LVM lv_docker LV size.
stackhpc_lvm_lv_docker_size: 75%FREE
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
---
###############################################################################
# Network interface definitions for the stroage group.
# Network interface definitions for the storage group.

admin_interface: ens3
admin_oc_interface: "ens3"

# Controller interface on all-in-one network.
aio_interface: breth1
# Use dummy1 if it exists, otherwise the bridge will have no ports.
aio_bridge_ports: []
internal_interface: "{{ vxlan_interfaces[0].device }}.{{ internal_vlan }}"

storage_interface: "{{ vxlan_interfaces[0].device }}.{{ storage_vlan }}"

storage_mgmt_interface: "{{ vxlan_interfaces[0].device }}.{{ storage_mgmt_vlan }}"

###############################################################################
# Dummy variable to allow Ansible to accept this file.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
[tempest_runner]
kayobe-controller-01
[tempest_runner:children]
seed
12 changes: 12 additions & 0 deletions etc/kayobe/environments/ci-multinode/kolla.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
---
kolla_enable_cinder: true
kolla_enable_cinder_backup: true
kolla_enable_neutron_provider_networks: true
kolla_enable_ovn: true
kolla_enable_octavia: true

# Override these from etc/kayobe/kolla.yml
# These are set to true within etc/kayobe/kolla.yml.
# Leaving them set to true would require additional
# configuration change.
kolla_enable_central_logging: false
kolla_enable_elasticsearch_curator: false
kolla_enable_grafana: false
kolla_enable_prometheus: false
Loading

0 comments on commit bd91186

Please sign in to comment.