diff --git a/defaults/main.yml b/defaults/main.yml index 8fa38ef..f47b781 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -127,15 +127,38 @@ magnum_trustee_domain_admin_roles: ['admin'] magnum_cluster_user_trust: True #Glance images -magnum_glance_images: [] ## Example Glance Image - Fedora Atomic # - name: fedora-atomic-latest #Name of the image in Glance # disk_format: qcow2 #Disk format (e.g. qcow2) # image_format: bare #Image format # 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 -# 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 # on the magnum_service_setup_host host. If the host is localhost, diff --git a/releasenotes/notes/magnum_resources-84e50dbaebac7d1c.yaml b/releasenotes/notes/magnum_resources-84e50dbaebac7d1c.yaml new file mode 100644 index 0000000..54899d0 --- /dev/null +++ b/releasenotes/notes/magnum_resources-84e50dbaebac7d1c.yaml @@ -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. \ No newline at end of file diff --git a/tasks/magnum_post_install.yml b/tasks/magnum_post_install.yml index 6de840b..480d9cb 100644 --- a/tasks/magnum_post_install.yml +++ b/tasks/magnum_post_install.yml @@ -38,46 +38,3 @@ notify: - Restart magnum 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 }}" diff --git a/tasks/magnum_resources.yml b/tasks/magnum_resources.yml new file mode 100644 index 0000000..26a00da --- /dev/null +++ b/tasks/magnum_resources.yml @@ -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 }}" diff --git a/tasks/main.yml b/tasks/main.yml index 23f6d3b..f28f997 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -123,3 +123,8 @@ - name: Flush handlers meta: flush_handlers + +- import_tasks: magnum_resources.yml + when: inventory_hostname == groups['magnum_all'][0] + tags: + - magnum-config