使用 ceph-ansible 指示多个集群

使用 ceph-ansible 指示多个集群

我现在正在学习 Ceph 课程(packtpub 的 ceph 学习路径)。课程还不错,但有很多错误,而且并不总是最准确的。课程要求您使用 ceph-ansible 来完成大部分工作。您首先要创建一个 3 节点集群。

因此,的起始值/etc/ansible/hosts为:

[mons]
ceph-node1
ceph-node2
ceph-node3
[osds]
ceph-node1
ceph-node2
ceph-node3
[clients]
client-node1

现在,当前部分让您创建第二个 3 节点集群作为远程备份。

为此,课程要求您将文件修改/etc/ansible/hosts为以下内容:

#Primary site (ceph-node1):
[mons]
ceph-node1
ceph-node2
ceph-node3
[osds]
ceph-node1
ceph-node2
ceph-node3
[clients]
client-node1

#Secondary site (ceph-node5):
[mons]
ceph-node5
ceph-node6
ceph-node7
[osds]
ceph-node5
ceph-node6
ceph-node7

ceph-ansible 的安装是通过 ceph-node5 完成的,使用不同的 all.yml 文件,表示不同的集群名称。我想了解的是,这将如何向 ceph-ansible 表明有两个独立的集群。如果 /etc/ansible/hosts 文件是 .ini 格式(ansible 主机文件也是这样),则任何以 # 开头的行都应解析为注释。

那么,ceph-node5 是否会看到节点 1、2、3 上的其他安装并将它们作为单独的集群忽略?毕竟,ceph-node5 有自己的all.yml指令,即主机应该是备份集群的一部分。它会尝试将 1、2、3 添加为节点吗?

我正在处理的文本在细节上确实很少,并且尝试深入研究 ceph-ansible github 页面也没有特别的帮助。

我只是想了解其工作原理。如能提供任何帮助,我将不胜感激,谢谢!

答案1

一个清单中重复的组名是没有意义的。此外,您可以将清单文件存储在不同的地方。

考虑以下 YAML 格式inventory/siteA.yml

---
all:
  vars:
    datacenter: a
  children:
    cephnodes:
      hosts:
        ceph-node1:
        ceph-node2:
        ceph-node3:
    osds:
      children:
        cephnodes
    mons:
      children:
        cephnodes

    clients:
      children:
        client-node1:

因为每个节点都有一个 osd 和一个 mon,所以我做了 DRY 的事情并通过子组制作了一个引用列表。

inventory/siteB.yml3 个不同节点自然就是同一件事。

如果您希望在一个游戏中定位多个库存,则可以将它们的目录指定为 inventory: ansible-playbook -i inventory/osds然后将定位 6 个节点。但是,如果您需要在一个游戏中分别定位 A 和 B 站点,您可能需要稍微调整一下组的结构以区分它们。

相关内容