Maas & Juju 从裸机开始部署openstack

Maas和Juju都是Canonical开发的ops工具,Maas主要用于裸机部署Ubuntu操作系统,Juju可以用于自动化安装应用,如自动搭建mysql-cluster、rabbitmq-cluster、openstack等等。

Maas部署操作系统

Maas服务的部署请参考http://maas.ubuntu.com/docs1.5/install.html,建议安装最新的稳定版本,搭建安装极其简单,你可以使用Ubuntu的镜像安装Maas,也可以在系统中用apt-get安装。

内网的可以访问这个http://192.168.1.239/MAAS 用户root 密码Neunn@123

安装完毕后,你可以使用文档中的方法导入镜像,也可以在web界面中导入,点击clusters导航栏下的Import boot images按钮,系统镜像导入需要一定时间,这取决于你的带宽。镜像的配置文件在/etc/maas/bootresources.yaml,如果你不需要32位的系统,可以在这里去掉,然后导入,以便能够节省时间:

boot:
 sources:
 - keyring: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
   path: http://maas.ubuntu.com/images/ephemeral-v2/releases/
   selections:
   - arches:
     - i386
     - amd64
     labels:
     - release
     - rc
     release: trusty
     subarches:
     - generic
   - arches:
     - i386
     - amd64
     labels:
     - release
     release: precise
     subarches:
     - generic
 storage: /var/lib/maas/boot-resources/

在Maas服务器上生成一个ssh-key,把pub-key添加到Maas中,每个裸机的系统安装完成后,都会通过cloud-init把key注入到系统中,以便你可以通过ssh管理这些已经安装好的系统。

../../_images/maas-ssh-key.png

然后把裸机和Mass组成在一个局域网内,所有裸机的网卡与Maas相连,网卡需要开启PXE协议支持,Hp的机器千兆网卡都是默认不支持PXE的,需要在Bios里面修改下,如果你有条件可以直接用万兆口,万兆口是默认开启PXE的。

网络组件完成后,你会在Mass的界面中看到这些机器,Mass能够自动侦测,这点还是很强大的。

../../_images/maas-node.png

这时这些节点的status是Commissioning,所有裸机通电后(此时可能需要手动)会自动进行PXE安装,引导系统安装完成后,裸机会自动关闭。此时裸机的status是Ready。

此时如果选择要安装完整版系统,则点击Start Node即可,选择快速安装操作系统可以点击Use the default installer,然后就可以随意等待了:

../../_images/maas-ready.png

使用Juju安装应用

Juju的安装就更简单了,参考https://juju.ubuntu.com/install/ ,Juju的复杂性主要在使用上。我们这里需要把Maas集成到Juju中,然后用Juju来统一管理。

我们需要生成一个environments.yaml的配置文件,其配置内容如下,maas-oauth的值可以在Maas的preferences中找到:

default: maas

environments:
# https://juju.ubuntu.com/docs/config-maas.html
maas:
    type: maas

    # maas-server specifies the location of the MAAS server. It must
    # specify the base path.
    #
    maas-server: 'http://192.168.1.239/MAAS/'

    # maas-oauth holds the OAuth credentials from MAAS.
    #
    maas-oauth: 'M8XvaF74NYCN8qsXPA:c2nDegENyU4e2uwJPc:7Fs3scg8YJzzeQW2LPT25tN24fueNT4s'

然后我们要把Maas管理的裸机集成到Juju中,这个操作叫bootstarp,bootstarp之前要确保裸机的status是Ready状态,否则不能加入到Juju的machine中,bootstarp执行需要一段时间,Juju会把裸机部署真正的操作系统,并完成status Allocated to Root,并在系统中集成Juju的组件,以便实现通过Security Websocket管理和通信。

bootstarp完成后,Juju的environment就建立了,你可以通过 juju status 来查看状态,如果需要再新添加机器,则需要juju add-machine 来添加。

我们可以通过一个例子展现一下Juju的风采:

$ juju status
environment: maas
machines:
  "0":
  agent-state: started
  agent-version: 1.18.2
  dns-name: rm7br.maas
  instance-id: /MAAS/api/1.0/nodes/node-6c8353f8-d432-11e3-95d9-00e0ed2d0f3c/
  series: trusty
services: {}


$ juju add-machine ssh:ubuntu@192.168.1.185

$ juju status
environment: maas
machines:
"0":
  agent-state: started
  agent-version: 1.18.2
  dns-name: rm7br.maas
  instance-id: /MAAS/api/1.0/nodes/node-6c8353f8-d432-11e3-95d9-00e0ed2d0f3c/
  series: trusty
"1":
  agent-state: started
  agent-version: 1.18.2
  dns-name: 192.168.1.185
  instance-id: manual:192.168.1.185
  series: trusty
  hardware: arch=amd64 cpu-cores=12 mem=16008M
services: {}

这样就是完成了Juju环境的基本构建,我们可以安装一些应用:

$ juju deploy keystone --to 0
$ juju deploy mysql --to 0
$ juju juju add-relation keystone mysql

如此我们便在machine-0上安装了 keystone with mysql。

更酷炫的功能可以访问Web-UI https://192.168.1.183/ 密码: 63cb22c1d517fc65dca4eac78df103b2

Table Of Contents

Previous topic

屌丝级的cinder&swift的解决方案

Next topic

keystone 配置token的cache

This Page