Module - ceph_spec_bootstrap¶
This module provides for the following ansible plugin:
ceph_spec_bootstrap
Module Documentation¶
The ceph_spec_bootstrap module uses information from both the composed services in TripleO roles and the deployed hosts file ('openstack overcloud node provision' output), or just the inventory file (tripleo-ansible-inventory output) to determine what Ceph services should run on what hosts and generate a valid Ceph spec. This allows the desired end state defined in TripleO to be translated into an end state defined in Ceph orchestrator. The intention is to use this module when bootstraping a new Ceph cluster.
Options¶
- deployed_metalsmith
The absolute path to a file like deployed_metal.yaml, as genereated by 'openstack overcloud node provision --output deployed_metal.yaml'. This file is used to map which ceph_service_types map to which deployed hosts. Use this option if you have deployed servers with metalsmith but do not yet have an inventory genereated from the overcloud in Heat. Either tripleo_ansible_inventory xor deployed_metalsmith must be used (not both) unless the method option is used.
- tripleo_ansible_inventory
The absolute path to an Ansible inventory genereated by running the tripleo-ansible-inventory command. This file is used to map which ceph_service_types map to which deployed hosts. Use this option if you already have an inventory genereated from the overcloud in Heat. Either tripleo_ansible_inventory xor deployed_metalsmith must be used (not both) unless the method option is used.
- new_ceph_spec
The absolute path to a new file which will be created by the module and contain the resultant Ceph specification. If not provided, defaults to /home/stack/ceph_spec.yaml.
- ceph_service_types
List of Ceph services being deployed on overcloud. All service names must be a valid service_type as described in the Ceph Orchestrator CLI service spec documentation. If not provided, defaults to ['mon', 'mgr', 'osd'], which are presently the only supported service types this module supports.
- tripleo_roles
The absolute path to the TripleO roles file. Only necessary if deployed_metalsmith is used. If not provided then defaults to /usr/share/openstack-tripleo-heat-templates/roles_data.yaml. This file is used to map which ceph_service_types map to which roles. E.g. all roles with OS::TripleO::Services::CephOSD will get the Ceph service_type 'osd'. This paramter is ignored if tripleo_ansible_inventory is used.
- osd_spec
A valid osd service specification. If not passed defaults to using all available data devices (data_devices all true).
- fqdn
When true, the "hostname" and "hosts" in the generated Ceph spec will have their fully qualified domain name. This paramter defaults to false and only has an effect when tripleo_ansible_inventory is used.
- crush_hierarchy
The crush hierarchy, expressed as a dict, maps the relevant OSD nodes to a user defined crush hierarchy.
- standalone
Create a spec file for a standalone deployment. Used for single server development or testing environments.
- tld
Top Level Domain suffix to be added to the short hostname to represent the fully qualified domain name.
- mon_ip
The desired IP address of the first Ceph monitor. Required when standalone is true, otherwise ignored.
- method
Whether the deployed_metalsmith file or tripleo_ansible_inventory file should be used to build the spec if both of these parameters are passed. When "both" is used the roles, services and hosts are determined from deployed_metalsmith and tripleo_roles parameters but the IPs come from the tripleo_ansible_inventory parameter.
Authors¶
John Fulton (fultonj)
Example Tasks¶
- name: make spec from 'openstack overcloud node provision' output
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
deployed_metalsmith: ~/overcloud-baremetal-deployed.yaml
- name: make spec from tripleo-ansible-inventory output
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
tripleo_ansible_inventory: ~/config-download/overcloud/tripleo-ansible-inventory.yaml
- name: make spec from deployed_metalsmith; use inventory not DeployedSeverPortMap
for IPs
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
tripleo_ansible_inventory: ~/config-download/overcloud/tripleo-ansible-inventory.yaml
deployed_metalsmith: ~/overcloud-baremetal-deployed.yaml
method: both
- name: make spec from inventory with FQDNs and custom osd_spec
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
tripleo_ansible_inventory: ~/config-download/overcloud/tripleo-ansible-inventory.yaml
crush_hierarchy:
ceph_osd-0:
rack: r1
ceph_osd-1:
rack: r1
ceph_osd-2:
rack: r1
fqdn: true
osd_spec:
data_devices:
paths:
- /dev/ceph_vg/ceph_lv_data
- name: make spec with only Ceph mons and managers
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
deployed_metalsmith: ~/overcloud-baremetal-deployed.yaml
ceph_service_types:
- mon
- mgr
- name: make spec with composed roles/ HDDs for data/ SSDs for db
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
deployed_metalsmith: ~/overcloud-baremetal-deployed.yaml
tripleo_roles: ~/templates/custom_roles_data.yaml
osd_spec:
data_devices:
rotational: 1
db_devices:
rotational: 0
- name: Create Ceph spec for standalone deployment
ceph_spec_bootstrap:
new_ceph_spec: '{{ playbook_dir }}/ceph_spec.yaml'
mon_ip: '{{ tripleo_cephadm_first_mon_ip }}'
standalone: true