Установите необходимые пакеты и копию ключа SSH

# apt update; apt -y install python3-pip
# git clone https://github.com/ceph/ceph-ansible.git; cd ceph-ansible/
# pip3 install -r requirements.txt
 
# ssh-keygen -N "" -f /root/.ssh/id_rsa
# ssh-copy-id 10.99.70.30
# ssh-copy-id 10.99.70.31
# ssh-copy-id 10.99.70.32

настройка inventory

root@yjwang0-ceph-01:~/ceph-ansible# cat inventory.ini
[mons]
yjwang0-ceph-01 ansible_host="10.99.70.30"
yjwang0-ceph-02 ansible_host="10.99.70.31"
yjwang0-ceph-03 ansible_host="10.99.70.32"
 
[osds:children]
mons
 
[mgrs:children]
mons
 
[monitoring:children]
mons
 
[clients:children]
mons
 
[mdss:children]
mons

Скопируйте файл group_vars

root@yjwang0-ceph-01:~/ceph-ansible# mv group_vars/all.yml.sample group_vars/all.yml
root@yjwang0-ceph-01:~/ceph-ansible# mv group_vars/osds.yml.sample group_vars/osds.yml

Изменить group_vars (разверните как образ Docker)

cluster_network: сеть кластера ceph, используется для репликацию OSD и т. д.

public_network: используется для клиентов и монитора, публичная сеть

root@yjwang0-ceph-01:~/ceph-ansible# grep -vE '^#^$' group_vars/all.yml
---
 
dummy:
cluster: ceph
ntp_service_enabled: true
ntp_daemon_type: chronyd
 
monitor_interface: ens3
public_network: "10.99.70.0/24"
cluster_network: "10.99.99.0/24"
ip_version: ipv4
 
containerized_deployment: true
ceph_docker_image: "ceph/daemon"
ceph_docker_image_tag: latest-master
ceph_docker_registry: docker.io
ceph_docker_registry_auth: false
ceph_client_docker_image: "{{ ceph_docker_image }}"
ceph_client_docker_image_tag: "{{ ceph_docker_image_tag }}"
ceph_client_docker_registry: "{{ ceph_docker_registry }}"
 
dashboard_enabled: True
dashboard_protocol: https
dashboard_port: 8443
dashboard_admin_user: admin
dashboard_admin_user_ro: false
dashboard_admin_password: p@ssw0rd
grafana_admin_user: admin
grafana_admin_password: admin

Изменить group_vars [Минимальный интерфейс]

Master branch содержит ветку quincy. Если вы хотите продолжить работу с pacific, проверьте тег и измените дистрибутив с помощью команды # git tag -f v6.0.11, прежде чем продолжить.

# grep -vE '^#^$' group_vars/all.yml
---
dummy:
cluster: ceph
ntp_service_enabled: true
ceph_origin: repository
ceph_repository: community
ceph_mirror: https://download.ceph.com
ceph_stable_key: https://download.ceph.com/keys/release.asc
ceph_stable_release: quincy
ceph_stable_repo: "{{ ceph_mirror }}/debian-pacific"
monitor_interface: ens2
public_network: 10.99.99.0/24
dashboard_enabled: False

Измените osds group_vars

root@yjwang0-ceph-01:~/ceph-ansible# grep -vE '^#^$' group_vars/osds.yml
---
dummy:
copy_admin_key: true
devices:
  - /dev/vda

Запустите Ansible Playbooks

root@yjwang0-ceph-01:~/ceph-ansible# ansible-playbook -i inventory.ini site-container.yml.sample

Когда всё закончится, будет создан кластер с 3 OSD.

root@yjwang0-ceph-01:~/ceph-ansible# docker exec ceph-mon-yjwang0-ceph-01 ceph -s
  cluster:
    id:     590e311e-f12f-4d3e-ac01-89a8e039dae3
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum yjwang0-ceph-01,yjwang0-ceph-02,yjwang0-ceph-03 (age 18m)
    mgr: yjwang0-ceph-02(active, since 8m), standbys: yjwang0-ceph-03, yjwang0-ceph-01
    osd: 3 osds: 3 up (since 13m), 3 in (since 14m)
 
  data:
    pools:   1 pools, 128 pgs
    objects: 0 objects, 0 B
    usage:   19 MiB used, 28 GiB / 28 GiB avail
    pgs:     128 active+clean