Implement bootstrapping for custom nova flavors

Previously nova just created default flavors. This patch adds ability to
specify custom flavors in ~/.ccp.yaml.

Also this patch renames job to more general format and moves all default
flavors to defaults.yaml config. Now Jinja loop was moved to service
definition yaml, which create one job per one flavor.

Bootstrapping is enabled by default.

Change-Id: I07daad9be8b4ccbc5a8e618351e8897af7d61672
This commit is contained in:
Sergey Kraynev 2016-12-27 10:27:04 +00:00
parent e0c2171e8a
commit 8394a82409
4 changed files with 64 additions and 31 deletions

View File

@ -1,25 +0,0 @@
#!/bin/bash
set -ex
export OS_IDENTITY_API_VERSION=3
export OS_INTERFACE="internal"
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PASSWORD={{ openstack.user_password }}
export OS_USERNAME={{ openstack.user_name }}
export OS_PROJECT_NAME={{ openstack.project_name }}
export OS_AUTH_URL="{{ address('keystone', keystone.admin_port, with_scheme=True) }}/v3"
function ensure_flavor {
openstack flavor show $1 || openstack --os-region-name=RegionOne \
flavor create --id $2 --ram $3 --disk $4 --vcpus $5 $1
}
# name id ram disk vcpus
ensure_flavor m1.test 0 128 1 1
ensure_flavor m1.tiny 1 512 1 1
ensure_flavor m1.small 2 2048 20 1
ensure_flavor m1.medium 3 4096 40 2
ensure_flavor m1.large 4 8192 80 4
ensure_flavor m1.xlarge 5 16384 160 8

View File

@ -0,0 +1,21 @@
#!/bin/bash
name=$1
id=$2
ram=$3
disk=$4
vcpus=$5
set -ex
export OS_IDENTITY_API_VERSION=3
export OS_INTERFACE="internal"
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PASSWORD={{ openstack.user_password }}
export OS_USERNAME={{ openstack.user_name }}
export OS_PROJECT_NAME={{ openstack.project_name }}
export OS_AUTH_URL="{{ address('keystone', keystone.admin_port, with_scheme=True) }}/v3"
openstack flavor show $name || openstack --os-region-name=RegionOne \
flavor create --id $id --ram $ram --disk $disk --vcpus $vcpus $name

View File

@ -176,6 +176,39 @@ configs:
ceph:
enable: false
pool_name: "vms"
bootstrap:
enable: true
flavors:
- name: m1.test
id: 0
ram: 128
disk: 1
vcpus: 1
- name: m1.tiny
id: 1
ram: 512
disk: 1
vcpus: 1
- name: m1.small
id: 2
ram: 2048
disk: 20
vcpus: 1
- name: m1.medium
id: 3
ram: 4096
disk: 40
vcpus: 2
- name: m1.large
id: 4
ram: 8192
disk: 80
vcpus: 4
- name: m1.xlarge
id: 5
ram: 16384
disk: 160
vcpus: 8
versions:
novnc_version: "0.6.1"

View File

@ -97,12 +97,16 @@ service:
command: nova-api --config-file /etc/nova/nova.conf
files:
- nova.conf
# {% if nova.bootstrap.enable %}
post:
- name: nova-create-default-flavors
# {% for flavor in nova.bootstrap.flavors %}
- name: nova-bootstrap-flavor-{{ flavor.id }}
type: single
command: /opt/ccp/bin/create-default-flavors.sh
command: /opt/ccp/bin/create-flavor.sh {{ flavor.name }} {{ flavor.id }} {{ flavor.ram }} {{ flavor.disk }} {{ flavor.vcpus }}
files:
- create-default-flavors.sh
- create-flavor.sh
# {% endfor %}
# {% endif %}
files:
nova.conf:
@ -110,7 +114,7 @@ files:
content: nova.conf.j2
perm: "0600"
create-default-flavors.sh:
path: /opt/ccp/bin/create-default-flavors.sh
content: create-default-flavors.sh.j2
create-flavor.sh:
path: /opt/ccp/bin/create-flavor.sh
content: create-flavor.sh.j2
perm: "0700"