c922d458df
Change-Id: If9b40079d42cdabfd14d27603357dd0aa027a49b
92 lines
2.2 KiB
YAML
92 lines
2.2 KiB
YAML
---
|
|
- include_tasks: pkg_{{ ansible_os_family | lower }}.yml
|
|
|
|
- name: Install cephadm
|
|
package:
|
|
name: cephadm
|
|
state: present
|
|
become: True
|
|
|
|
- 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 bootstrap
|
|
--ssh-private-key=/etc/ceph/cephadm.id
|
|
--ssh-public-key=/etc/ceph/cephadm.pub
|
|
--skip-monitoring-stack
|
|
--skip-dashboard
|
|
--skip-firewalld
|
|
--mon-ip={{ mon_ip }}
|
|
--mon-addrv='[v2:{{ mon_ip }}:3300,v1:{{ mon_ip }}:6789]'
|
|
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 /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
|