Skip to content
Snippets Groups Projects
  • Mark Goddard's avatar
    832989d0
    nova: use any_errors_fatal for once-per-cell tasks · 832989d0
    Mark Goddard authored
    We run some nova tasks once per cell, using a condition to match a
    single host in the cell. In other similar tasks, we use run_once, which
    will fail all hosts if the task fails. Typically these tasks are
    critical, and that is desirable. However, with the approach used in
    nova-cell to support multiple cells, if a once-per-cell task fails, then
    other hosts will continue to execute, which could lead to unexpected
    results.
    
    This change adds any_errors_fatal to the plays or blocks that run these
    tasks.
    
    Closes-Bug: #1948694
    
    Change-Id: I2a5871ccd4e8198171ef3239ce95f475f3e4b051
    832989d0
    History
    nova: use any_errors_fatal for once-per-cell tasks
    Mark Goddard authored
    We run some nova tasks once per cell, using a condition to match a
    single host in the cell. In other similar tasks, we use run_once, which
    will fail all hosts if the task fails. Typically these tasks are
    critical, and that is desirable. However, with the approach used in
    nova-cell to support multiple cells, if a once-per-cell task fails, then
    other hosts will continue to execute, which could lead to unexpected
    results.
    
    This change adds any_errors_fatal to the plays or blocks that run these
    tasks.
    
    Closes-Bug: #1948694
    
    Change-Id: I2a5871ccd4e8198171ef3239ce95f475f3e4b051
nova.yml 6.87 KiB
---
# This playbook is for nova services. Due to support for deployment of cells,
# nova is separated into two roles - nova and nova-cell. This makes it more
# complicated than other services, as we may execute each role several times
# for a given operation.
#
# The nova role now deploys the global services:
#
# * nova-api
# * nova-scheduler
# * nova-super-conductor (if enable_cells is true)
#
# The nova-cell role handles services specific to a cell:
#
# * nova-compute
# * nova-compute-ironic
# * nova-conductor
# * nova-libvirt
# * nova-novncproxy
# * nova-serialproxy
# * nova-spicehtml5proxy
# * nova-ssh

# We need to perform database bootstrapping before deploying or upgrading any
# containers, to ensure all database schema migrations have been performed,
# both in the API and cell databases. Note that this should not be disruptive
# to the Nova services, which will continue to run against the new schema.

- name: Bootstrap nova API databases
  gather_facts: false
  hosts:
    - nova-api
    - '&enable_nova_True'
  tags:
    - nova
    - nova-bootstrap
    - nova-api
    - nova-api-bootstrap
  serial: '{{ kolla_serial|default("0") }}'
  tasks:
    # * Create nova API & cell0 DBs & users
    # * API DB schema migrations
    # * Map cell0
    # * Cell0 DB schema migrations
    - name: Bootstrap deploy
      include_role:
        name: nova
        tasks_from: bootstrap
      when:
        - enable_nova | bool
        - kolla_action in ['deploy', 'reconfigure']

    # * API DB schema migrations
    # * Cell0 DB schema migrations
    - name: Bootstrap upgrade
      include_role:
        name: nova
        tasks_from: bootstrap_upgrade
      when:
        - enable_nova | bool
        - kolla_action == 'upgrade'

- name: Bootstrap nova cell databases
  gather_facts: false
  hosts:
    - nova-conductor
    - '&enable_nova_True'
  tags:
    - nova
    - nova-bootstrap