---
title: 安装ceph-ansible
description: "本文档中，ceph-ansible的安装路径在“/home”路径下。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengsdss/ecosystemEnable/Ceph/kunpengcephansible_04_0004.html
sourcePath: /source/zh/kunpengsdss/ecosystemEnable/Ceph/kunpengcephansible_04_0004.html
indexId: e685cce1a3f5b3ac1ae6b1d2c59f86e159e9d7e1c821a0555cf275c4db0c859975
---
# 安装ceph-ansible

本文档中，ceph-ansible的安装路径在“/home”路径下。


#### 安装ceph-ansible

支持在线和离线两种安装方式，都仅需在ceph1上进行操作。

方法一：在线方式安装

1. 安装Ansible。

  - CentOS 7.6
    1 yum -y install ansible

  - openEuler 20.03
    1 pip3 install ansible==2.9

2. 安装ceph-ansible。

  a. 确保环境上安装了git，可通过以下方式安装。
    1 yum -y install git

  b. 配置“http.sslVerify”参数为“false”，跳过系统证书。
    1 git config --global http.sslVerify false

  c. 下载ceph-ansible。
    1 git clone -b stable-4.0 https://github.com/ceph/ceph-ansible.git --recursive


方法二：离线方式安装

1. 安装Ansible。

  - CentOS 7.6
    1 yum -y install ansible

  - openEuler 20.03
    1 pip3 install ansible

2. 解压ceph-ansible。
  1 unzip /home/ceph-ansible-stable-4.0.zip


#### 安装ceph-ansible依赖

支持在线和离线两种安装方式，都仅需在ceph1上进行操作。

方法一：在线方式安装

1. 安装python3-pip。
  1 yum install -y python3-pip

2. 创建并进入“ceph-ansible”目录。
  1 2 mkdir /home/ceph-ansible/ cd /home/ceph-ansible/

3. 检查并安装需要的软件版本。
  1 pip3 install -r requirements.txt


方法二：离线方式安装

1. 安装python3-pip。
  1 yum install -y python3-pip

2. 创建并进入“ceph-ansibl”e目录。
  1 2 mkdir /home/ceph-ansible/ cd /home/ceph-ansible/

3. 安装需要的依赖包。
  1 yum install -y python-netaddr

4. 检查并安装需要的软件版本。
  1 pip3 install -r requirements.txt


#### 解决环境依赖问题

1. 解决rpm_key依赖问题。

  a. 进入redhat_community_repository.yml。
    1 vim /home/ceph-ansible/roles/ceph-common/tasks/installs/redhat_community_repository.yml

  b. 注释如下代码。
2. 解决grafana依赖问题。

  a. 进入configure_grafana.yml。
    1 vim /home/ceph-ansible/roles/ceph-grafana/tasks/configure_grafana.yml

  b. 注释如下代码。


#### 创建服务节点配置列表

在ceph-ansible目录内新建hosts文件。

```
vi /home/ceph-ansible/hosts
```

并添加如下内容：


该操作用于定义集群中的主机，以及每个主机在Ceph集群中扮演的角色。可根据整个集群的需要在集群节点上部署相应的应用。

各参数意义如表1所示。


**表1 参数列表**

| 参数 | 说明 |
| --- | --- |
| [mons] | 作为Monitor节点 |
| [mgrs] | 作为MGR节点 |
| [osds] | 作为 OSD 节点，具体OSD配置在osds.yml文件中配置 |
| [mdss] | 作为MDS节点，文件存储中需要指定 |
| [rgws] | 作为 RGW 节点，对象存储中需要指定 |
| [clients] | 作为客户端节点 |
| [grafana\-server] | 一般需要保留该参数，不然会报缺少的错误 |


#### 修改ceph-ansible配置文件

在Ansible部署时，必须传递相应的playbook给ansible-playbook命令。需要修改相应的playbook名称，然后修改对应的内容，使之满足集群部署的要求。

使用ceph-ansible提供的Ansible变量用来设置Ceph集群的配置。

