Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4aa8aed
feat: create `ci-multinode` environment
jackhodgkiss Aug 22, 2022
6f49c3f
feat: successfully configure two controllers
jackhodgkiss Aug 24, 2022
d057d07
feat: succesfully configure three controllers with VXLAN
jackhodgkiss Aug 25, 2022
27e6c61
feat: add `kayobe-compute-01`
jackhodgkiss Aug 31, 2022
b99dfa6
feat: add `growroot` playbook for successful deployment
jackhodgkiss Aug 31, 2022
5b55f69
feat: successfully deploy environment
jackhodgkiss Sep 2, 2022
c359324
fix: syntax issues raised by `yamllint`
jackhodgkiss Sep 12, 2022
8eb2f85
added notes
Alex-Welsh Oct 3, 2022
ed3f286
removed TODO
Alex-Welsh Oct 3, 2022
08df280
feat: update vxlan role version and expand hosts
jackhodgkiss Sep 28, 2022
a4ecccc
feat: enable ceph and ceph related services
jackhodgkiss Oct 2, 2022
483b887
feat: pull vxlan from ansible galaxy
jackhodgkiss Oct 3, 2022
cbffc6e
Removing vxlan hook
Oct 5, 2022
700b4db
added cephadm.yml to multinode environment.
Oct 5, 2022
21ffab9
feat: add storage group vars
jackhodgkiss Oct 5, 2022
6c805de
Adding LVM configuration for storage nodes
grzegorzkoper Oct 10, 2022
54dd5be
Reencrypting docker_registry_password
grzegorzkoper Oct 10, 2022
2ecf6f1
ci-multinode: Use insecure Docker registry
markgoddard Oct 13, 2022
89e5f87
Removing unnecessary config parts. Compute hosts are BM's
grzegorzkoper Oct 12, 2022
e0a8888
Matching with ci-builder env
grzegorzkoper Oct 12, 2022
4ab1762
ci-multinode: fix pep8 issues
markgoddard Oct 13, 2022
46c98bc
Merge pull request #182 from stackhpc/xena-multinode
markgoddard Oct 13, 2022
7d080a0
Merge stackhpc/xena into stackhpc/yoga
markgoddard Oct 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions etc/kayobe/ansible/configure-vxlan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
- name: Configure VXLAN
hosts: storage,seed,controllers,compute
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"
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
2 changes: 2 additions & 0 deletions etc/kayobe/ansible/requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ collections:
version: 1.10.0
- name: stackhpc.pulp
version: 0.3.0
roles:
- src: stackhpc.vxlan
48 changes: 48 additions & 0 deletions etc/kayobe/environments/ci-multinode/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Multinode Test Environment

## Set up hosts
1. Create four baremetal instances with a centos 8 stream LVM image, and a
Centos 8 stream vm
2. SSH into each baremetal and run `sudo chown -R centos:.` in the home directory,
then add the lines
>`10.0.0.34 pelican pelican.service.compute.sms-lab.cloud`
>`10.205.3.187 pulp-server pulp-server.internal.sms-cloud`

to /etc/hosts (if you're waiting on them starting up, you can progress until
`kayobe overcloud host configure` without this step)

## Basic Kayobe Setup
1. SSH into the VM
1. `sudo dnf install -y python3-virtualenv`
1. `mkdir src` and `cd src`
1. Clone https://github.com/stackhpc/stackhpc-kayobe-config.git, then checkout
commit f31df6256f1b1fea99c84547d44f06c4cb74b161
1. `cd ..` and `mkdir venvs`
1. `virtualenv venvs/kayobe` and source `venvs/kayobe/bin/activate`
1. `pip install -U pip`
1. `pip install ./src/kayobe`
1. Acquire the Ansible Vault password for this repository, and store a copy at
``~/vault-pw``
1. `export KAYOBE_VAULT_PASSWORD=$(cat ~/vault-pw)`

## Config changes
1. In etc/kayobe/ansible/requirements.yml remove version from vxlan
4. In etc/kayobe/ansible/configure-vxlan.yml, change the group of
vxlan_interfaces so that the last octet is different e.g. 224.0.0.15
5. Also under vxlan_interfaces, add vni:x where x is between 500 and 1000
5. Also under vxlan_interfaces, check vxlan_dstport is not 4789 (this causes
conflicts, change to 4790)
6. In /etc/kayobe/environments/ci-multinode/tf-networks.yml,
edit admin_ips so that the compute and controller IPs line up with the
instances that were created earlier, remove the other IPs for seed and
cephOSD
7. In /etc/kayobe/environments/ci-multinode/network-allocation.yml, remove all
the entries and just assign `aio_ips:` an empty set `[]`
8. In etc/kayobe/environments/ci-multinode/inventory/hosts, remove the seed
9. run stackhpc-kayobe-config/etc/kayobe/ansible/growroot.yml (if this fails,
manually increase the partition size on each host)

## Final steps
1. `source kayobe-env --environment ci-aio`
10. Run `kayobe overcloud host configure`
11. Run `kayobe overcloud service deploy`
61 changes: 61 additions & 0 deletions etc/kayobe/environments/ci-multinode/cephadm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
###############################################################################
# Cephadm deployment configuration.

# Ceph container image.
cephadm_image: "quay.io/ceph/ceph:v16.2.5"

# Ceph OSD specification.
cephadm_osd_spec:
service_type: osd
service_id: osd_spec_default
placement:
host_pattern: "*"
data_devices:
all: true

