kolla-ansible/roles/cephadm/tasks/main.yml

88 lines
2.1 KiB
YAML

---
- include_tasks: pkg_{{ ansible_os_family | lower }}.yml
- name: Ensure /etc/ceph exists
file:
path: /etc/ceph
state: directory
become: True
- name: Generate ssh key for cephadm
openssh_keypair:
path: "/etc/ceph/cephadm.id"
size: 4096
comment: "cephadm"
become: True
register: cephadm_ssh_key
- name: Save public key
copy:
content: "{{ cephadm_ssh_key.public_key }}"
dest: /etc/ceph/cephadm.pub
become: True
- name: Copy cephadm public key to all hosts
authorized_key:
user: root
state: present
key: "{{ cephadm_ssh_key.public_key }}"
become: True
with_inventory_hostnames:
- all
delegate_to: "{{ item }}"
- name: Bootstrap cephadm
vars:
mon_ip: "{{ hostvars[inventory_hostname]['ansible_' + api_interface_name].ipv4.address }}"
command:
cmd: >
cephadm
--docker
bootstrap
--ssh-private-key=/etc/ceph/cephadm.id
--ssh-public-key=/etc/ceph/cephadm.pub
--skip-monitoring-stack
--skip-dashboard
--skip-firewalld
--log-to-file
--mon-ip {{ mon_ip }}
become: True
register: cephadm_bootstrap_output
- name: Get ceph fsid
vars:
regexp: 'Cluster fsid: (.*)'
set_fact:
ceph_fsid: "{{ cephadm_bootstrap_output.stdout | regex_search(regexp, '\\1') | first }}"
- name: Template out cluster spec
template:
src: templates/cephadm.yml.j2
dest: "/var/run/ceph/{{ ceph_fsid }}/cluster.yml"
become: True
- name: Template out command spec
template:
src: templates/commands.sh.j2
dest: "/var/run/ceph/{{ ceph_fsid }}/commands.sh"
become: True
- name: Run commands
command:
cmd: >
cephadm shell --
bash -x /var/run/ceph/commands.sh
become: True
# TODO(mnasiadka): Fix merge_configs to support tabs
- name: Generate ceph.conf without tabs
vars:
ceph_conf_fixed: |
[global]
fsid = {{ ceph_fsid }}
mon_host = {% for host in groups['all'] %} {{ hostvars[host]['ansible_' + api_interface_name].ipv4.address }} {% if not loop.last %},{% endif %} {% endfor %}
copy:
content: "{{ ceph_conf_fixed }}"
dest: "/etc/ceph/ceph.conf.fixed"
become: True