近期工作是调研teuthology,目标是把teuthology enable起来做ceph的测试使用,但没想到teuthology只是冰山一角,其关联了ceph社区的整套CI/CD,这套CI/CD关联项目多的力不从心,其关联的项目大致如下:
1 2 3 4 5 6 7 8
| https://github.com/ceph/shaman.git https://github.com/ceph/teuthology.git https://github.com/ceph/ceph-cm-ansible.git https://github.com/ceph/pulpito.git https://github.com/ceph/ceph-qa-suite.git https://github.com/ceph/paddles.git https://github.com/ceph/ceph.git 还有很多未知的,shaman社区明确说是内部使用的,不提供文档,所以只能撸代码,从代码中找数据库的表结构,到目前还没时间找出来。https://github.com/ceph/shaman/issues/110
|
既然社区使用ansible,并且Sébastien Han一直维护,毕竟有他的道理,ansible在自动化运维领域也是很常用的(尤其在大规模部署的情况下),倒不如借着这个机会学习一下。
ansible基础语法看以下两个文章差不多够用,再有问题可以查ansible官网。
1 2
| https://www.w3cschool.cn/automate_with_ansible/ https://www.cnblogs.com/f-ck-need-u/p/7567417.html
|
接着来看一下ceph-ansible项目,README中给出了文档,一个是master一个是stable-3.0。我没有那么傻,当然是看stable-3.0了,哈哈。
1
| https://github.com/ceph/ceph-ansible
|
首先是把ceph-ansible的playbooks clone下来。
1 2 3 4 5
| [root@k8s-master ~]# yum install git -y [root@k8s-master ~]# git clone https://github.com/ceph/ceph-ansible.git [root@k8s-master ~]# cd ceph-ansible/ # 当然branch也要对应文档,这样后续困难应该少一点 [root@k8s-master ceph-ansible]# git checkout -b mystable-3.0 origin/stable-3.0
|
接着需要安装ansible,官方stable-3.0文档中说明了ceph-ansible项目各个branch,支持ansible版本和ceph版本。我们只看现在的branch,其他branch有需要再说。
1
| stable-3.0支持ceph版本jewel和luminous。该branch支持ansible版本2.3.1,2.3.2和2.4.2。
|
安装ansible 2.4.2
使用yum安装指定版本的ansible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| [root@cephJ ~]# yum -h | grep show --showduplicates 在 list/search 命令下,显示源里重复的条目
[root@cephJ ~]# yum --showduplicates list ansible 已加载插件:fastestmirror, priorities Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * epel: www.ftp.ne.jp * extras: mirrors.nwsuaf.edu.cn * nux-dextop: li.nux.ro * updates: mirrors.nwsuaf.edu.cn 12 packages excluded due to repository priority protections 可安装的软件包 ansible.noarch 2.4.2.0-2.el7 extras ansible.noarch 2.7.5-1.el7 epel
### sudo yum install <package name>-<version info> [root@cephJ ~]# sudo yum install -y ansible-2.4.2.0
[root@cephJ ~]# ansible --version ansible 2.4.2.0 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
|
配置ceph-ansible
准备四台机器
1 2 3 4 5 6 7
| ansible节点 ansible-master
ceph节点 ansible-ceph-1 ansible-ceph-2 ansible-ceph-3
|
配置ansible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| ansible节点执行
1、首先clone代码 [root@ansible-master ~]# git clone https://github.com/ceph/ceph-ansible.git && cd ceph-ansible/
2、创建本地分支并切换分支 [root@ansible-master ceph-ansible]# git checkout -b myv3.2.0 v3.2.0
3、copy模板文件 [root@ansible-master ceph-ansible]# cp site.yml.sample site.yml
4、修改ansible机器清单(inventory) [root@ansible-master ~]# vim /etc/ansible/hosts [mons] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2 [osds] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2 [rgws] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2 [mgrs] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2
5、批量推送sshkey [root@ansible-master ~]# ssh-keygen -t rsa [root@ansible-master ~]# cat push-ssh.yaml - hosts: all user: root tasks: - name: ssh-key-copy authorized_key: user=root key="{{ lookup('file','/root/.ssh/id_rsa.pub')}}" tags: - sshkey
[root@ansible-master ~]# ansible-playbook push-ssh.yaml ansible-ceph-1 : ok=2 changed=1 unreachable=0 failed=0 ansible-ceph-2 : ok=2 changed=1 unreachable=0 failed=0 ansible-ceph-3 : ok=2 changed=1 unreachable=0 failed=0
6、安装pip并安装ceph-ansible依赖 [root@ansible-master ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" && python get-pip.py && pip install --upgrade setuptools [root@ansible-master ceph-ansible]# pip install -r requirements.txt
7、修改ansible变量 [root@ansible-master group_vars]# pwd /root/ceph-ansible/group_vars
[root@ansible-master group_vars]# cp all.yml.sample all.yml && cp osds.yml.sample osds.yml && cp mgrs.yml.sample mgrs.yml
all.yml修改如下: mon_group_name: mons osd_group_name: osds ntp_daemon_type: chronyd ceph_origin: repository ceph_repository: community ceph_mirror: http://mirrors.163.com/ceph ceph_stable_key: http://mirrors.163.com/ceph/keys/release.asc ceph_stable_release: luminous ceph_stable_repo: "{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}/el7/x86_64" monitor_interface: eth0 public_network: 192.168.0.0/24 cluster_network: 192.168.0.0/24 radosgw_interface: eth0 radosgw_address: 0.0.0.0
osds.yml修改如下: copy_admin_key: true devices: - /dev/vdb osd_scenario: collocated
mgrs.yml修改如下: ceph_mgr_modules: [status,dashboard]
8、执行ansible开始部署ceph,部署哪些模块会在/etc/ansible/hosts中定义(下面是我们之前定义的),如果在该文件中没有对应模块定义,ansible会忽略该模块的部署。 [mons] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2 [osds] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2 [rgws] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2 [mgrs] ansible-ceph-[1:3] ansible_ssh_pass=yujiang2
9、修改ansible host_key_checking [root@ansible-master ~]# vim /etc/ansible/ansible.cfg [defaults] host_key_checking = False
[root@ansible-master ceph-ansible]# pwd /root/ceph-ansible [root@ansible-master ceph-ansible]# ansible-playbook site.yml PLAY RECAP ******************************************************************************************************************************************************************************************************************************************************************* ansible-ceph-1 : ok=310 changed=17 unreachable=0 failed=0 ansible-ceph-2 : ok=287 changed=17 unreachable=0 failed=0 ansible-ceph-3 : ok=289 changed=20 unreachable=0 failed=0
INSTALLER STATUS ************************************************************************************************************************************************************************************************************************************************************* Install Ceph Monitor : Complete (0:00:37) Install Ceph Manager : Complete (0:01:05) Install Ceph OSD : Complete (0:00:38) Install Ceph RGW : Complete (0:00:30)
|