OpenStack-Ansible Magnum

OpenStack-Ansible Magnum

Ansible role that installs and configures OpenStack Magnum. Magnum is installed behind the Apache webserver listening on port 9511 by default.

To clone or view the source code for this repository, visit the role repository for os_magnum.

Default variables

## Verbosity Options
debug: False

# Set the package install state for distribution and pip packages
# Options are 'present' and 'latest'
magnum_package_state: "latest"
magnum_pip_package_state: "latest"

magnum_system_group_name: magnum
magnum_system_user_name: magnum
magnum_system_user_comment: Magnum System User
magnum_system_user_shell: /bin/false
magnum_system_user_home: "/var/lib/{{ magnum_system_user_name }}"
magnum_log_directory: /var/log/magnum
magnum_etc_directory: /etc/magnum

magnum_api_program_name: magnum-api
magnum_conductor_program_name: magnum-conductor

magnum_service_name: magnum
magnum_service_user_name: magnum
magnum_service_type: container-infra
magnum_service_description: "OpenStack Containers (Magnum)"
magnum_service_project_name: service
  - admin
magnum_service_region: RegionOne
magnum_barbican_service_region: "{{ magnum_service_region }}"
magnum_cinder_service_region: "{{ magnum_service_region }}"
magnum_glance_service_region: "{{ magnum_service_region }}"
magnum_heat_service_region: "{{ magnum_service_region }}"
magnum_neutron_service_region: "{{ magnum_service_region }}"
magnum_nova_service_region: "{{ magnum_service_region }}"
magnum_bind_port: 9511
magnum_service_publicuri_proto: http
magnum_service_publicurl: "{{ magnum_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ magnum_bind_port }}"
magnum_service_internaluri_proto: http
magnum_service_internalurl: "{{ magnum_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ magnum_bind_port }}"
magnum_service_adminuri_proto: http
magnum_service_adminurl: "{{ magnum_service_adminuri_proto }}://{{ internal_lb_vip_address }}:{{ magnum_bind_port }}"

magnum_config_overrides: {}
magnum_policy_overrides: {}
magnum_api_paste_ini_overrides: {}

# Name of the virtual env to deploy into
magnum_venv_tag: untagged
magnum_bin: "/openstack/venvs/magnum-{{ magnum_venv_tag }}/bin"

# venv_download, even when true, will use the fallback method of building the
# venv from scratch if the venv download fails.
magnum_venv_download: "{{ not magnum_developer_mode | bool }}"

magnum_git_repo: ""
magnum_git_install_branch: "stable/queens"
magnum_developer_mode: false
  - "git+{{ magnum_git_repo }}@{{ magnum_git_install_branch }}#egg=magnum"

# Database vars
magnum_galera_database_name: magnum_service
magnum_galera_user: magnum
magnum_galera_use_ssl: "{{ galera_use_ssl | default(False) }}"
magnum_galera_ssl_ca_cert: "{{ galera_ssl_ca_cert | default('/etc/ssl/certs/galera-ca.pem') }}"

# Rabbit vars
magnum_rabbitmq_userid: magnum
magnum_rabbitmq_vhost: /magnum
magnum_rabbitmq_use_ssl: False
magnum_rabbitmq_port: 5672

# Keystone AuthToken/Middleware
magnum_keystone_auth_plugin: password
magnum_service_project_domain_name: Default
magnum_service_user_domain_name: default

# Trustee User
magnum_trustee_domain_admin_name: trustee_domain_admin
magnum_trustee_domain_name: magnum
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:
#    distro: fedora-atomic              #Value for the os_distro metadata
#    checksum: "sha1:dab00359cfa5cd393f0a6044f77c4a78c6167a47"

  - httplib2
  - python-glanceclient
  - python-keystoneclient
  - pyyaml
  - shade
  - virtualenv

  - PyMySQL
  - magnum
  - python-memcached
  - osprofiler

# This variable is used by the repo_build process to determine
# which host group to check for members of before building the
# pip packages required by this role. The value is picked up
# by the py_pkgs lookup.
magnum_role_project_group: magnum_all

# Store certificates in DB by default (x509keypair)
# Other valid values are: barbican, local
magnum_cert_manager_type: x509keypair

magnum_api_init_config_overrides: {}
magnum_conductor_init_config_overrides: {}


This role needs pip >= 7.1 installed on the target host.

To use this role, define the following variables:

# Magnum TCP listening port
magnum_service_port: 9511

# Magnum service protocol http or https
magnum_service_proto: http

# Magnum Galera address of internal load balancer
magnum_galera_address: "{{ internal_lb_vip_address }}"

# Magnum Galera database name
magnum_galera_database_name: magnum_service

# Magnum Galera username
magnum_galera_user: magnum

# Magnum rabbit userid
magnum_rabbitmq_userid: magnum

# Magnum rabbit vhost
magnum_rabbitmq_vhost: /magnum

This list is not exhaustive. See role internals for further details.

Wiring docker with cinder

If you need to use volumes, default_docker_volume_type should be set. By default, Magnum doesn’t need one.

To deploy Magnum with cinder integration, please set the following in your /etc/openstack_deploy/user_variables.yml:

    default_docker_volume_type: lvm

If you have defined cinder_default_volume_type for all your nodes, by defining it in your user_variables, you can re-use it directly:

    default_docker_volume_type: "{{ cinder_default_volume_type }}"

Example playbook

- name: Install Magnum server
  hosts: magnum_all
  user: root
    - { role: "os_magnum", tags: [ "os-magnum" ] }
    magnum_galera_address: "{{ internal_lb_vip_address }}"
    magnum_galera_database_name: magnum_service
    magnum_galera_user: magnum
    magnum_rabbitmq_userid: magnum
    magnum_rabbitmq_vhost: /magnum
    ansible_hostname: "{{ container_name }}"
    is_metal: "{{ properties.is_metal|default(false) }}"


This role supports two tags: magnum-install and magnum-config. The magnum-install tag can be used to install and upgrade. The magnum-config tag can be used to maintain configuration of the service.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.