跳转到: 导航, 搜索

Solum/solum-development-setup

有两种方法来设置 Solum 开发环境。您可以使用 Vagrant,或者您可以直接在 Devstack 上设置 Solum。以下是两种方法的步骤。

我们的目标是为 Solum 提供一个一致的开发环境。我们的经验表明,使用 Solum 依赖服务的 master 分支并不是实现我们目标的好策略。特别是,我们的经验表明 Solum 的开发环境受到 nova、nova-docker 和 neutron 的影响。因此,为了获得 Solum 的一致开发环境,我们将固定这些服务的特定提交。

1) Vagrant

您可以在 vagrant 盒子中设置您自己的演示环境,以运行您自己的 Solum 安装。这使用 VirtualBox 作为默认提供程序,因此它可以在安装了 Vagrant 和 VirtualBox 的 Mac 或 PC 上工作。这已使用最新版本的 Vagrant 和 VirtualBox 进行测试。

1) 克隆 vagrant 仓库

   git clone https://github.com/rackerlabs/vagrant-solum-dev

2) 克隆 solum 和 python-solumclient 仓库

   git clone https://github.com/openstack/solum.git
   git clone https://github.com/openstack/python-solumclient.git

3) 设置 SOLUM 和 SOLUMCLIENT 环境变量

   export SOLUM=<path on Host system to solum repo>
   export SOLUMCLIENT=<path on Host system to python-solumclient repo>
   Find solum path using: cd solum; pwd
   Find python-solumclient path using: cd python-solumclient; pwd

4) 将 SOLUM_IMAGE_FORMAT 设置为 docker

   export SOLUM_IMAGE_FORMAT=docker

5) cd vagrant-solum-dev

6) 启动 vagrant VM:vagrant up --provision

7) 进入 vagrant VM:vagrant ssh

8) 按照 getting_started 指南中的步骤 (https://docs.openstack.org/developer/solum/getting_started/) 构建并在 Solum 上部署应用程序。

2) Devstack

1) 创建一个全新的 VM 并以 root 用户身份登录

2) 创建非 root 用户

   useradd solumuser -m -d /home/solumuser -s /bin/bash
   visudo
   solumuser ALL=(ALL) NOPASSWD: ALL

3) 为新用户设置密码

    passwd solumuser

4) 注销并以新用户 (solumuser) 登录

5) 设置 devstack

   DEVSTACK_DIR="${HOME}/devstack"
   mkdir -p ${DEVSTACK_DIR}
   sudo apt-get update
   sudo apt-get install -y git python-pip
   sudo git clone https://git.openstack.org/openstack-dev/devstack.git ${DEVSTACK_DIR}
   cd ${DEVSTACK_DIR}
   wget https://raw.githubusercontent.com/devdattakulkarni/solum-provenance/master/local.conf
   sudo chown -R solumuser ${DEVSTACK_DIR}
   sudo chgrp -R solumuser ${DEVSTACK_DIR}

6) 下载 nova

   sudo git clone https://github.com/openstack/nova.git /opt/stack/nova
   cd /opt/stack/nova
   sudo git checkout 859ff4893f699b680fec4db7dedd3bec8c8d0a1c

7) 下载 neutron

   sudo git clone https://github.com/openstack/neutron.git /opt/stack/neutron
   cd /opt/stack/neutron
   sudo git checkout 775893bb7f61c4641acbcb4ae16edf16e0989c39

8) 运行 stack.sh

   cd ${DEVSTACK_DIR}
   ./stack.sh
    When prompted, enter desired password

7) 按照 (https://docs.openstack.org/developer/solum/getting_started/index.html) 上的步骤构建并在 Solum 上部署应用程序。


3) 在 Windows 上设置

1) 安装 Virtualbox、Vagrant、git-bash

   - When installing git-bash, make sure that you choose the option of using Unix style line endings (only LF) and not Windows style line endings (CRLF).

2) 打开 git-bash 终端

3) 按照上述 Vagrant 设置步骤操作。

故障排除

1) 有用的屏幕命令

   - Attach to the screen session using 'screen -x stack'
   - Navigate between screens using following commands:
     - Cntrl a - n -> next screen
     - Cntrl a - p -> previous screen
     - Cntrl a - " -> see all the running screens

2) 如果 vagrant vm 上未安装 docker,请按照以下步骤安装它

   echo deb http://get.docker.com/ubuntu docker main | sudo tee /etc/apt/sources.list.d/docker.list
   sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
   sudo apt-get install -y apt-transport-https
   sudo apt-get update
   sudo apt-get install -y lxc-docker-1.7.0

3) Vagrant 设置可能无法启动所有服务,除了一个 nova 服务 (n-cpu)。这是因为 Nova 需要配置为使用 nova-docker 驱动程序,而 vagrant 设置默认情况下不会这样做。使用以下步骤设置驱动程序,安装它,然后重新启动任何失败的 nova 服务。

   Edit /etc/nova/nova.conf and add following lines:
   compute_driver = novadocker.virt.docker.driver.DockerDriver
   Change the scheduler_driver variable from 'filter_scheduler' to 
   scheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler
   - Install nova-docker
     - cd /opt/stack/nova-docker
     - sudo python setup.py install
   - Add current user to the docker group and change permissions of the unix docker socket
     - sudo gpasswd -a ${USER} docker
     - sudo chmod o=rwx /var/run/docker.sock
   - Copy docker filters to /etc/nova/rootwrap.d/
     - sudo cp /opt/stack/nova-docker/etc/nova/rootwrap.d/docker.filters /etc/nova/rootwrap.d/.
   - Go to n-* screens and restart them if they have failed.
  Note:
  We are currently granting rwx permissions for 'others' to the unix docker socket. We need to investigate what is the least amount of permissions required and only grant those   permissions.

4) 如果开发环境因 nova 屏幕中的错误而失败,那么一种解决方法是使用以下指定的 nova、nova-docker 和 neutron 的特定版本

   Download nova-docker
   sudo git clone https://github.com/openstack/nova-docker.git /opt/stack/nova-docker
   cd /opt/stack/nova-docker
   sudo git checkout 7e55fd551ef4faf3499a8db056efc9535c20e434