OpenStack-Ansible Ceph client

This Ansible role installs the Ceph operating system packages used to interact with a Ceph cluster.

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

Default variables

# Set the package install state for distribution packages
# Options are 'present' and 'latest'
ceph_client_package_state: "{{ package_state | default('latest') }}"

# to use Ceph in OSA, you need to
# - have the needed pools and a client user (for glance, cinder and/or nova)
#   pre-provisioned in your ceph cluster; OSA assumes to have root access to
#   the monitor hosts
# - configure / overrules following defaults in osa's user config
# - some ceph specific vars are (also) part of other role defaults:
#   * glance
#   * nova
# - cinder gets configured with ceph if there are cinder backends defined with
#   the rbd driver (see openstack_user_config.yml.example)

# The ceph_pkg_source variable controls the install source for the Ceph packages.
# Valid values include:
#   * ceph This option installs Ceph from a ceph.com repo.  Additional variables to
#          adjust items such as Ceph release and regional download mirror can be found
#          in vars/*.yml
#
#   * distro This options installs Ceph from the operating system's default repository and
#            unlike the other options does not attempt to manage package keys or add additional
#            package repositories.
ceph_pkg_source: ceph
ceph_stable_release: reef
ceph_apt_pinned_packages: [{package: "*", release: "ceph.com", priority: 1001}]

ceph_repo_url_region: "download"  # see here for other mirros http://docs.ceph.com/docs/master/install/mirrors/
ceph_repo_url: https://{{ ceph_repo_url_region }}.ceph.com/{{ _ceph_repo_distro_suffix }}-{{ ceph_stable_release }}
ceph_repos: "{{ _ceph_repos }}"

# Mappings from Ansible reported architecture to distro release architecture
ceph_architecture_mapping:
  x86_64: amd64
  ppc64le: ppc64el
  s390x: s390x
  armv7l: armhf
  aarch64: arm64

# Ceph Authentication
cephx: true

# Ceph Monitors
# A list of the IP addresses for your Ceph monitors
ceph_mons: []

# Name of ceph cluster that we interact with.
# It would affect config file name and commands issued to the cluster.
ceph_cluster_name: ceph

# Path to local ceph.conf file
# Leave this commented to obtain a ceph.conf from one of the monitors defined in ceph_mons
# ceph_conf_file: |
#   [global]
#   fsid = 4037aa5f-abde-4378-9470-f73dbd6ceaba
#   mon_initial_members = mon1.example.local,mon2.example.local,mon3.example.local
#   mon_host = 10.16.5.40,10.16.5.41,10.16.5.42
#   auth_cluster_required = cephx
#   auth_service_required = cephx
#   auth_client_required = cephx

# Path to local keyrings directory
# If you want to provide keyrings from existing files, because you do not have ssh access to the monitors
# set the path to the repository containing the keyrings files.
# ie : ceph_keyrings_dir: /etc/openstack_deploy/ceph-conf
# The filenames inside the keyring directory must be in the structure of client-name.keyring
# ie: /etc/openstack_deploy/ceph-conf
# cinder.keyring
# glance.keyring
# etc..
# ceph_keyrings_dir: "/etc/openstack/ceph-keyrings"

# Ceph client usernames for glance, cinder+nova, gnocchi and object cache
glance_ceph_client: glance
cinder_ceph_client: cinder
manila_ceph_client: manila
cinder_backup_ceph_client: cinder-backup
gnocchi_ceph_client: gnocchi
immutable_object_cache_client: immutable-object-cache

# by default we assume you use rbd for both cinder and nova, and as libvirt
# needs to access both volumes (cinder) as boot disks (nova) we default to
# reuse the cinder_ceph_client
# only need to change this if you'd use ceph for boot disks and not for volumes
nova_ceph_client: '{{ cinder_ceph_client }}'

# overruled in user_secrets:
# nova_ceph_client_uuid:

cephkeys_access_group: ceph

openstack_service_system_user: null

ceph_cinder_service_names:
  - cinder-volume
  - cinder-backup

ceph_nova_service_names:
  - nova-compute

ceph_manila_service_names:
  - manila-api
  - manila-data
  - manila-share

ceph_glance_service_names:
  - glance-api

ceph_gnocchi_service_names:
  - gnocchi-api
  - gnocchi-metricd

ceph_extra_auth_groups: "{{ ceph_extra_config_groups }}"
ceph_extra_config_groups:
  - cinder_backup
  - cinder_volume
ceph_extra_compute_group: nova_compute

ceph_client_ceph_conf_overrides: "{{ ceph_conf_overrides | default({}) }}"

# CentOS repos
ceph_centos_epel_mirror: "{{ centos_epel_mirror | default('http://download.fedoraproject.org/pub/epel') }}"
ceph_centos_epel_key: >-
  {{ centos_epel_key | default('http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-' ~ ansible_facts['distribution_major_version']) }}

# Immutible object cache - caches a read-only base layer of rbd volumes
ceph_immutable_object_cache_enabled: False
ceph_immutable_object_cache_service_name: "ceph-immutable-object-cache@"
ceph_immutable_object_cache_dir: "/ceph-immutable-object-cache"
ceph_immutable_object_cache_socket: "/run/ceph/immutable_object_cache_sock"
ceph_immutable_object_cache_umask: "0002"
ceph_immutable_object_cache_owner: "ceph"
ceph_immutable_object_cache_group: "libvirt-qemu"
ceph_immutable_object_cache_mode: "0775"
ceph_immutable_object_cache_key_owner: "{{ ceph_immutable_object_cache_owner }}"
ceph_immutable_object_cache_key_group: "{{ ceph_immutable_object_cache_group }}"

ceph_persistent_write_log_cache_enabled: False
ceph_persistent_write_log_cache_dir: "/rbd-write-log-cache"
ceph_persistent_write_log_cache_owner: "libvirt-qemu"
ceph_persistent_write_log_cache_group: "ceph"
ceph_persistent_write_log_cache_mode: "0775"

Required variables

None.

Dependencies

None.

Example playbook

- name: Install Ceph client
  hosts: all
  user: root
  roles:
    - role: "ceph_client"