###############################################################################
# Ceph post-deployment configuration.

# List of Ceph erasure coding profiles. See stackhpc.cephadm.ec_profiles role
# for format.
cephadm_ec_profiles: []

# List of Ceph CRUSH rules. See stackhpc.cephadm.crush_rules role for format.
cephadm_crush_rules: []

# List of Ceph pools. See stackhpc.cephadm.pools role for format.
cephadm_pools:
- name: backups
application: rbd
state: present
- name: images
application: rbd
state: present
- name: volumes
application: rbd
state: present
- name: vms
application: rbd
state: present

# List of Cephx keys. See stackhpc.cephadm.keys role for format.
cephadm_keys:
- name: client.cinder
caps:
mon: "profile rbd"
osd: "profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images"
mgr: "profile rbd pool=volumes, profile rbd pool=vms"
state: present
- name: client.cinder-backup
caps:
mon: "profile rbd"
osd: "profile rbd pool=volumes, profile rbd pool=backups"
mgr: "profile rbd pool=volumes, profile rbd pool=backups"
state: present
- name: client.glance
caps:
mon: "profile rbd"
osd: "profile rbd pool=images"
mgr: "profile rbd pool=images"
state: present
5 changes: 5 additions & 0 deletions etc/kayobe/environments/ci-multinode/compute.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
# List of storage volume groups. See mrlesmithjr.manage-lvm role for
# format.
compute_lvm_groups:
- "{{ stackhpc_lvm_group_rootvg }}"
5 changes: 5 additions & 0 deletions etc/kayobe/environments/ci-multinode/controllers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
# List of storage volume groups. See mrlesmithjr.manage-lvm role for
# format.
controller_lvm_groups:
- "{{ stackhpc_lvm_group_rootvg }}"
63 changes: 63 additions & 0 deletions etc/kayobe/environments/ci-multinode/globals.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
# Kayobe global configuration.

###############################################################################
# Local path configuration (Ansible control host).

# Path to Kayobe configuration directory on Ansible control host, with an
# environment path appended if kayobe_environment is set.
#kayobe_config_path:

# Name of Kayobe environment to use. Default is $KAYOBE_ENVIRONMENT, or an
# empty string if $KAYOBE_ENVIRONMENT is not set. Can also be set via the
# --environment argument when invoking kayobe.
#kayobe_environment:

# Path to Kayobe configuration directory on Ansible control host with an
# environment path appended if kayobe_environment is set.
#kayobe_env_config_path:

###############################################################################
# Remote path configuration (seed, seed-hypervisor and overcloud hosts).

# Base path for kayobe state on remote hosts.
#base_path:

# Path in which to store configuration on remote hosts.
#config_path:

# Path in which to cache downloaded images on remote hosts.
#image_cache_path:

# Path on which to checkout source code repositories on remote hosts.
#source_checkout_path:

# Path on which to create python virtualenvs on remote hosts.
#virtualenv_path:

###############################################################################
# User configuration.

# User with which to access remote hosts. This user will be created if it does
# not exist.
#kayobe_ansible_user:

###############################################################################
# OS distribution.

# OS distribution name. Valid options are "centos", "ubuntu". Default is
# "centos".
os_distribution: "{{ lookup('pipe', '. /etc/os-release && echo $ID') | trim }}"

# OS release. Valid options are "8-stream" when os_distribution is "centos", or
# "focal" when os_distribution is "ubuntu".
#os_release:

###############################################################################

# Avoid a reboot.
disable_selinux_do_reboot: false

###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
###############################################################################
# Network interface definitions for the controller group.

admin_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: []

###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
###############################################################################
# Network interface definitions for the controller group.

admin_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: []

###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
###############################################################################
# Network interface definitions for the controller group.

admin_interface: eth0

# 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
@@ -0,0 +1,23 @@
# StackHPC LVM lv_swap LV size.
stackhpc_lvm_lv_swap_size: 1g

# StackHPC LVM lv_root LV size.
stackhpc_lvm_lv_root_size: 8g

# StackHPC LVM lv_tmp LV size.
stackhpc_lvm_lv_tmp_size: 2g

# StackHPC LVM lv_var LV size.
stackhpc_lvm_lv_var_size: 12g

# StackHPC LVM lv_var_tmp LV size.
stackhpc_lvm_lv_var_tmp_size: 1g

# StackHPC LVM lv_log LV size.
stackhpc_lvm_lv_log_size: 2g

# StackHPC LVM lv_audit LV size.
stackhpc_lvm_lv_audit_size: 1g

# StackHPC LVM lv_home LV size.
stackhpc_lvm_lv_home_size: 2g
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
###############################################################################
# Network interface definitions for the stroage group.

admin_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: []

###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
5 changes: 5 additions & 0 deletions etc/kayobe/environments/ci-multinode/inventory/groups
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[controllers]

[container-image-builders:children]
# Build container images on the all-in-one controller.
controllers
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[tempest_runner]
kayobe-controller-01
3 changes: 3 additions & 0 deletions etc/kayobe/environments/ci-multinode/kolla.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
kolla_enable_cinder: true
kolla_enable_cinder_backup: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[DEFAULT]
minimum_required_memory = 256
9 changes: 9 additions & 0 deletions etc/kayobe/environments/ci-multinode/kolla/globals.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
# Glance Ceph configuration
glance_backend_ceph: "yes"

# Cinder Ceph configuration
cinder_backend_ceph: "yes"

# Nova Ceph configuration
nova_backend_ceph: "yes"
Loading