Merge "Use dictionary for service group mappings"

This commit is contained in:
Jenkins 2016-09-30 19:48:09 +00:00 committed by Gerrit Code Review
commit 2bb50693c9
10 changed files with 96 additions and 189 deletions

View File

@ -189,7 +189,6 @@ nova_service_adminuri: "{{ nova_service_adminuri_proto }}://{{ internal_lb_vip_a
nova_service_adminurl: "{{ nova_service_adminuri }}/v2.1/%(tenant_id)s" nova_service_adminurl: "{{ nova_service_adminuri }}/v2.1/%(tenant_id)s"
nova_service_internaluri: "{{ nova_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ nova_service_port }}" nova_service_internaluri: "{{ nova_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ nova_service_port }}"
nova_service_internalurl: "{{ nova_service_internaluri }}/v2.1/%(tenant_id)s" nova_service_internalurl: "{{ nova_service_internaluri }}/v2.1/%(tenant_id)s"
nova_program_name: nova-api-os-compute
## Nova cinder ## Nova cinder
nova_cross_az_attach: True nova_cross_az_attach: True
@ -201,7 +200,6 @@ nova_spice_html5proxy_base_uri: "{{ nova_spice_html5proxy_base_proto }}://{{ ext
nova_spice_html5proxy_base_url: "{{ nova_spice_html5proxy_base_uri }}/spice_auto.html" nova_spice_html5proxy_base_url: "{{ nova_spice_html5proxy_base_uri }}/spice_auto.html"
nova_spice_console_keymap: en-us nova_spice_console_keymap: en-us
nova_spice_console_agent_enabled: True nova_spice_console_agent_enabled: True
nova_spice_program_name: nova-spicehtml5proxy
nova_spicehtml5_git_repo: https://github.com/SPICE/spice-html5 nova_spicehtml5_git_repo: https://github.com/SPICE/spice-html5
nova_spicehtml5_git_install_branch: master nova_spicehtml5_git_install_branch: master
@ -213,7 +211,6 @@ nova_novncproxy_base_url: "{{ nova_novncproxy_base_uri }}/vnc_auto.html"
nova_novncproxy_vncserver_proxyclient_address: "{{ ansible_host }}" nova_novncproxy_vncserver_proxyclient_address: "{{ ansible_host }}"
nova_novncproxy_vncserver_listen: "{{ ansible_host }}" nova_novncproxy_vncserver_listen: "{{ ansible_host }}"
nova_novncproxy_agent_enabled: True nova_novncproxy_agent_enabled: True
nova_novncproxy_program_name: nova-novncproxy
nova_novncproxy_git_repo: https://github.com/kanaka/novnc nova_novncproxy_git_repo: https://github.com/kanaka/novnc
nova_novncproxy_git_install_branch: master nova_novncproxy_git_install_branch: master
nova_novncproxy_vnc_keymap: en-us nova_novncproxy_vnc_keymap: en-us
@ -222,14 +219,9 @@ nova_novncproxy_vnc_keymap: en-us
nova_metadata_proxy_enabled: "{{ nova_network_services[nova_network_type]['metadata_proxy_enabled'] | bool }}" nova_metadata_proxy_enabled: "{{ nova_network_services[nova_network_type]['metadata_proxy_enabled'] | bool }}"
nova_metadata_host: "{{ internal_lb_vip_address }}" nova_metadata_host: "{{ internal_lb_vip_address }}"
nova_metadata_port: 8775 nova_metadata_port: 8775
nova_metadata_program_name: nova-api-metadata
## Nova cert
nova_cert_program_name: nova-cert
## Nova compute ## Nova compute
nova_enable_instance_password: True nova_enable_instance_password: True
nova_compute_program_name: nova-compute
nova_force_config_drive: False nova_force_config_drive: False
@ -242,12 +234,8 @@ nova_libvirt_inject_password: False
nova_libvirt_disk_cachemodes: '{{ nova_libvirt_images_rbd_pool is defined | ternary("network=writeback", "") }}' nova_libvirt_disk_cachemodes: '{{ nova_libvirt_images_rbd_pool is defined | ternary("network=writeback", "") }}'
nova_libvirt_hw_disk_discard: '{{ nova_libvirt_images_rbd_pool is defined | ternary("unmap", "ignore") }}' nova_libvirt_hw_disk_discard: '{{ nova_libvirt_images_rbd_pool is defined | ternary("unmap", "ignore") }}'
## Nova conductor
nova_conductor_program_name: nova-conductor
## Nova console ## Nova console
nova_console_agent_enabled: True nova_console_agent_enabled: True
nova_consoleauth_program_name: nova-consoleauth
nova_console_keymap: en-us nova_console_keymap: en-us
# Set the console type. Presently the only options are ["spice", "novnc"]. # Set the console type. Presently the only options are ["spice", "novnc"].
nova_console_type: spice nova_console_type: spice
@ -325,7 +313,6 @@ nova_scheduler_default_filters: "RetryFilter,AvailabilityZoneFilter,RamFilter,Co
nova_scheduler_driver: filter_scheduler nova_scheduler_driver: filter_scheduler
nova_scheduler_available_filters: nova.scheduler.filters.all_filters nova_scheduler_available_filters: nova.scheduler.filters.all_filters
nova_scheduler_weight_classes: nova.scheduler.weights.all_weighers nova_scheduler_weight_classes: nova.scheduler.weights.all_weighers
nova_scheduler_program_name: nova-scheduler
# If you want to regenerate the nova users SSH keys, on each run, set this var to True # If you want to regenerate the nova users SSH keys, on each run, set this var to True
# Otherwise keys will be generated on the first run and not regenerated each run. # Otherwise keys will be generated on the first run and not regenerated each run.
@ -372,17 +359,38 @@ nova_libvirtd_listen_tcp: 0
nova_libvirtd_auth_tcp: sasl nova_libvirtd_auth_tcp: sasl
nova_libvirtd_debug_log_filters: "3:remote 4:event 3:json 3:rpc" nova_libvirtd_debug_log_filters: "3:remote 4:event 3:json 3:rpc"
## Service Names ## Service Name-Group Mapping
nova_service_names: nova_services:
- "{{ nova_metadata_program_name }}" nova-api-metadata:
- "{{ nova_cert_program_name }}" group: nova_api_metadata
- "{{ nova_conductor_program_name }}" service_name: nova-api-metadata
- "{{ nova_program_name }}" nova-api-os-compute:
- "{{ nova_scheduler_program_name }}" group: nova_api_os_compute
- "{{ nova_compute_program_name }}" service_name: nova-api-os-compute
- "{{ nova_spice_program_name }}" nova-cert:
- "{{ nova_consoleauth_program_name }}" group: nova_cert
- "{{ nova_novncproxy_program_name }}" service_name: nova-cert
nova-compute:
group: nova_compute
service_name: nova-compute
nova-conductor:
group: nova_conductor
service_name: nova-conductor
nova-consoleauth:
group: nova_console
service_name: nova-consoleauth
nova-novncproxy:
group: nova_console
service_name: nova-novncproxy
condition: "{{ nova_console_type == 'novnc' }}"
nova-scheduler:
group: nova_scheduler
service_name: nova-scheduler
nova-spicehtml5proxy:
group: nova_console
service_name: nova-spicehtml5proxy
condition: "{{ nova_console_type == 'spice' }}"
nova_novnc_pip_packages: nova_novnc_pip_packages:
- websockify - websockify

