基于SaltStack+OpenStack的自动化扩容实战第1篇
Posted 运维社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于SaltStack+OpenStack的自动化扩容实战第1篇相关的知识,希望对你有一定的参考价值。
前言
本文是我参加318 DevOps Days北京站,上午我在DevOps训练营中演示的其中一个案例的第一篇,本篇主要介绍如何使用salt-cloud自动化创建OpenStack云主机,剩下内容陆续发出。
总体自动化扩容流程:
如果从总体上理解自动化扩容,分为两大部分:
1. 扩容决策判断(决策树设计)。
2. 执行自动化扩容流程。
扩容方式:
实战部分先把最重要的扩容决策判断放下,介绍了如何使用开源工具执行自动化扩容流程,整体又分为两个类型的扩容方案(基于物理机暂且不谈):
基于虚拟机的扩容(本文内容)。
基于容器的扩容(后期推出)。
基于虚拟机的扩容流程简介:
通过salt-cloud调用OpenStack 创建虚拟机。
通过API调用Saltstack 配置运行环境(其实只是检查和验证,因为运行环境需要在镜像中提前定义好)。
通过API调用Zabbix增加监控,和对应模板。
通过API调用部署系统部署当前版本的代码。
调用API测试接口,测试服务健康状态。
加入对应集群。
通知(短信、邮件)。
salt-cloud自动化创建OpenStack虚拟机
不要怀疑,神奇的魔法要从SaltStack开始。虽然说写个脚本调用OpenStack API创建虚拟机没什么大不了,但是如果你不用编写一行代码就可以管理OpenStack应该是一个不错的注意,接下来我们要讲的salt-cloud正是如此。
salt-cloud介绍
salt-cloud是SaltStack四大功能之一,用于云管理,可以用来管理众多公有云和私有云,例如:AWS、Azure、阿里云等,更多详情可以参考:https://docs.saltstack.com/en/latest/topics/cloud/
1.安装salt-cloud
# yum install -y salt-cloud
4.测试与OpenStack的通信
下面我们通过salt-cloud获取openstack的信息来测试配置是否正常。
# salt-cloud --list-images openstack
# salt-cloud --list-size openstack
如果openstack的通信没有问题,那么就可以正常的输出OpenStack的镜像和云主机的类型。那么我们下一步就可以和OpenStack交互了。
创建云主机配置文件
我们使用Salt-Cloud创建OpenStack云主机并不是需要手动指定云主机的相关配置,而且预先定义好配置文件,然后直接使用配置文件创建云主机,比如下面,我们编写一个云主机的profile,注意格式依然是YAML。
# vim /etc/salt/cloud.profiles.d/web.conf
openstack_web:
provider: my-openstack-config
#设置云主机类型,注意使用权限
size: m1.tiny
#设置创建该云主机使用的镜像名称
image: cirros-0.3.1-x86_64-uec
#指定云主机使用的网络,注意是network id。
networks:
- fixed:
- bc82c434-4781-4d3f-832b-4b12aed5d9e2
#设置访问的密钥对,需要提前设置好。
ssh_key_name: test
#设置密钥对的私钥
ssh_key_file: /etc/test.pem
ssh_interface: private_ips
#如果设置了minion,那么创建虚拟机完毕后会自动安装salt-minion并设置我们指定的grains。
minion:
master: base.example.com
append_domain: example.com
grains:
role: webserver
创建云主机
下面我们就可以创建虚拟机。使用-p参数,后面跟上你要创建的云主机配置的ID。Web-node1为云主机的名称。使用-l debug可以把整个创建过程都列出来,方便我们查看。
# salt-cloud -p openstack_web web-node1
注意,虚拟机创建成功后,虚拟机创建完毕后,可以在/tmp/bootstrap-salt.log找到saltstack相关日志。
Salt Bootstrap
Salt-Cloud强大之处不仅仅,可以让我们直接创建OpenStack云主机,默认会使用salt bootstrap为我们安装上salt-minion。根据在上面profile里面的定义,我们给新创建的云主机分配了一个grains。然后就可以通过grains进行配置管理。
# salt -G 'role:web-node' test.ping
api-node1.example.com:
True
由于默认的salt bootstrp是通过外网下载,进行salt的安装工作,你可以对该脚本进行自定义,编写符合内部需要的脚本。
删除云主机
# salt-cloud -d api-node1
总结和下一步
现在你已经可以使用salt-cloud连接openstack自动化的创建了一台虚拟机,接下来的步骤就是使用saltstack对该虚拟机的运行环境进行初始化,注意:根据不可变基础设施的理论。如果你对环境有变化,应该是重新构建你的OpenStack镜像,这样SaltStack的配置管理,仅仅是做一次状态验证即可。
由于工作比较忙,下一篇敬请期待!
牛人并不可怕,可怕的是牛人比我们还努力!
-
以上是关于基于SaltStack+OpenStack的自动化扩容实战第1篇的主要内容,如果未能解决你的问题,请参考以下文章