测试场景¶
场景是描述 Ceph 部署和配置的不同环境。场景也是隔离的,并且除了任何 ceph-ansible 配置之外,还定义了所需的机器。
场景文件¶
场景在 vagrant_variables.yml 文件中描述,当启动环境时,Vagrant 会使用该文件。
此 yaml 文件加载到 Vagrantfile 中,以便这些设置可用于启动 box 并在运行时将一些配置传递给 ansible。
注意
场景的基本布局在 布局和惯例 中有所介绍。只需要少数几个必需文件,这是最基本的布局。
只需要少数几个必需文件,这些部分将介绍必需(最基本)的文件。或者,可以添加其他 ceph-ansible 文件来自定义场景部署的行为。
vagrant_variables.yml¶
vagrant_variables.yml 文件中有几个易于理解的部分(大部分是单行设置)。
docker: (bool) 指示场景是否将部署 Docker 守护程序
VMS: (int) 这些整数值只是所需机器数量的计数。列出了每种支持的类型,默认为 0
mon_vms: 0 osd_vms: 0 mds_vms: 0 rgw_vms: 0 nfs_vms: 0 rbd_mirror_vms: 0 client_vms: 0 mgr_vms: 0
对于需要 1 个 MON 和 1 个 OSD 的部署,列表如下所示
mon_vms: 1 osd_vms: 1
CEPH SOURCE: (string) 指示需要
dev版本还是stable版本。stable版本将使用 Ceph 的最新稳定版本,dev将使用shaman(http://shaman.ceph.com)SUBNETS: 这些用于配置将要启动的每个服务器的网络可用性,以及用作
ceph-ansible(最终是 Ceph)的配置。 必需 的两个值public_subnet: 192.168.13 cluster_subnet: 192.168.14
MEMORY: 每个服务器的内存要求(以兆字节为单位),例如
memory: 512interfaces: 一些 vagrant box(和 linux 发行版)设置了特定的接口。对于早于 Xenial 的 Ubuntu 版本,通常有
eth1,对于 CentOS 和一些 Xenial box,使用enp0s8。 但是 公共 Vagrant box 将所有 box 的接口标准化为eth1,从而更容易在以后使用 Ansible 配置它们。
警告
除非绝对确定 box 需要,否则不要将接口从 eth1 更改。某些依赖该命名方式的测试将会失败。
disks: 将为每台机器创建的磁盘,对于大多数环境,
/dev/sd*风格的磁盘将起作用,例如:[ '/dev/sda', '/dev/sdb' ]vagrant_box: 我们发布了自己的 box 来规范我们测试的内容。这些 box 发布在 Atlas (https://atlas.hashicorp.com/ceph/) 中。当前有效的值是:
ceph/ubuntu-xenial和ceph/centos7
以下内容通常不会更改/启用用于测试,因为它们没有影响,但在此处记录下来以供一般了解,以防需要
ssh_private_key_path: 用于连接到这些 box 的
id_rsa(或其他私有 SSH 密钥)的路径。vagrant_sync_dir: 应该从主机“同步”(在新服务器上可用)的内容。
vagrant_disable_synced_folder: (bool) 禁用后,它会使启动机器更快,因为不需要同步文件。
os_tuning_params: 这些作为“系统调优”的变量传递给
ceph-ansible。这些不应更改。
Vagrantfile¶
Vagrantfile 不应需要更改,并且它被软链接回项目根目录中存在的 Vagrantfile。它以这种方式链接,以便 vagrant 环境可以隔离到给定的场景。
hosts¶
hosts 文件应包含场景所需的主机。这看起来有点重复,因为机器已经在 vagrant_variables.yml 中定义了,但它允许对主机进行细粒度更改(例如,在监视器之间定义不同的 public_network 值),这有助于捕获 ceph-ansible 配置中的问题。例如
[mons]
mon0 public_network=192.168.1.0/24
mon1 public_network=192.168.2.0/24
mon2 public_network=192.168.3.0/24
group_vars¶
此目录包含将影响 ceph-ansible 部署的任何配置更改,就像从项目根目录执行 ansible 一样。
始终需要定义的文件是 all,其中(再次)需要定义某些值,例如 public_network 和 cluster_network,以及 ceph-ansible 支持的任何自定义项。
场景连接¶
场景只是为了提供用于测试的 Ceph 环境,但它们确实需要定义在 tox.ini 中,以便它们可用于测试框架。要查看可用场景列表,以下命令(从项目根目录运行)将列出它们,为简洁起见进行了缩短
$ tox -l
...
luminous-ansible2.4-centos7_cluster
...
这些场景由不同的变量组成,在上面的命令中有 3 个
jewel: 要测试的 Ceph 版本ansible2.4: 要安装的 Ansible 版本centos7_cluster: 场景名称
最后一个在场景的连接中很重要。它是一个变量,将定义场景所在的路径。例如, centos7_cluster 的 changedir 部分如下所示
centos7_cluster: {toxinidir}/tests/functional/centos/7/cluster
实际测试是针对特定守护程序类型、所有守护程序类型和特定用例(例如 journal 搭配)编写的,它们也有自己的惯例,在 惯例 和 测试文件 中有详细解释。
只要测试场景定义了 OSD 和 MON,OSD 测试和 MON 测试就会运行。