View File

@ -1,5 +1,5 @@
--- ---
# Copyright 2014, Rackspace US, Inc. # Copyright 2015, Rackspace US, Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -19,10 +19,23 @@
state: "restarted" state: "restarted"
pattern: "libvirt-bin" pattern: "libvirt-bin"
- name: Reload systemd daemon
command: "systemctl daemon-reload"
notify:
- Restart nova services
- name: Reload upstart init scripts
shell: |
initctl reload-configuration
notify:
- Restart nova services
- name: Restart nova services - name: Restart nova services
service: service:
name: "{{ item }}" name: "{{ item.value.service_name }}"
state: restarted state: "restarted"
pattern: "{{ item }}" pattern: "{{ item.value.service_name }}"
with_items: "{{ nova_service_names }}" with_dict: "{{ nova_services }}"
failed_when: false when:
- inventory_hostname in groups[item.value.group]
- "{{ item.value.condition | default(true) }}"

View File

@ -54,7 +54,7 @@
- include: nova_pre_install.yml - include: nova_pre_install.yml
- include: nova_install.yml - include: nova_install.yml
- include: nova_post_install.yml - include: nova_post_install.yml
- include: nova_init.yml - include: nova_init_common.yml
- include: nova_db_setup.yml - include: nova_db_setup.yml
when: inventory_hostname == groups['nova_api_os_compute'][0] when: inventory_hostname == groups['nova_api_os_compute'][0]

View File

