Merge upstream kayobe-config

This commit is contained in:
Mark Goddard 2018-09-04 19:41:30 +01:00
commit 57762a3dee
30 changed files with 602 additions and 35 deletions

36
.gitignore vendored
View File

@ -1,11 +1,33 @@
# vim and emacs temp files
*~
[._]*.s[a-w][a-z]
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Packages
*.egg*
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
# Installer logs
pip-log.txt
# Unit test / coverage reports
.tox
# Editors
*~
.*.swp
.*sw?
# Files generated by Ansible
ansible/*.retry

4
.gitreview Normal file
View File

@ -0,0 +1,4 @@
[gerrit]
host=review.openstack.org
port=29418
project=openstack/kayobe-config.git

12
.yamllint Normal file
View File

@ -0,0 +1,12 @@
extends: default
rules:
braces:
max-spaces-inside: 1
level: error
brackets:
max-spaces-inside: 1
level: error
comments:
require-starting-space: false
truthy: disable

View File

@ -3,16 +3,34 @@ Kayobe Configuration
====================
This repository provides configuration for the `kayobe
<https://github.com/stackhpc/kayobe>`_ project. It is intended to encourage
<https://github.com/openstack/kayobe>`_ project. It is intended to encourage
version control of site configuration.
Kayobe is an open source tool for automating deployment of Scientific OpenStack
onto a set of bare metal servers. Kayobe is composed of Ansible playbooks, a
python module, and makes heavy use of the OpenStack kolla project. Kayobe aims
to complement the kolla-ansible project, providing an opinionated yet highly
configurable OpenStack deployment and automation of many operational
procedures.
Kayobe enables deployment of containerised OpenStack to bare metal.
* Documentation: https://github.com/stackhpc/kayobe/tree/master/doc
* Source: https://github.com/stackhpc/kayobe
* Bugs: https://github.com/stackhpc/kayobe/issues
Containers offer a compelling solution for isolating OpenStack services, but
running the control plane on an orchestrator such as Kubernetes or Docker
Swarm adds significant complexity and operational overheads.
The hosts in an OpenStack control plane must somehow be provisioned, but
deploying a secondary OpenStack cloud to do this seems like overkill.
Kayobe stands on the shoulders of giants:
* OpenStack bifrost discovers and provisions the cloud
* OpenStack kolla builds container images for OpenStack services
* OpenStack kolla-ansible delivers painless deployment and upgrade of
containerised OpenStack services
To this solid base, kayobe adds:
* Configuration of cloud host OS & flexible networking
* Management of physical network devices
* A friendly openstack-like CLI
All this and more, automated from top to bottom using Ansible.
* Documentation: https://kayobe.readthedocs.io/en/latest/
* Source: https://git.openstack.org/cgit/openstack/kayobe
* Bugs: https://storyboard.openstack.org/#!/project/openstack/kayobe-config
* IRC: #openstack-kayobe

10
etc/kayobe/cadvisor.yml Normal file
View File

@ -0,0 +1,10 @@
---
###############################################################################
# cAdvisor configuration.
# Whether cAdvisor is enabled.
#cadvisor_enabled:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

111
etc/kayobe/compute.yml Normal file
View File

@ -0,0 +1,111 @@
---
###############################################################################
# Compute node configuration.
# User with which to access the computes via SSH during bootstrap, in order
# to setup the Kayobe user account.
#compute_bootstrap_user:
###############################################################################
# Network interface attachments.
# List of networks to which compute nodes are attached.
#compute_network_interfaces:
# List of default networks to which compute nodes are attached.
#compute_default_network_interfaces:
# List of extra networks to which compute nodes are attached.
#compute_extra_network_interfaces:
###############################################################################
# Compute node BIOS configuration.
# Dict of compute BIOS options. Format is same as that used by stackhpc.drac
# role.
#compute_bios_config:
# Dict of default compute BIOS options. Format is same as that used by
# stackhpc.drac role.
#compute_bios_config_default:
# Dict of additional compute BIOS options. Format is same as that used by
# stackhpc.drac role.
#compute_bios_config_extra:
###############################################################################
# Compute node RAID configuration.
# List of compute RAID volumes. Format is same as that used by stackhpc.drac
# role.
#compute_raid_config:
# List of default compute RAID volumes. Format is same as that used by
# stackhpc.drac role.
#compute_raid_config_default:
# List of additional compute RAID volumes. Format is same as that used by
# stackhpc.drac role.
#compute_raid_config_extra:
###############################################################################
# Compute node LVM configuration.
# List of compute volume groups. See mrlesmithjr.manage-lvm role for
# format.
#compute_lvm_groups:
# Default list of compute volume groups. See mrlesmithjr.manage-lvm role for
# format.
#compute_lvm_groups_default:
# Additional list of compute volume groups. See mrlesmithjr.manage-lvm role
# for format.
#compute_lvm_groups_extra:
# Compute LVM volume group for data. See mrlesmithjr.manage-lvm role for
# format.
#compute_lvm_group_data:
# List of disks for use by compute LVM data volume group. Default to an
# invalid value to require configuration.
#compute_lvm_group_data_disks:
# List of LVM logical volumes for the data volume group.
#compute_lvm_group_data_lvs:
# Docker volumes LVM backing volume.
#compute_lvm_group_data_lv_docker_volumes:
# Size of docker volumes LVM backing volume.
#compute_lvm_group_data_lv_docker_volumes_size:
# Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
#compute_lvm_group_data_lv_docker_volumes_fs:
###############################################################################
# Compute node Ceph configuration.
# List of Ceph disks.
# The format is a list of dict like :
# - { osd: "/dev/sdb", journal: "/dev/sdc" }
# - { osd: "/dev/sdd" }
# Journal variable is not mandatory.
#compute_ceph_disks:
###############################################################################
# Compute node sysctl configuration.
# Dict of sysctl parameters to set.
#compute_sysctl_parameters:
###############################################################################
# Compute node user configuration.
# List of users to create. This should be in a format accepted by the
# singleplatform-eng.users role.
#compute_users:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -88,6 +88,16 @@ controller_lvm_groups: []
# Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
#controller_lvm_group_data_lv_docker_volumes_fs:
###############################################################################
# Controller node Ceph configuration.
# List of Ceph disks.
# The format is a list of dict like :
# - { osd: "/dev/sdb", journal: "/dev/sdc" }
# - { osd: "/dev/sdd" }
# Journal variable is not mandatory.
#controller_ceph_disks:
###############################################################################
# Controller node sysctl configuration.

View File

@ -22,6 +22,15 @@ docker_storage_driver: overlay
# argument).
#docker_storage_volume_thinpool_meta_size:
# URL of docker registry
#docker_registry:
# CA of docker registry
#docker_registry_ca:
# Enable live-restore on docker daemon
#docker_daemon_live_restore:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

47
etc/kayobe/grafana.yml Normal file
View File

@ -0,0 +1,47 @@
---
###############################################################################
# Grafana configuration.
# Grafana local admin user name. If you are deploying Monasca Grafana this
# should not conflict with an OpenStack user name.
#grafana_local_admin_user_name:
# Path to git repo containing Grafana dashboards. Eg.
# https://github.com/stackhpc/grafana-reference-dashboards.git
#grafana_monitoring_node_dashboard_repo:
# Dashboard repo version. Optional, defaults to 'HEAD'.
#grafana_monitoring_node_dashboard_repo_version:
# Path to which Grafana dashboards will be cloned to a monitoring node
#grafana_monitoring_node_dashboard_repo_checkout_path:
# The path, relative to the grafana_monitoring_node_dashboard_repo_checkout_path
# containing the dashboards. Eg. /prometheus/control_plane
#grafana_monitoring_node_dashboard_repo_path:
# The Grafana organisation for the control plane. Note that for Monasca
# Grafana with domain support the format is:
# organisation_name@openstack_domain
#grafana_control_plane_organisation:
# A dict of datasources to configure. See the stackhpc.grafana-conf role
# for all supported datasources. Example:
#
# grafana_datasources:
# monasca_api:
# port: 8082
# host: monasca-api
# monasca_log_api:
# port: 5607
# host: monasca-log-api
# elasticsearch:
# port: 9200
# host: monasca-elasticsearch
# project_id: "some_id"
#
#grafana_datasources:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -28,7 +28,10 @@
# Which MAC addresses to add as ports during introspection. One of 'all',
# 'active' or 'pxe'.
#inspector_port_addition:
#inspector_add_ports:
# Which ports to keep after introspection. One of 'all', 'present', or 'added'.
#inspector_keep_ports:
# Whether to enable discovery of nodes not managed by Ironic.
#inspector_enable_discovery:

View File

@ -1,4 +1,3 @@
[config-mgmt]
localhost ansible_connection=local
[seed]
@ -7,5 +6,5 @@ seed
[controllers]
controller0
[compute]
controller0
[compute:children]
controllers

View File

@ -65,6 +65,13 @@
# raid_interface field set.
#kolla_ironic_default_raid_interface:
# Specify the list of rescue interfaces to load during service initialization.
#kolla_ironic_enabled_rescue_interfaces:
# Default rescue interface to be used for nodes that do not have
# rescue_interface field set.
#kolla_ironic_default_rescue_interface:
# Specify the list of storage interfaces to load during
# service initialization.
#kolla_ironic_enabled_storage_interfaces:

View File

@ -20,6 +20,9 @@
# Path to virtualenv in which to install kolla.
#kolla_venv:
# Path in which to generate kolla configuration.
#kolla_build_config_path:
###############################################################################
# Kolla-ansible installation.
@ -39,24 +42,33 @@
# Path to virtualenv in which to install kolla-ansible.
#kolla_ansible_venv:
###############################################################################
# Kolla & kolla-ansible configuration.
# Path to Kolla configuration directory.
# Path to Kolla-ansible configuration directory.
#kolla_config_path:
# Path to Kolla node custom configuration directory.
# Path to Kolla-ansible node custom configuration directory.
#kolla_node_custom_config_path:
###############################################################################
# Kolla configuration.
# Kolla base container image distribution.
#kolla_base_distro:
# Kolla installation type: binary or source.
#kolla_install_type:
# URL of docker registry to use for Kolla images.
#kolla_docker_registry:
# Docker namespace to use for Kolla images.
#kolla_docker_namespace:
# Username to use to access a docker registry.
#kolla_docker_registry_username:
# Password to use to access a docker registry.
#kolla_docker_registry_password:
# Kolla OpenStack release version. This should be a Docker image tag.
#kolla_openstack_release:
@ -119,12 +131,13 @@
###############################################################################
# Kolla-ansible configuration.
# Virtualenv directory where Kolla-ansible's ansible modules will execute
# remotely on the target nodes. If None, no virtualenv will be used.
#kolla_ansible_target_venv:
# Whether TLS is enabled for the external API endpoints.
#kolla_enable_tls_external:
# Path to external API certificate.
#kolla_external_fqdn_cert:
# Whether debug logging is enabled.
#kolla_openstack_logging_debug:
@ -164,6 +177,7 @@
#kolla_enable_manila_backend_generic:
#kolla_enable_manila_backend_hnas:
#kolla_enable_mistral:
#kolla_enable_monasca:
#kolla_enable_mongodb:
#kolla_enable_multipathd:
#kolla_enable_murano:
@ -205,6 +219,17 @@
# passwords file.
#kolla_ansible_custom_passwords:
###############################################################################
# TLS certificate bundle management
# Optionally copy a TLS certificate bundle into place.
#
# When enabled, this will copy the contents of kolla_tls_cert into place for
# use by HAproxy.
#
# Note that this should be formatted as a literal style block scalar.
#kolla_tls_cert:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -1,4 +1,10 @@
---
# Although Kolla-Ansible provides full support for Fernet tokens, it still
# defaults to UUID. This setting overrides K-A and brings it in-line with
# Keystone's default.
#
keystone_token_provider: 'fernet'
# Most development environments will use nested virtualisation, and we can't
# guarantee that nested KVM support is available. Use QEMU as a lowest common
# denominator.

View File

@ -23,7 +23,7 @@
# Dict of monitoring node BIOS options. Format is same as that used by
# stackhpc.drac role.
#monitoring_bios_config:
#monitoring_bios_config:
# Dict of default monitoring node BIOS options. Format is same as that used by
# stackhpc.drac role.

View File

@ -30,10 +30,14 @@ provision_wl_net_name: aio
#internal_net_name:
internal_net_name: aio
# Name of the network used to expose the external OpenStack API endpoints and
# to provide external network access via Neutron.
#external_net_name:
external_net_name: aio
# List of names of networks used to provide external network access via
# Neutron.
# Deprecated name: external_net_name
# If external_net_name is defined, external_net_names will default to a list
# containing one item, external_net_name.
#external_net_names:
external_net_names:
- aio
# Name of the network used to expose the public OpenStack API endpoints.
#public_net_name:
@ -80,6 +84,13 @@ aio_vip_address: 192.168.33.2
# OVS bridge.
#network_patch_suffix_ovs:
###############################################################################
# Network routing table configuration.
# List of IP routing tables. Each item should be a dict containing 'id' and
# 'name' items. These tables will be added to /etc/iproute2/rt_tables.
#network_route_tables:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -2,7 +2,8 @@
###############################################################################
# Neutron configuration.
# List of Neutron ML2 mechanism drivers to use.
# List of Neutron ML2 mechanism drivers to use. If unset the kolla-ansible
# defaults will be used.
#kolla_neutron_ml2_mechanism_drivers:
# List of Neutron ML2 type drivers to use.
@ -21,6 +22,9 @@
# List of Neutron ML2 extention drivers to use.
#kolla_neutron_ml2_extension_drivers:
###############################################################################
# Neutron ML2 generic switch driver configuration.
# List of switches to configure for use by genericswitch ML2 mechanism driver.
# Each item should be a dict containing the following items:
# name: Hostname of the switch
@ -43,6 +47,12 @@
# secret: not currently supported
#kolla_neutron_ml2_generic_switch_hosts:
# Dict containing additional configuration for switches managed by the
# genericswitch ML2 mechanism driver. For per-switch configuration of switches
# in kolla_neutron_ml2_generic_switch_hosts, this may be set as a group or
# host variable for the switch host.
#kolla_neutron_ml2_generic_switch_extra:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -0,0 +1,10 @@
---
###############################################################################
# Prometheus node exporter configuration.
# Whether Prometheus node exporter is enabled.
#nodeexporter_enabled:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

12
etc/kayobe/nova.yml Normal file
View File

@ -0,0 +1,12 @@
---
###############################################################################
# Nova configuration.
# Which host to use to deploy the nova-compute services for ironic. By default
# this is none and all hosts in the nova group are used instead - typically the
# controllers.
#kolla_nova_compute_ironic_host:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -13,6 +13,21 @@
# should not be added to the inventory.
#overcloud_group_hosts_map:
# To prevent some network issues you can choose to disable cloud-init
#disable_cloud_init:
###############################################################################
# Overcloud host image configuration.
# The CentOS cloud images from 7.2 (1511) onwards have a bogus name server
# entry in /etc/resolv.conf, 10.0.2.3. Cloud-init only appends name server
# entries to this file, and will not remove this bogus entry. Typically this
# leads to a delay of around 30 seconds when connecting via SSH, due to a
# timeout in NSS. The workaround employed here is to remove this bogus entry
# from the image using virt-customize, if it exists. See
# https://bugs.centos.org/view.php?id=14369.
#overcloud_host_image_workaround_resolv_enabled:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

View File

@ -1,4 +1,11 @@
---
###############################################################################
# Seed hypervisor node configuration.
# User with which to access the seed hypervisor via SSH during bootstrap, in
# order to setup the Kayobe user account.
#seed_hypervisor_bootstrap_user:
###############################################################################
# Seed hypervisor network interface configuration.

View File

@ -26,6 +26,12 @@
# Base image for the seed VM root volume.
#seed_vm_root_image:
# Capacity of the seed VM data volume.
#seed_vm_data_capacity:
# Format of the seed VM data volume.
#seed_vm_data_format:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

111
etc/kayobe/storage.yml Normal file
View File

@ -0,0 +1,111 @@
---
###############################################################################
# Storage node configuration.
# User with which to access the storages via SSH during bootstrap, in order
# to setup the Kayobe user account.
#storage_bootstrap_user:
###############################################################################
# Network interface attachments.
# List of networks to which storage nodes are attached.
#storage_network_interfaces:
# List of default networks to which storage nodes are attached.
#storage_default_network_interfaces:
# List of extra networks to which storage nodes are attached.
#storage_extra_network_interfaces:
###############################################################################
# Storage node BIOS configuration.
# Dict of storage BIOS options. Format is same as that used by stackhpc.drac
# role.
#storage_bios_config:
# Dict of default storage BIOS options. Format is same as that used by
# stackhpc.drac role.
#storage_bios_config_default:
# Dict of additional storage BIOS options. Format is same as that used by
# stackhpc.drac role.
#storage_bios_config_extra:
###############################################################################
# Storage node RAID configuration.
# List of storage RAID volumes. Format is same as that used by stackhpc.drac
# role.
#storage_raid_config:
# List of default storage RAID volumes. Format is same as that used by
# stackhpc.drac role.
#storage_raid_config_default:
# List of additional storage RAID volumes. Format is same as that used by
# stackhpc.drac role.
#storage_raid_config_extra:
###############################################################################
# Storage node LVM configuration.
# List of storage volume groups. See mrlesmithjr.manage-lvm role for
# format.
#storage_lvm_groups:
# Default list of storage volume groups. See mrlesmithjr.manage-lvm role for
# format.
#storage_lvm_groups_default:
# Additional list of storage volume groups. See mrlesmithjr.manage-lvm role
# for format.
#storage_lvm_groups_extra:
# Storage LVM volume group for data. See mrlesmithjr.manage-lvm role for
# format.
#storage_lvm_group_data:
# List of disks for use by storage LVM data volume group. Default to an
# invalid value to require configuration.
#storage_lvm_group_data_disks:
# List of LVM logical volumes for the data volume group.
#storage_lvm_group_data_lvs:
# Docker volumes LVM backing volume.
#storage_lvm_group_data_lv_docker_volumes:
# Size of docker volumes LVM backing volume.
#storage_lvm_group_data_lv_docker_volumes_size:
# Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
#storage_lvm_group_data_lv_docker_volumes_fs:
###############################################################################
# Storage node Ceph configuration.
# List of Ceph disks.
# The format is a list of dict like :
# - { osd: "/dev/sdb", journal: "/dev/sdc" }
# - { osd: "/dev/sdd" }
# Journal variable is not mandatory.
#storage_ceph_disks:
###############################################################################
# Storage node sysctl configuration.
# Dict of sysctl parameters to set.
#storage_sysctl_parameters:
###############################################################################
# Storage node user configuration.
# List of users to create. This should be in a format accepted by the
# singleplatform-eng.users role.
#storage_users:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

10
etc/kayobe/yum-cron.yml Normal file
View File

@ -0,0 +1,10 @@
---
# Whether to enable Yum automatic updates.
#yum_cron_enabled: false
# Command to use for Yum automatic updates.
#yum_cron_update_cmd: 'security'
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

27
etc/kayobe/yum.yml Normal file
View File

@ -0,0 +1,27 @@
---
# Whether or not to use a local Yum mirror.
#yum_use_local_mirror: false
# Mirror FQDN for Yum repos.
#yum_centos_mirror_host: 'mirror.centos.org'
# Mirror directory for Yum CentOS repos.
#yum_centos_mirror_directory: 'centos'
# Mirror FQDN for Yum EPEL repos.
#yum_epel_mirror_host: 'download.fedoraproject.org'
# Mirror directory for Yum EPEL repos.
#yum_epel_mirror_directory: 'pub/epel'
# A dict of custom repositories.
# You can see params on
# http://docs.ansible.com/ansible/latest/modules/yum_repository_module.html.
# For example:
# yum_custom_repos:
# reponame:
# baseurl: http://repo
# file: myrepo
# gpgkey: http://gpgkey
# gpgcheck: yes
#yum_custom_repos:
###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes

14
setup.cfg Normal file
View File

@ -0,0 +1,14 @@
[metadata]
name = kayobe-config
summary = Configuration for Kayobe
description-file =
README.rst
author = OpenStack
author-email = openstack-dev@lists.openstack.org
home-page = https://kayobe.readthedocs.io/en/latest/
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
Intended Audience :: System Administrators
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux

22
setup.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# 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.
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
setuptools.setup(
setup_requires=['pbr'],
pbr=True)

5
test-requirements.txt Normal file
View File

@ -0,0 +1,5 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
yamllint # GPLv3

14
tox.ini Normal file
View File

@ -0,0 +1,14 @@
[tox]
minversion = 2.0
envlist = pep8
skipsdist = True
[testenv]
install_command = pip install {opts} {packages}
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/queens}
-r{toxinidir}/test-requirements.txt
[testenv:pep8]
commands =
yamllint etc/kayobe

10
zuul.d/project.yaml Normal file
View File

@ -0,0 +1,10 @@
---
- project:
check:
jobs:
- openstack-tox-pep8
gate:
queue: kayobe
jobs:
- openstack-tox-pep8