--- # This playbook is used to add a new OSD to # an existing cluster without the need for running # the ceph-docker-common or ceph-common and ceph-mon role again against all # of the existing monitors. # # It can run from any machine. Even if the fetch directory is not present # it will be created. # # Ensure that all monitors are present in the mons # group in your inventory so that the ceph configuration file # is created correctly for the new OSD(s). # # It is expected to edit your inventory file to only point to the OSD hosts # you want to play the playbook on. So you need to comment already deployed OSD # and let uncommented the new OSDs. # - hosts: osds gather_facts: False become: True vars: delegate_facts_host: True pre_tasks: - name: gather facts setup: gather_subset: - 'all' - '!facter' - '!ohai' when: - not delegate_facts_host | bool - name: gather and delegate facts setup: gather_subset: - 'all' - '!facter' - '!ohai' delegate_to: "{{ item }}" delegate_facts: True with_items: "{{ groups['all'] | difference(groups.get('clients', [])) }}" run_once: True when: - delegate_facts_host | bool # this task is needed so we can skip the openstack_config.yml include in roles/ceph-osd - name: set_fact add_osd set_fact: add_osd: True roles: - role: ceph-defaults - role: ceph-facts - role: ceph-validate - role: ceph-handler - role: ceph-infra - role: ceph-docker-common when: containerized_deployment | bool - role: ceph-common when: not containerized_deployment | bool - role: ceph-config - role: ceph-osd