browbeat/ansible/browbeat/adjust-nova-allocation.yml

130 lines
4.8 KiB
YAML

---
#
# Playbook to adjust Nova allocation ratios
#
# Versions tested: Newton, Ocata, Pike
#
# Newton, Ocata apply changes to the Controllers as Pike applies changes to the Computes
#
# Examples:
# ansible-playbook -i hosts browbeat/adjust-nova-allocation.yml -e "cpu_allocation_ratio=100.0"
# ansible-playbook -i hosts browbeat/adjust-nova-allocation.yml -e "cpu_allocation_ratio=100.0 ram_allocation_ratio=100.0"
# ansible-playbook -i hosts browbeat/adjust-nova-allocation.yml -e "cpu_allocation_ratio=100.0 ram_allocation_ratio=100.0 disk_allocation_ratio=100.0"
#
# In order for new settings to take affect, you need to restart the Nova services
# by adding variable restart_nova=true into the extra vars.
#
# ansible-playbook -i hosts browbeat/adjust-nova-allocation.yml -e "cpu_allocation_ratio=100.0 ram_allocation_ratio=100.0 disk_allocation_ratio=100.0 restart_nova=true"
#
# * Note not setting a variable does not change that configuration item then. Setting no variables
# and running the playbook sets all configuration items to defaults (cpu/ram/disk - 16/1/1)
#
# ansible-playbook -i hosts browbeat/adjust-nova-allocation.yml
#
- hosts: controller,compute
remote_user: "{{ host_remote_user }}"
gather_facts: false
vars_files:
- ../install/group_vars/all.yml
vars:
restart_nova: false
# Create initial blank configuration list
nova_configuration: []
# Defaults
default_cpu_allocation_ratio: 16
default_ram_allocation_ratio: 1
default_disk_allocation_ratio: 1
# Each configuration item needs to be a list so it can be merged
cpu_allocation_ratio_item: []
ram_allocation_ratio_item: []
disk_allocation_ratio_item: []
pre_tasks:
- name: Get OSP Version
slurp:
src: "/etc/rhosp-release"
register: osp_version
become: true
- name: (Newton, Ocata) Set Config File based on OpenStack Version
set_fact:
nova_config_file: /etc/nova/nova.conf
when: "('Newton' in osp_version['content'] | b64decode or 'Ocata' in osp_version['content'] | b64decode)"
- name: (Pike, Queens) Set Config File based on OpenStack Version
set_fact:
nova_config_file: /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf
when: "('Pike' in osp_version['content'] | b64decode or 'Queens' in osp_version['content'] | b64decode)"
- name: Set default cpu_allocation_ratio/ram_allocation_ratio/disk_allocation_ratio configuration for Nova
set_fact:
nova_configuration:
- section: DEFAULT
option: cpu_allocation_ratio
value: "{{default_cpu_allocation_ratio}}"
- section: DEFAULT
option: ram_allocation_ratio
value: "{{default_ram_allocation_ratio}}"
- section: DEFAULT
option: disk_allocation_ratio
value: "{{default_disk_allocation_ratio}}"
when: cpu_allocation_ratio is undefined and ram_allocation_ratio is undefined and disk_allocation_ratio is undefined
- name: Set cpu_allocation_ratio configuration for Nova
set_fact:
cpu_allocation_ratio_item:
- section: DEFAULT
option: cpu_allocation_ratio
value: "{{cpu_allocation_ratio}}"
when: cpu_allocation_ratio is defined
- name: Set ram_allocation_ratio configuration for Nova
set_fact:
ram_allocation_ratio_item:
- section: DEFAULT
option: ram_allocation_ratio
value: "{{ram_allocation_ratio}}"
when: ram_allocation_ratio is defined
- name: Set disk_allocation_ratio configuration for Nova
set_fact:
disk_allocation_ratio_item:
- section: DEFAULT
option: disk_allocation_ratio
value: "{{disk_allocation_ratio}}"
when: disk_allocation_ratio is defined
- name: Merge configuration items
set_fact:
nova_configuration: "{{nova_configuration + cpu_allocation_ratio_item + ram_allocation_ratio_item + disk_allocation_ratio_item }}"
roles:
- nova-config
post_tasks:
- name: (Newton, Ocata) Restart Nova Services
become: true
service:
name: "{{ item }}"
state: restarted
with_items:
- openstack-nova-scheduler
- openstack-nova-api
- openstack-nova-conductor
- openstack-nova-novncproxy
- openstack-nova-consoleauth
- httpd
when:
- "'Newton' in osp_version['content'] | b64decode or 'Ocata' in osp_version['content'] | b64decode"
- "'controller' in group_names"
- restart_nova
- name: (Pike, Queens) Restart Nova Compute Container
become: true
command: docker restart nova_compute
when:
- "('Pike' in osp_version['content'] | b64decode or 'Queens' in osp_version['content'] | b64decode)"
- "'compute' in group_names"
- restart_nova