所有选项及默认配置放在“group_vars”目录下，每种Ceph进程对应相关的配置文件。

```
cd /home/ceph-ansible/group_vars/
cp mons.yml.sample mons.yml
cp mgrs.yml.sample mgrs.yml
cp mdss.yml.sample mdss.yml
cp rgws.yml.sample rgws.yml
cp osds.yml.sample osds.yml
cp clients.yml.sample clients.yml
cp all.yml.sample all.yml
```

all.yml.sample是应用于集群所有主机的特殊配置文件。


#### 添加ceph.conf配置参数

“all.yml”文件中，“ceph_conf_overrides”变量可用于覆盖ceph.conf中已配置的选项，或是增加新选项。

进入“all.yml”文件，修改“ceph_conf_overrides”这个参数。

```
vim all.yml
```

添加如下内容：```
ceph_conf_overrides: 
  global:
    osd_pool_default_pg_num: 64
    osd_pool_default_pgp_num: 64
    osd_pool_default_size: 2
mon_max_pg_per_osd: 3000
mon:
  mon_allow_pool_create: true
```


#### 定义OSD

osds.yml支持两种方式设置OSD（object storage device）盘、WAL（write ahead log）盘和DB（data base）盘。

方法一：ceph-volume lvm batch方式

修改groups_vars路径下的osds.yml文件，根据需要指定“devices”，“dedicated_devices”和“bluestore_wal_devices”中的设备：


- devices表示系统中的数据盘，可以与osds_per_device选项结合，设置每个磁盘上创建的OSD数量。
- dedicated_devices即block.db。
- bluestore_wal_devices即block.wal。
- dedicated_devices和bluestore_wal_devices的磁盘不能为相同磁盘。
- dedicated_devices和bluestore_wal_devices可以包含一个或多个磁盘。
- 系统会根据devices中的磁盘数量，以及osds_per_device，将dedicated_devices和bluestore_wal_devices下的磁盘进行均分。

单个OSD的block.db大于等于50GB，否则可能会以为block.db过小而安装报错。


方法二：ceph-volume，从逻辑卷中创建osd

修改groups_vars路径下的osds.yml文件，根据需要指定lvm_volumes属性下的所有OSD设备，包含几种不同的组合场景：

- 只指定数据盘。
- 指定数据盘+WAL。
- 指定数据盘+WAL+DB。
- 指定数据盘+DB。
使用此模式时需要事先在所有集群节点上创建对应的逻辑卷：

  1. 创建对应的vg。
    1 /usr/sbin/vgcreate --yes -s 1G ceph-data /dev/sdd

    创建名称为ceph-data的vg，-s指定创建逻辑卷的基本单位。

  2. 基于vg创建lv。
    1 /usr/sbin/lvcreate -l 300 -n osd-data2 ceph-data

    在ceph-data上创建名称为osd-data2的大小为300G的lv。

  3. 确认lv创建情况。
    1 lvs

    1 2 3 4 5 6 7 8 9 10 11 [root@ceph1 ceph-ansible-stable-4.0.bak]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home centos -wi-ao---- 839.05g root centos -wi-ao---- 50.00g swap centos -wi-a----- 4.00g osd-data1 ceph-data -wi-ao---- 300.00g osd-data2 ceph-data -wi-ao---- 300.00g osd-db1 ceph-db -wi-ao---- 100.00g osd-db2 ceph-db -wi-ao---- 100.00g osd-wal1 ceph-wal -wi-ao---- 50.00g osd-wal2 ceph-wal -wi-ao---- 50.00g


以下为创建两个OSD，每个OSD都包含DB和WAL盘的场景：


#### 关闭chrony

关闭chrony的操作仅需在openEuler操作系统下进行，CentOS操作系统请跳过此部分内容。


1. 进入“roles/ceph-infra/tasks/setup_ntp.yml”。
  1 vim /home/ceph-ansible/roles/ceph-infra/tasks/setup_ntp.yml

2. 注释chrony相关内容。