@ -1,101 +0,0 @@
---
# Copyright 2014, Rackspace US, 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.
- include: nova_init_common.yml
vars:
program_name: "{{ nova_metadata_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_api_metadata']
- include: nova_init_common.yml
vars:
program_name: "{{ nova_cert_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_cert']
- include: nova_init_common.yml
vars:
program_name: "{{ nova_conductor_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_conductor']
- include: nova_init_common.yml
vars:
program_name: "{{ nova_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_api_os_compute']
- include: nova_init_common.yml
vars:
program_name: "{{ nova_scheduler_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_scheduler']
- include: nova_init_common.yml
vars:
program_name: "{{ nova_compute_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_compute']
# Upstart init script for spice console.
- include: nova_init_common.yml
vars:
program_name: "{{ nova_spice_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when:
- inventory_hostname in groups ['nova_console']
- nova_console_type == "spice"
# Upstart init script for novnc console.
- include: nova_init_common.yml
vars:
program_name: "{{ nova_novncproxy_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when:
- inventory_hostname in groups ['nova_console']
- nova_console_type == "novnc"
- include: nova_init_common.yml
vars:
program_name: "{{ nova_consoleauth_program_name }}"
service_name: "{{ nova_service_name }}"
system_user: "{{ nova_system_user_name }}"
system_group: "{{ nova_system_group_name }}"
service_home: "{{ nova_system_home_folder }}"
when: inventory_hostname in groups['nova_console']

View File

@ -5,7 +5,7 @@
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # http://www.apache.org/licenses/LICENSE-2.0
# #
# Unless required by applicable law or agreed to in writing, software # Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, # distributed under the License is distributed on an "AS IS" BASIS,
@ -14,24 +14,16 @@
# limitations under the License. # limitations under the License.
- include: nova_init_upstart.yml - include: nova_init_upstart.yml
static: no
when: pid1_name == "init" when: pid1_name == "init"
tags:
- upstart-init
- nova-init
- include: nova_init_systemd.yml - include: nova_init_systemd.yml
static: no
when: pid1_name == "systemd" when: pid1_name == "systemd"
tags:
- systemd-init
- nova-init
- name: Load service - name: Load service
service: service:
name: "{{ program_name }}" name: "{{ item.value.service_name }}"
enabled: "yes" enabled: "yes"
with_dict: "{{ nova_services }}"
when: inventory_hostname in groups[item.value.group]
notify: notify:
- Restart nova services - Restart nova services
tags:
- nova-init

View File

@ -15,19 +15,23 @@
- name: Create TEMP run dir - name: Create TEMP run dir
file: file:
path: "/var/run/{{ program_name }}" path: "/var/run/{{ item.value.service_name }}"
state: directory state: directory
owner: "{{ system_user }}" owner: "{{ nova_system_user_name }}"
group: "{{ system_group }}" group: "{{ nova_system_group_name }}"
mode: "02755" mode: "02755"
with_dict: "{{ nova_services }}"
when: inventory_hostname in groups[item.value.group]
- name: Create TEMP lock dir - name: Create TEMP lock dir
file: file:
path: "/var/lock/{{ program_name }}" path: "/var/lock/{{ item.value.service_name }}"
state: directory state: directory
owner: "{{ system_user }}" owner: "{{ nova_system_user_name }}"
group: "{{ system_group }}" group: "{{ nova_system_group_name }}"
mode: "02755" mode: "02755"
with_dict: "{{ nova_services }}"
when: inventory_hostname in groups[item.value.group]
- name: Create tempfile.d entry - name: Create tempfile.d entry
template: template:
@ -36,18 +40,17 @@
mode: "0644" mode: "0644"
owner: "root" owner: "root"
group: "root" group: "root"
with_dict: "{{ nova_services }}"
when: inventory_hostname in groups[item.value.group]
- name: Place the systemd init script - name: Place the systemd init script
template: template:
src: "nova-systemd-init.j2" src: "nova-systemd-init.j2"
dest: "/etc/systemd/system/{{ program_name }}.service" dest: "/etc/systemd/system/{{ item.value.service_name }}.service"
mode: "0644" mode: "0644"
owner: "root" owner: "root"
group: "root" group: "root"
register: systemd_init with_dict: "{{ nova_services }}"
when: inventory_hostname in groups[item.value.group]
- name: Reload the systemd daemon
command: "systemctl daemon-reload"
when: systemd_init | changed
notify: notify:
- Restart nova services - Reload systemd daemon

View File

@ -1,5 +1,5 @@
--- ---
# Copyright 2014, Rackspace US, Inc. # Copyright 2015, Rackspace US, Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -16,21 +16,11 @@
- name: Place the init script - name: Place the init script
template: template:
src: "nova-upstart-init.j2" src: "nova-upstart-init.j2"
dest: "/etc/init/{{ program_name }}.conf" dest: "/etc/init/{{ item.value.service_name }}.conf"
mode: "0644" mode: "0644"
owner: "root" owner: "root"
group: "root" group: "root"
with_dict: "{{ nova_services }}"
when: inventory_hostname in groups[item.value.group]
notify: notify:
- Restart nova services - Reload upstart init scripts
tags:
- upstart-init
- nova-init
- name: Reload init scripts
shell: |
initctl reload-configuration
notify:
- Restart nova services
tags:
- upstart-init
- nova-init

