宣布 Ceph 的 Ansible playbook!

Ceph:基于 cow 的 Ansible 部署 :-).
我很高兴地宣布我已经完成了 Ceph 的 Ansible playbook。
一、playbook
playbook 可在 Ceph Github 上找到。
它做了什么?
- 身份验证 (cephx),可以禁用此功能。
- 支持集群公共和私有网络。
- 监控程序部署。您可以轻松地从一个监控程序开始,然后逐步添加新节点。因此,可以部署一个监控程序进行测试目的。对于生产环境,我建议始终使用奇数个监控程序,3 通常是标准。
- 对象存储守护程序。与监控程序一样,您可以从一定数量的节点开始,然后增加此数量。该 playbook 支持将日志存储在专用设备上,或者将日志和 OSD 数据存储在同一设备上(在设备开头使用一个小的分区)。
- 元数据守护程序。
- 共置。该 playbook 支持将监控程序、OSD 和 MDS 放置在同一台机器上。
- 该 playbook 已在 Debian Wheezy 和 Ubuntu 12.04 LTS 上进行了验证。
- 在 Ceph Dumpling 和 Emperor 上进行了测试。
- 编写了一个滚动升级 playbook,并执行了从 Dumpling 到 Emperor 的升级,并且成功了。
不支持什么?
- Rados gateway 没有实现,因为有人已经在这里完成了它:https://github.com/jcftang/ansible-ceph,我希望我们能在不久的将来将它们混合在一起。
二、使用 Vagrant 设置
我知道 Vagrant 有一个 Ansible 配置提供程序,但是我认为这自动化程度太高了。我相信您需要亲自动手操作,否则您将无法执行任何其他部署(特别是如果您是第一次使用 Ansible)。
首先修改您主目录中的 rc 文件
export ANSIBLE_CONFIG=<whatever_path>/.ansible.cfg
对 .ansible.cfg 文件执行相同的操作
[defaults]
host_key_checking = False
remote_user = vagrant
hostfile = <whatever_path>/hosts
log_path = <whatever_path>/ansible.log
ansible_managed = Ansible managed: modified on %Y-%m-%d %H:%M:%S by {uid}
private_key_file = ~/.vagrant.d/insecure_private_key
error_on_undefined_vars = False
使用以下内容编辑您的 /etc/hosts 文件
# Ansible hosts
127.0.0.1 ceph-mon0
127.0.0.1 ceph-mon1
127.0.0.1 ceph-mon2
127.0.0.1 ceph-osd0
127.0.0.1 ceph-osd1
127.0.0.1 ceph-osd2
现在由于我们使用 Vagrant 和端口转发,请不要忘记获取 VM 的 SSH 本地端口。 然后相应地编辑您的 hosts 文件。
好的,现在让我们认真对待。运行您的虚拟机
bash $ vagrant up ... ... ...
测试 Ansible 是否可以访问虚拟机
```bash $ ansible all -m ping ceph-mon0 | success >> {
"changed": false,
"ping": "pong"
}
ceph-mon1 | success >> {
"changed": false,
"ping": "pong"
}
ceph-osd0 | success >> {
"changed": false,
"ping": "pong"
}
ceph-osd2 | success >> {
"changed": false,
"ping": "pong"
}
ceph-mon2 | success >> {
"changed": false,
"ping": "pong"
}
ceph-osd1 | success >> {
"changed": false,
"ping": "pong"
} ```
准备好部署了吗?让我们开始吧!
```bash $ ansible-playbook -f 6 -v site.yml ... ...
< PLAY RECAP >
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
ceph-mon0 : ok=13 changed=10 unreachable=0 failed=0 ceph-mon1 : ok=13 changed=9 unreachable=0 failed=0 ceph-mon2 : ok=13 changed=9 unreachable=0 failed=0 ceph-osd0 : ok=19 changed=12 unreachable=0 failed=0 ceph-osd1 : ok=19 changed=12 unreachable=0 failed=0 ceph-osd2 : ok=19 changed=12 unreachable=0 failed=0 ```
检查状态
```bash $ vagrant ssh mon0 -c "sudo ceph -s"
cluster 4a158d27-f750-41d5-9e7f-26ce4c9d2d45
health HEALTH_OK
monmap e3: 3 mons at {ceph-mon0=192.168.0.10:6789/0,ceph-mon1=192.168.0.11:6789/0,ceph-mon2=192.168.0.12:6789/0}, election epoch 6, quorum 0,1,2 ceph-mon0,ceph-mon1,ceph-mon2
mdsmap e6: 1/1/1 up {0=ceph-osd0=up:active}, 2 up:standby
osdmap e10: 6 osds: 6 up, 6 in
pgmap v17: 192 pgs, 3 pools, 9470 bytes data, 21 objects
205 MB used, 29728 MB / 29933 MB avail
192 active+clean
```
关于发行版支持的快速说明。此 playbook 已在 Debian Wheezy 和 Ubuntu 上进行了测试。
我真诚地希望您会喜欢这个 playbook :).