使用 Ansible 进行 Ceph 维护

承接 这篇文章。
这个 playbook 是为了自动化 Ceph 服务器的维护而创建的。 典型的用例是硬件更换。 通过运行此 playbook,您将在集群上设置 noout 标志,这意味着 OSD 不能被标记为从 CRUSH 映射中移除,但它们将被标记为 down。 因此,OSD 将不会接收任何数据。 基本上,我们告诉集群不要移动任何数据,因为该操作不会持续太久。
它做了什么?
- 它在您的 Ceph 集群上设置
noout标志 - 关闭您想要管理的机器
- 等待服务器再次启动
- 取消设置您的 Ceph 集群上的
noout标志
如何使用它
```bash $ ansible-playbook -v maintenance.yml
PLAY [ceph3] ***************************************************
TASK: [设置 noout 标志] **************************************************** changed: [ceph3] => {"changed": true, "cmd": ["ceph", "osd", "set", "noout"], "delta": "0:00:00.280238", "end": "2014-04-09 17:40:40.101276", "rc": 0, "start": "2014-04-09 17:40:39.821038", "stderr": "set noout", "stdout": ""}
TASK: [关闭服务器] *************************************************** changed: [ceph3] => {"changed": true, "cmd": ["poweroff"], "delta": "0:00:00.008236", "end": "2014-04-09 17:40:41.385631", "rc": 0, "start": "2014-04-09 17:40:41.377395", "stderr": "", "stdout": ""}
TASK: [等待服务器关闭 (重启)] ******************************* ok: [ceph3] => {"changed": false, "elapsed": 2, "path": null, "port": 22, "search_regex": null, "state": "stopped"}
TASK: [等待服务器启动] **************************************** ok: [ceph3] => {"changed": false, "elapsed": 47, "path": null, "port": 22, "search_regex": null, "state": "started"}
TASK: [取消设置 noout 标志] ************************************************** changed: [ceph3] => {"changed": true, "cmd": ["ceph", "osd", "unset", "noout"], "delta": "0:00:00.277196", "end": "2014-04-09 17:41:30.993053", "rc": 0, "start": "2014-04-09 17:41:30.715857", "stderr": "unset noout", "stdout": ""}
PLAY RECAP ******************************************************************** ceph3 : ok=5 changed=3 unreachable=0 failed=0 ```
希望对您有所帮助!