Add ability to create COE template
Creation of cluster templates is pretty routine operation wich might be easily automated with ansible. Depends-On: https://review.opendev.org/710245 Change-Id: Ib7f99714502ba94604b8f0bb997c77a768af6d1d
This commit is contained in:
parent
2c46e51869
commit
51fe8d4897
|
@ -127,15 +127,38 @@ magnum_trustee_domain_admin_roles: ['admin']
|
||||||
magnum_cluster_user_trust: True
|
magnum_cluster_user_trust: True
|
||||||
|
|
||||||
#Glance images
|
#Glance images
|
||||||
magnum_glance_images: []
|
|
||||||
## Example Glance Image - Fedora Atomic
|
## Example Glance Image - Fedora Atomic
|
||||||
# - name: fedora-atomic-latest #Name of the image in Glance
|
# - name: fedora-atomic-latest #Name of the image in Glance
|
||||||
# disk_format: qcow2 #Disk format (e.g. qcow2)
|
# disk_format: qcow2 #Disk format (e.g. qcow2)
|
||||||
# image_format: bare #Image format
|
# image_format: bare #Image format
|
||||||
# public: true #Boolean - is the image public
|
# public: true #Boolean - is the image public
|
||||||
# file: https://dl.fedoraproject.org/pub/alt/atomic/stable/Fedora-29-updates-20190820.0/AtomicHost/x86_64/images/Fedora-AtomicHost-29-20190820.0.x86_64.qcow2
|
# file: https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/31.20200210.3.0/x86_64/fedora-coreos-31.20200210.3.0-openstack.x86_64.qcow2.xz
|
||||||
# distro: fedora-atomic #Value for the os_distro metadata
|
# distro: fedora-atomic #Value for the os_distro metadata
|
||||||
# checksum: "sha1:7c1a88749d31a3828ac6a6b02e82d64f4c5823a5"
|
# checksum: "sha256:9a5252e24b82a5edb1ce75b05653f59895685b0f1028112462e908a12deae518"
|
||||||
|
magnum_glance_images: []
|
||||||
|
|
||||||
|
# Define cluster templates to create. It should be list of
|
||||||
|
# dictionaries with keys that are supported by os_coe_cluster_template
|
||||||
|
# module (https://docs.ansible.com/ansible/latest/modules/os_coe_cluster_template_module.html)
|
||||||
|
#magnum_cluster_templates:
|
||||||
|
# - name: k8s
|
||||||
|
# cloud: default
|
||||||
|
# coe: kubernetes
|
||||||
|
# docker_volume_size: 50
|
||||||
|
# external_network_id: public
|
||||||
|
# network_driver: flannel
|
||||||
|
magnum_cluster_templates: []
|
||||||
|
|
||||||
|
# Create extra flavors to be used by magnum cluster template. It should be list
|
||||||
|
# of dictionaries with keys that are supported by os_nova_flavor module
|
||||||
|
# (https://docs.ansible.com/ansible/latest/modules/os_nova_flavor_module.html)
|
||||||
|
#magnum_flavors:
|
||||||
|
# - name: k8s-pod
|
||||||
|
# cloud: default
|
||||||
|
# ram: 256
|
||||||
|
# vcpus: 1
|
||||||
|
# disk: 5
|
||||||
|
magnum_flavors: []
|
||||||
|
|
||||||
# Set the directory where the downloaded images will be stored
|
# Set the directory where the downloaded images will be stored
|
||||||
# on the magnum_service_setup_host host. If the host is localhost,
|
# on the magnum_service_setup_host host. If the host is localhost,
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Added variables `magnum_cluster_templates` and `magnum_flavors`
|
||||||
|
which allow deployers to define coe cluster template and nova flavors
|
||||||
|
creation during role execution. These variables may contain list of
|
||||||
|
resources to add. All keys supported by appropriate ansible modules
|
||||||
|
may be passed as items in the list.
|
|
@ -38,46 +38,3 @@
|
||||||
notify:
|
notify:
|
||||||
- Restart magnum services
|
- Restart magnum services
|
||||||
- Restart uwsgi services
|
- Restart uwsgi services
|
||||||
|
|
||||||
- name: Add magnum image
|
|
||||||
delegate_to: "{{ magnum_service_setup_host }}"
|
|
||||||
run_once: true
|
|
||||||
vars:
|
|
||||||
ansible_python_interpreter: "{{ magnum_service_setup_host_python_interpreter }}"
|
|
||||||
block:
|
|
||||||
- name: Create image download directory
|
|
||||||
file:
|
|
||||||
path: "{{ magnum_image_path }}"
|
|
||||||
state: directory
|
|
||||||
mode: "0750"
|
|
||||||
owner: "{{ magnum_image_path_owner }}"
|
|
||||||
|
|
||||||
- name: Download images
|
|
||||||
get_url:
|
|
||||||
url: "{{ item.file }}"
|
|
||||||
dest: "{{ magnum_image_path }}/{{ item.file | basename }}"
|
|
||||||
checksum: "{{ item.checksum | default(omit) }}"
|
|
||||||
register: download_image
|
|
||||||
until: download_image is success
|
|
||||||
retries: 5
|
|
||||||
delay: 10
|
|
||||||
with_items: "{{ magnum_glance_images }}"
|
|
||||||
|
|
||||||
- name: Upload images to Glance
|
|
||||||
os_image:
|
|
||||||
cloud: default
|
|
||||||
state: present
|
|
||||||
endpoint_type: admin
|
|
||||||
verify: "{{ not keystone_service_adminuri_insecure }}"
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
disk_format: "{{ item.disk_format }}"
|
|
||||||
container_format: "{{ item.image_format }}"
|
|
||||||
is_public: "{{ item.public }}"
|
|
||||||
filename: "{{ magnum_image_path }}/{{ item.file | basename }}"
|
|
||||||
properties:
|
|
||||||
os_distro: "{{ item.distro }}"
|
|
||||||
register: upload_image
|
|
||||||
until: upload_image is success
|
|
||||||
retries: 5
|
|
||||||
delay: 10
|
|
||||||
with_items: "{{ magnum_glance_images }}"
|
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
---
|
||||||
|
# Copyright 2020, VEXXHOST, 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.
|
||||||
|
|
||||||
|
- name: Create magnum resources
|
||||||
|
delegate_to: "{{ magnum_service_setup_host }}"
|
||||||
|
vars:
|
||||||
|
ansible_python_interpreter: "{{ magnum_service_setup_host_python_interpreter }}"
|
||||||
|
block:
|
||||||
|
- name: Create image download directory
|
||||||
|
file:
|
||||||
|
path: "{{ magnum_image_path }}"
|
||||||
|
state: directory
|
||||||
|
mode: "0750"
|
||||||
|
owner: "{{ magnum_image_path_owner }}"
|
||||||
|
when: magnum_glance_images
|
||||||
|
|
||||||
|
- name: Download images
|
||||||
|
get_url:
|
||||||
|
url: "{{ item.file }}"
|
||||||
|
dest: "{{ magnum_image_path }}/{{ item.file | basename }}"
|
||||||
|
checksum: "{{ item.checksum | default(omit) }}"
|
||||||
|
register: download_image
|
||||||
|
until: download_image is success
|
||||||
|
retries: 5
|
||||||
|
delay: 10
|
||||||
|
with_items: "{{ magnum_glance_images }}"
|
||||||
|
|
||||||
|
- name: Upload images to Glance
|
||||||
|
os_image:
|
||||||
|
cloud: "{{ item.cloud | default('default') }}"
|
||||||
|
state: "{{ item.state | default('present') }}"
|
||||||
|
interface: "{{ item.interface | default('admin') }}"
|
||||||
|
validate_certs: "{{ not keystone_service_adminuri_insecure }}"
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
disk_format: "{{ item.disk_format }}"
|
||||||
|
container_format: "{{ item.image_format }}"
|
||||||
|
is_public: "{{ item.public }}"
|
||||||
|
filename: "{{ magnum_image_path }}/{{ item.file | basename }}"
|
||||||
|
properties:
|
||||||
|
os_distro: "{{ item.distro }}"
|
||||||
|
register: upload_image
|
||||||
|
until: upload_image is success
|
||||||
|
retries: 5
|
||||||
|
delay: 10
|
||||||
|
with_items: "{{ magnum_glance_images }}"
|
||||||
|
|
||||||
|
- name: Create flavors for Magnum
|
||||||
|
os_nova_flavor:
|
||||||
|
cloud: "{{ item.cloud | default('default') }}"
|
||||||
|
state: "{{ item.state | default('present') }}"
|
||||||
|
is_public: "{{ item.is_public | default(omit) }}"
|
||||||
|
interface: "{{ item.interface | default('admin') }}"
|
||||||
|
validate_certs: "{{ not keystone_service_adminuri_insecure }}"
|
||||||
|
region_name: "{{ item.region_name | default(magnum_service_region) }}"
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
ram: "{{ item.ram }}"
|
||||||
|
vcpus: "{{ item.vcpus }}"
|
||||||
|
disk: "{{ item.disk | default(0) }}"
|
||||||
|
swap: "{{ item.swap | default(0) }}"
|
||||||
|
ephemeral: "{{ item.ephemeral | default(omit) }}"
|
||||||
|
extra_specs: "{{ item.extra_specs | default(omit) }}"
|
||||||
|
flavorid: "{{ item.flavorid | default(omit) }}"
|
||||||
|
rxtx_factor: "{{ item.rxtx_factor | default(omit) }}"
|
||||||
|
with_items: "{{ magnum_flavors }}"
|
||||||
|
|
||||||
|
- name: Create Magnum cluster templates
|
||||||
|
os_coe_cluster_template:
|
||||||
|
cloud: "{{ item.cloud | default('default') }}"
|
||||||
|
state: "{{ item.state | default('present') }}"
|
||||||
|
interface: "{{ item.interface | default('admin') }}"
|
||||||
|
validate_certs: "{{ not keystone_service_adminuri_insecure }}"
|
||||||
|
region_name: "{{ item.region_name | default(magnum_service_region) }}"
|
||||||
|
coe: "{{ item.coe }}"
|
||||||
|
dns_nameserver: "{{ item.dns_nameserver | default(omit) }}"
|
||||||
|
docker_storage_driver: "{{ item.docker_storage_driver | default(omit) }}"
|
||||||
|
docker_volume_size: "{{ item.docker_volume_size | default(omit) }}"
|
||||||
|
external_network_id: "{{ item.external_network_id | default(omit) }}"
|
||||||
|
fixed_network: "{{ item.fixed_network | default(omit) }}"
|
||||||
|
fixed_subnet: "{{ item.fixed_subnet | default(omit) }}"
|
||||||
|
flavor_id: "{{ item.flavor_id }}"
|
||||||
|
floating_ip_enabled: "{{ item.floating_ip_enabled | default(omit) }}"
|
||||||
|
image_id: "{{ item.image_id }}"
|
||||||
|
keypair_id: "{{ item.keypair_id | default(omit) }}"
|
||||||
|
labels: "{{ item.labels | default(omit) }}"
|
||||||
|
master_flavor_id: "{{ item.master_flavor_id }}"
|
||||||
|
master_lb_enabled: "{{ item.master_lb_enabled | default(omit) }}"
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
network_driver: "{{ item.network_driver }}"
|
||||||
|
public: "{{ item.public | default(omit) }}"
|
||||||
|
registry_enabled: "{{ item.registry_enabled | default(omit) }}"
|
||||||
|
server_type: "{{ item.server_type | default(omit) }}"
|
||||||
|
volume_driver: "{{ item.volume_driver | default(omit) }}"
|
||||||
|
with_items: "{{ magnum_cluster_templates }}"
|
|
@ -123,3 +123,8 @@
|
||||||
|
|
||||||
- name: Flush handlers
|
- name: Flush handlers
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
|
|
||||||
|
- import_tasks: magnum_resources.yml
|
||||||
|
when: inventory_hostname == groups['magnum_all'][0]
|
||||||
|
tags:
|
||||||
|
- magnum-config
|
||||||
|
|
Loading…
Reference in New Issue