一、前言
关于什么是openstack以及什么时saltstack,这里就不多说了,直接进入主题
二、openstack 的自动化部署
1.实验环境
系统版本 | hostname | ip | 角色 |
---|---|---|---|
redhat7.2 | server1 | 172.25.27.1 | controller \ salt-minion |
redhat7.2 | server2 | 172.25.27.2 | comput \ salt-minion |
redhat7.2 | server3 | 172.25.27.3 | salt-master |
请确保关闭防火墙,iptables,selinux
2.saltstack环境安装
请参考博客:自动化运维工具SaltStack详细部署及用SaltStack实现自动部署lamp架构 中的 SaltStack基础安装与配置 部分
验证:
[root@server3 ~]# salt-key -L
Accepted Keys:
server1
server2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
3. 创建saltstack脚本进行自动化部署
第一版代码已经放到github
代码可以直接拿本人提交到github的
[root@server3 ~]# git clone https://github.com/valor7/salt_openstack.git
[root@server3 ~]# vim salt_openstack/base/top.sls
base:
'server1':
- ntp.service
- openstack.install
- sql.init
- rabbitmq.service
- memcached.service
- keystone.service
- service_entity.service
- glance.service
- nova.services
- neutron.services
- dashboard.service
'server2':
- ntp.service
- comput_node.service
- 我这里是server1为控制节点,server2为计算节点,可根据自己的情况进行相应配置,修改top.sls即可
- 如果直接拿我的代码需要修改相应用户密码及ip等信息,全部在pillar文件夹里面
[root@server3 salt_openstack]# tree
.
├── base
│ ├── bash
│ │ └── script ##部分服务启动及数据库认证脚本
│ ├── comput_node ##计算节点相应的服务
│ │ ├── files
│ │ │ ├── linuxbridge_agent.ini
│ │ │ ├── neutron.conf
│ │ │ └── nova.conf
│ │ ├── install.sls
│ │ └── service.sls
│ ├── dashboard
│ │ ├── files
......
│ └── top.sls
└── pillar
├── openstack
│ ├── chronyd_info.sls ##时间同步服务器信息,默认使用阿里云的时间同步服务器
│ ├── comput_info.sls ##计算节点服务器信息
│ ├── controller_info.sls ##控制节点服务器信息
│ ├── db_resources.sls ##创建数据库信息,用户名及密码等
│ ├── user_info.sls ## dashboard用户信息
│ └── yum_info.sls ##yum 源,需要进行配置,我是搭建的本地yum仓库,文件已上传百度云
└── top.sls
27 directories, 54 files
- 修改salt-master的默认文件指向,需要指向我们的文件夹路径
[root@server3 salt_openstack]# ls
base pillar
[root@server3 salt_openstack]# pwd
/root/salt_openstack
[root@server3 salt_openstack]# vim /etc/salt/master
file_roots:
base:
- /root/salt_openstack/base
pillar_roots:
base:
- /root/salt_openstack/pillar
-
[root@server3 salt_openstack]# systemctl restart salt-master.service
openstack所需的软件包我是搭建的本地yum仓库,本地仓库里的所有内容已打包上传到百度云了,直接下载解压即可使用
百度云传送门:mitaka.tgz
提取码:ydih
4.见证奇迹的时刻
[root@server3 salt_openstack]# salt '*' test.ping
server2:
True
server1:
True
[root@server3 salt_openstack]# salt '*' state.highstate ##然后就是等他完成
正常情况是这样的
没有报错,进行测试
浏览器输入 http://server1/dashboard
用户名和密码是在pillar中定义的,domain为default
先用admin账户登陆
登上去是这样子的,setting里面改成中文
管理员>> 镜像 查看已经有一个镜像了,是通过脚本上传上去的,你也可以上传你自己的镜像,点击创建镜像即可上传自己的镜像
接下来创建一个网络就可以愉快的起云主机了
管理员>>网络>>创建网络>>按图示填写(只有名称可随意)>>提交
点击我们刚才创建的网络provider,添加子网
管理员>>网络>>privider>>创建子网>>根据实际情况进行填写
填好之后下一步
根据实际情况填写好之后点击已创建,网络就创建完成了
- 创建一个云主机类型
系统>>云主机类型>>创建云主机类型
由于脚本中上传的镜像消耗资源较少,所以这里创建一个主机类型避免资源浪费,同时减小计算节点压力
创建好之后退出admin用户,切到demo用户
云主机>>创建云主机
然后点启动实例
进入控制台
创建快照旁边的倒三角>>控制台
与可以从网络拓扑里面打开控制台
输入提示的用户名 cirros 和密码 cubswin:) 登陆控制台
总结
至此,用saltstack自动化部署openstack完成,后续还有块存储服务等没有添加,读者若有兴趣可进行添加。saltstack脚本有不足之处欢迎指出