View File

@ -7,13 +7,13 @@ After=network.target
[Service] [Service]
Type=simple Type=simple
User={{ system_user }} User={{ nova_system_user_name }}
Group={{ system_group }} Group={{ nova_system_group_name }}
{% if program_override is defined %} {% if program_override is defined %}
ExecStart={{ program_override }} {{ program_config_options|default('') }} --log-file=/var/log/nova/{{ program_name }}.log ExecStart={{ program_override }} {{ program_config_options|default('') }} --log-file=/var/log/nova/{{ item.value.service_name }}.log
{% else %} {% else %}
ExecStart={{ nova_bin }}/{{ program_name }} {{ program_config_options|default('') }} --log-file=/var/log/nova/{{ program_name }}.log ExecStart={{ nova_bin }}/{{ item.value.service_name }} {{ program_config_options|default('') }} --log-file=/var/log/nova/{{ item.value.service_name }}.log
{% endif %} {% endif %}
# Give a reasonable amount of time for the server to start up/shut down # Give a reasonable amount of time for the server to start up/shut down

View File

@ -1,4 +1,4 @@
# {{ ansible_managed }} # {{ ansible_managed }}
D /var/lock/{{ program_name }} 2755 {{ system_user }} {{ system_group }} D /var/lock/{{ item.value.service_name }} 2755 {{ nova_system_user_name }} {{ nova_system_group_name }}
D /var/run/{{ program_name }} 2755 {{ system_user }} {{ system_group }} D /var/run/{{ item.value.service_name }} 2755 {{ nova_system_user_name }} {{ nova_system_group_name }}

View File

@ -1,6 +1,7 @@
# {{ ansible_managed }} # {{ ansible_managed }}
description "{{ program_name }}"
description "{{ item.value.service_name }}"
author "Kevin Carter <kevin.carter@rackspace.com>" author "Kevin Carter <kevin.carter@rackspace.com>"
start on runlevel [2345] start on runlevel [2345]
@ -10,18 +11,18 @@ respawn
respawn limit 10 5 respawn limit 10 5
# Set the RUNBIN environment variable # Set the RUNBIN environment variable
env RUNBIN="{{ nova_bin }}/{{ program_name }}" env RUNBIN="{{ nova_bin }}/{{ item.value.service_name }}"
# Change directory to service users home # Change directory to service users home
chdir "{{ service_home }}" chdir "{{ nova_system_home_folder }}"
# Pre start actions # Pre start actions
pre-start script pre-start script
mkdir -p "/var/run/{{ program_name }}" mkdir -p "/var/run/{{ item.value.service_name }}"
chown {{ system_user }}:{{ system_group }} "/var/run/{{ program_name }}" chown {{ nova_system_user_name }}:{{ nova_system_group_name }} "/var/run/{{ item.value.service_name }}"
mkdir -p "/var/lock/{{ program_name }}" mkdir -p "/var/lock/{{ item.value.service_name }}"
chown {{ system_user }}:{{ system_group }} "/var/lock/{{ program_name }}" chown {{ nova_system_user_name }}:{{ nova_system_group_name }} "/var/lock/{{ item.value.service_name }}"
. {{ nova_bin }}/activate . {{ nova_bin }}/activate
@ -29,14 +30,15 @@ end script
# Post stop actions # Post stop actions
post-stop script post-stop script
rm "/var/run/{{ program_name }}/{{ program_name }}.pid" rm "/var/run/{{ item.value.service_name }}/{{ item.value.service_name }}.pid"
end script end script
# Run the start up job # Run the start up job
exec start-stop-daemon --start \ exec start-stop-daemon --start \
--chuid {{ system_user }} \ --chuid {{ nova_system_user_name }} \
--make-pidfile \ --make-pidfile \
--pidfile /var/run/{{ program_name }}/{{ program_name }}.pid \ --pidfile /var/run/{{ item.value.service_name }}/{{ item.value.service_name }}.pid \
--exec "{{ program_override|default('$RUNBIN') }}" \ --exec "{{ program_override|default('$RUNBIN') }}" \
-- {{ program_config_options|default('') }} \ -- {{ program_config_options|default('') }} \
--log-file=/var/log/nova/{{ program_name }}.log --log-file=/var/log/{{ nova_service_name }}/{{ item.value.service_name }}.log