--- # This playbook is used to add a new OSD to # an existing cluster without the need for running # the ceph-container-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: - mons - osds gather_facts: False vars: delegate_facts_host: True pre_tasks: - name: gather facts setup: when: - not delegate_facts_host | bool - name: gather and delegate facts setup: delegate_to: "{{ item }}" delegate_facts: True with_items: - "{{ groups['mons'] }}" - "{{ groups['osds'] }}" run_once: True when: - delegate_facts_host | bool tasks: - import_role: name: ceph-defaults - import_role: name: ceph-facts - import_role: name: ceph-validate - hosts: osds gather_facts: False become: True pre_tasks: # 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 - name: set noup flag command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd set noup" delegate_to: "{{ groups['mons'][0] }}" run_once: True changed_when: False tasks: - import_role: name: ceph-defaults - import_role: name: ceph-facts - import_role: name: ceph-handler - import_role: name: ceph-infra - import_role: name: ceph-container-common when: containerized_deployment | bool - import_role: name: ceph-common when: not containerized_deployment | bool - import_role: name: ceph-config - import_role: name: ceph-osd post_tasks: - name: unset noup flag command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd unset noup" delegate_to: "{{ groups['mons'][0] }}" run_once: True changed_when: False