ceph-ansible¶
用于分布式文件系统 Ceph 的 Ansible Playbook。
安装¶
GitHub¶
您可以按照以下步骤直接从 GitHub 上的源代码安装
克隆存储库
$ git clone https://github.com/ceph/ceph-ansible.git
接下来,您必须决定要使用
ceph-ansible的哪个分支。可以选择稳定的分支,也可以使用主分支$ git checkout $branch
接下来,使用 pip 和提供的 requirements.txt 来安装 Ansible 和其他所需的 Python 库
$ pip install -r requirements.txt
RHEL 和 CentOS 上的 Ansible¶
您可以通过从 Ansible channel 安装来获取 RHEL 和 CentOS 上的 Ansible。
在 RHEL 上
$ subscription-manager repos --enable=rhel-7-server-ansible-2-rpms
(CentOS 不使用 subscription-manager 并且默认已启用“Extras”。)
$ sudo yum install ansible
Ubuntu 上的 Ansible¶
您可以通过使用 Ansible PPA 来获取 Ubuntu 上的 Ansible。
$ sudo add-apt-repository ppa:ansible/ansible
$ sudo apt update
$ sudo apt install ansible
Ansible 集合¶
为了安装 ceph-ansible 所需的第三方集合,请运行
$ ansible-galaxy install -r requirements.yml
版本发布¶
应根据您的要求使用以下分支。 stable-* 分支经过 QE 测试,并且在整个生命周期中可能会收到反向移植修复。 main 分支应被视为实验性分支,请谨慎使用。
stable-3.0支持 Ceph 版本jewel和luminous。此分支需要 Ansible 版本2.4。stable-3.1支持 Ceph 版本luminous和mimic。此分支需要 Ansible 版本2.4。stable-3.2支持 Ceph 版本luminous和mimic。此分支需要 Ansible 版本2.6。stable-4.0支持 Ceph 版本nautilus。此分支需要 Ansible 版本2.9。stable-5.0支持 Ceph 版本octopus。此分支需要 Ansible 版本2.9。stable-6.0支持 Ceph 版本pacific。此分支需要 Ansible 版本2.10。stable-7.0支持 Ceph 版本quincy。此分支需要 Ansible 版本2.15。main支持 Ceph 的 main (devel) 分支。此分支需要 Ansible 版本2.15或2.16。
注意
stable-3.0 和 stable-3.1 分支的 ceph-ansible 已弃用且不再维护。
配置和使用¶
本项目假设您对 Ansible 的工作原理有基本了解,并且已经为 Ansible 配置准备好了主机。
克隆 ceph-ansible 存储库、选择了分支并安装了 Ansible 之后,您需要为 Ceph 集群创建清单文件、playbook 和配置。
清单¶
Ansible 清单文件定义了集群中的主机以及每个主机在 Ceph 集群中扮演的角色。清单文件的默认位置是 /etc/ansible/hosts,但此文件可以放置在任何位置,并通过 ansible-playbook 的 -i 标志使用。
一个示例清单文件如下所示
[mons]
mon1
mon2
mon3
[osds]
osd1
osd2
osd3
注意
有关 Ansible 清单的更多信息,请参阅 Ansible 文档:https://docs.ansible.org.cn/ansible/latest/intro_inventory.html
Playbook¶
在部署集群时,必须有一个 playbook 传递给 ansible-playbook 命令。 ceph-ansible 项目的根目录下有一个名为 site.yml.sample 的示例 playbook。此 playbook 对于大多数用途来说都应该没问题,但它默认包含所有守护程序组,这可能不适合您的集群设置。执行以下步骤来准备您的 playbook
重命名示例 playbook:
mv site.yml.sample site.yml根据集群要求修改 playbook
注意
您使用的 playbook 必须放置在 ceph-ansible 项目的根目录下。这样 Ansible 才能找到 ceph-ansible 提供的角色。
配置验证¶
ceph-ansible 项目通过 ceph-validate 角色提供配置验证。如果您使用提供的 playbook 之一,此角色将在部署早期运行,以确保您为 ceph-ansible 提供了正确的配置。此检查仅确保您为集群提供了适当的配置设置,而不是确保其中的值会产生一个健康的集群。例如,如果您提供了错误的 monitor_address 地址,那么 mon 仍然无法加入集群。
验证失败的示例可能如下所示
TASK [ceph-validate : validate provided configuration] *************************
task path: /Users/andrewschoen/dev/ceph-ansible/roles/ceph-validate/tasks/main.yml:3
Wednesday 02 May 2018 13:48:16 -0500 (0:00:06.984) 0:00:18.803 *********
[ERROR]: [mon0] Validation failed for variable: osd_objectstore
[ERROR]: [mon0] Given value for osd_objectstore: foo
[ERROR]: [mon0] Reason: osd_objectstore must be either 'bluestore' or 'filestore'
fatal: [mon0]: FAILED! => {
"changed": false
}
支持的验证¶
ceph-validate 角色目前支持验证以下 osd 场景的正确配置
collocated(并置)non-collocated(非并置)lvm
以下安装选项也由 ceph-validate 角色验证
ceph_origin设置为distroceph_origin设置为repositoryceph_origin设置为localceph_repository设置为devceph_repository设置为community
安装方法¶
Ceph 可以通过多种方式安装。
配置¶
Ceph 集群的配置将通过使用 ceph-ansible 提供的 ansible 变量来设置。所有这些选项及其默认值都在 ceph-ansible 项目根目录下的 group_vars/ 目录中定义。Ansible 将使用相对于清单文件或 playbook 的 group_vars/ 目录中的配置。在 group_vars/ 目录中,有许多示例 Ansible 配置文件,它们通过文件名与每个 Ceph 守护程序组相关联。例如,osds.yml.sample 包含 OSD 守护程序的所有默认配置。 all.yml.sample 文件是一个特殊的 group_vars 文件,适用于集群中的所有主机。
注意
有关设置组或主机特定配置的更多信息,请参阅 Ansible 文档:https://docs.ansible.org.cn/ansible/latest/intro_inventory.html#splitting-out-host-and-group-specific-data
在最基本的层面上,您必须告诉 ceph-ansible 您希望安装的 Ceph 版本、安装方法、集群的网络设置以及您希望如何配置 OSD。要开始配置,请重命名 group_vars/ 中您希望使用的每个文件,使其末尾不包含 .sample,取消注释您希望更改的选项并提供自己的值。
一个部署上游 octopus 版本 Ceph 并使用 lvm 批处理方法的示例配置在 group_vars/all.yml 中如下所示
ceph_origin: repository
ceph_repository: community
public_network: "192.168.3.0/24"
cluster_network: "192.168.4.0/24"
devices:
- '/dev/sda'
- '/dev/sdb'
所有安装都需要更改以下配置选项,但根据您选择的 OSD 场景或集群的其他方面,可能还需要其他选项。
ceph_originpublic_network
部署 RGW 实例时,需要设置 radosgw_interface 或 radosgw_address 配置选项。
ceph.conf 配置文件¶
定义 ceph.conf 的受支持方法是使用 ceph_conf_overrides 变量。这允许您使用 INI 格式指定配置选项。此变量可用于覆盖 ceph.conf 中已定义的节(参见:roles/ceph-config/templates/ceph.conf.j2)或提供新的配置选项。
ceph.conf 中支持以下节
[global][mon][osd][mds][client.rgw.{instance_name}]
一个例子
ceph_conf_overrides:
global:
foo: 1234
bar: 5678
osd:
osd_mkfs_type: ext4
注意
除非有助于部署,否则我们不再接受修改 ceph.conf 模板的拉取请求。对于简单的配置调整,请使用 ceph_conf_overrides 变量。
配置每种 Ceph 守护程序类型的完整文档在以下部分中。
OSD 配置¶
OSD 配置过去是通过选择 OSD 场景并提供该场景所需的配置来设置的。从 stable-4.0 中的 nautilus 开始,唯一可用的场景是 lvm。
Day-2 操作¶
ceph-ansible 在 infrastructure-playbooks 目录中提供了一组 playbook,用于执行一些基本的 Day-2 操作。
RBD 镜像¶
Ceph-ansible 提供了角色 ceph-rbd-mirror,可以设置 RBD 镜像复制。
贡献¶
有关如何为 ceph-ansible 贡献的指南,请参阅以下部分。
测试¶
有关为 ceph-ansible 编写功能测试场景的文档。
演示¶
Vagrant 演示¶
在 vagrant 机器上从头部署:https://youtu.be/E8-96NamLDo
裸机演示¶
在裸机上从头部署:https://youtu.be/dv_PEp9qAqg