ceph-ansible

Conteúdo da documentação

Abrir tabela de conteúdo

ceph-ansible

O Ansible é uma ferramenta open-source para automação de processos, como gerenciamento de configurações, instalação de aplicativos, orquestração intra-serviços e outros. Todo esse processamento é centralizado em um único nodo, no qual todas as instruções são executadas a partir de uma máquina de controle que se comunica com clientes remotos via SSH (outros protocolos também são suportados). As definições de quais instruções serão executadas são escritas em um arquivo YAML e podem ser extremamente granulares, afim de descrever e configurar um sistema como um todo.

Existe um repositório no GitHub, acessível através desse link, que utiliza o Ansible para realizar o deploy de um cluster Ceph. Para utilizá-lo para realizar o deploy do Ceph, o procedimento a ser realizado é:

1- Clonar o repositório para o host/VM que irá ser utilizado para realizar o deploy:
git clone https://github.com/ceph/ceph-ansible.git

2- Navegar até o repositório clonado e realizar o checkout para uma das tags compatíveis com o SO dos hosts que irão atuar como monitores do Ceph. Nessa documentação foi utilizada a versão v5.0.12:
cd ceph-ansible
git checkout v5.0.12

3- Instalar as dependências necessárias com o pip:
pip install -r requirements.txt

4- Na pasta group vars , que armazena exemplos de módulos a serem instalados e configurados, remover o sufixo .sample de todos os arquivos e, na raíz do projeto, realizar o mesmo procedimento no arquivo site.yml.sample;

5- Editar o arquivo group vars/all.yml , responsável pelas configurações globais do cluster, adicionando as configurações desejadas. Abaixo segue um exemplo de configuração aplicável:

ceph_origin: repository
ceph_repository: community
ceph_stable: true
cephx: true
monitor_interface:
public_network: rede/máscara
cluster_network: rede/máscara
radosgw_interface:
ceph_conf_overrides:
global:
osd pool default size: 3
osd pool default size: 2
osd pool default min size: 1
grafana_admin_user:
grafana_admin_password:
dashboard_admin_password:

6- Editar o arquivo group vars/osds.yml , que é o responsável por configurar os OSDs do cluster, de acordo com as configurações desejadas. Abaixo segue um exemplo de configuração aplicável:
devices:
- /dev/sdb
- /dev/sdc
- /dev/sdd
- /dev/sde
- /dev/sdf
- /dev/sdg
osd_auto_discovery: false
osds_per_device: 1

É recomendável alterar a configuração osd_auto_discovery para false, de forma a evitar que o Ceph considere o device onde está instalado o SO como um bloco disponível.

7- Na raíz do projeto, editar o arquivo inventory . Caso esse arquivo não exista, o mesmo deve ser criado. Tal arquivo é responsável por mapear os monitores, OSDs, clientes e MGRs existentes no cluster, além da ferramenta utilizada para comunicação entre os nodos e o usuário que executará os comandos nos hosts. Abaixo segue um exemplo de configuração aplicável:
[mons]
vm1 ansible_connection=ssh ansible_ssh_user=root
vm2 ansible_connection=ssh ansible_ssh_user=root
vm3 ansible_connection=ssh ansible_ssh_user=root
[osds]
dp1 ansible_connection=ssh ansible_ssh_user=root
dp2 ansible_connection=ssh ansible_ssh_user=root
dp3 ansible_connection=ssh ansible_ssh_user=root
dp4 ansible_connection=ssh ansible_ssh_user=root
dp5 ansible_connection=ssh ansible_ssh_user=root
[grafana-server]
vm1 ansible_connection=ssh ansible_ssh_user=root
[clients]
client-1 ansible_connection=ssh ansible_ssh_user=root
[mgrs]vm1 ansible_connection=ssh ansible_ssh_user=root
[rgws]
vm3 ansible_connection=ssh ansible_ssh_user=root

Onde o nome anterior a cada ansible_connection representa os IPs dos respectivos hosts na interface do cluster network . Dessa forma,é necessário alterar o arquivo /etc/hosts , mapeando cada um desses nomes.
Por exemplo:
192.168.122.230 dp1
192.168.122.231 dp2
192.168.122.232 dp3
192.168.122.233 dp4
192.168.122.234 dp5
192.168.122.240 vm1
192.168.122.241 vm2
192.168.122.242 vm3

8- Por fim, com todas as configurações realizadas, basta executar o playbook com o comando:
ansible-playbook -i inventory site.yml
Caso o procedimento finalize com sucesso, será exibida uma saída semelhante a da Figura 10.

 

Figura 10: Finalização do deploy do Ceph