美文网首页云计算Docker容器程序员
一步搭建 Cloudstack 模拟环境

一步搭建 Cloudstack 模拟环境

作者: 左蓝 | 来源:发表于2017-03-02 23:22 被阅读703次

    学校课程要搭建 Cloudstack 环境,虽然书上写得很详细,但是只能说书本的教程太麻烦不适合我这种懒人。那就自己想办法动手搭建咯。

    一句话完事?

    其实 Cloudstack 提供了一个模拟器,直接执行:

    docker run --name simulator -p 8080:8080 -d cloudstack/simulator
    

    等待几分钟,Cloudstack 就已经部署在本地了。好了,教程到此结束。


    这样写估计是要被吐槽的,所以接下来看看刚才那句话执行之后到底发生了什么。

    Xen、KVM 与 OpenVZ

    在开始之前需要解释一下这三者的区别。
    简单来说,KVM 内置于 Linux,是内核模块;Xen、OpenVZ 是 Linux 的一个应用。
    相关解释这里挺详细的:https://www.yingsuo.tech/article/openvz-xen-kvm.html

    本文使用的是 Xen 虚拟化技术。

    看 Dockerfile 知原理

    先上模拟器的 Dockerfile:

    FROM ubuntu:16.04
    
    MAINTAINER "Apache CloudStack" <dev@cloudstack.apache.org>
    LABEL Vendor="Apache.org" License="ApacheV2" Version="4.10.0.0-SNAPSHOT"
    
    RUN apt-get -y update && apt-get install -y \
        genisoimage \
        libffi-dev \
        libssl-dev \
        git \
        sudo \
        ipmitool \
        maven \
        openjdk-8-jdk \
        python-dev \
        python-setuptools \
        python-pip \
        python-mysql.connector \
        supervisor
    
    RUN echo 'mysql-server mysql-server/root_password password root' |  debconf-set-selections; \
        echo 'mysql-server mysql-server/root_password_again password root' |  debconf-set-selections;
    
    RUN apt-get install -qqy mysql-server && \
        apt-get clean all && \
        mkdir /var/run/mysqld; \
        chown mysql /var/run/mysqld
    
    RUN echo '''sql_mode ="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"''' >> /etc/mysql/mysql.conf.d/mysqld.cnf
    RUN (/usr/bin/mysqld_safe &); sleep 5; mysqladmin -u root -proot password ''
    
    #RUN pip install --allow-external mysql-connector-python mysql-connector-python
    
    COPY tools/docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
    COPY . ./root
    WORKDIR /root
    
    RUN mvn -Pdeveloper -Dsimulator -DskipTests clean install
    
    RUN (/usr/bin/mysqld_safe &); \
        sleep 5; \
        mvn -Pdeveloper -pl developer -Ddeploydb; \
        mvn -Pdeveloper -pl developer -Ddeploydb-simulator; \
        MARVIN_FILE=`find /root/tools/marvin/dist/ -name "Marvin*.tar.gz"`; \
        pip install $MARVIN_FILE
    
    EXPOSE 8080 8096
    
    CMD ["/usr/bin/supervisord"]
    

    整个 Dockerfile 最关键的是第二句 COPY 命令,把整个仓库代码丢进了容器中。

    所以部署数据中心也就很方便了:

    docker exec -ti cloudstack python \
    /root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/advanced.cfg
    # or 
    docker exec -ti cloudstack python \
    /root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/advancedsg.cfg
    # or 
    docker exec -ti cloudstack python \
    /root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/basic.cfg
    

    部署 Cloudstack 管理节点(旧版)

    运行数据库:

    docker run --name cloudstack-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
    

    运行管理节点:

    docker run -ti --name cloudstack --link cloudstack-mysql:mysql -d -p 8080:8080 -p 8250:8250 cloudstack/management_centos6
    

    本文源代码:
    https://github.com/apache/cloudstack/tree/master/tools/docker

    相关文章

      网友评论

      • 一只刚刚开始吃猫粮的运维狗:不太懂这篇文正的意思,是运行docker run --name simulator -p 8080:8080 -d cloudstack/simulator这个命令之后,安装完成就可以访问IP:8080进入cloudstack了吗?
        一只刚刚开始吃猫粮的运维狗:http://118.89.216.127:8080/运行完之后无法访问,您受累给看一下
        左蓝:这个只供体验,生产环境肯定不能这样玩,这个是为了完成作业做的,运行之后就可以看到管理界面了。

      本文标题:一步搭建 Cloudstack 模拟环境

      本文链接:https://www.haomeiwen.com/subject/kqvkgttx.html