openstack学习-入门1

来源:互联网 发布:武汉家装哪家好 知乎 编辑:程序博客网 时间:2024/06/17 22:01

背景

公司刚好想要了解了解的私有云的一些东西,作为趟路的人就先学习相关知识,openstack(python系),cloudstack(java系)。对于我这种只会搞c/c++,学习过python的人,当然更倾向于python系,何况现在好像openstack的流行度比cloudstack要高。

环境

 ubuntu14.04LTS、python2.7.6、jdk7在部署另外的应用中已经安装过,初次接触也不知道这个jdk是否有用。

编译

编译的过程就相对而言比较简单,直接命令

  • 下载git及devstack:
    sudo apt-get install git
    cd /home
    sudo git clone
    https://github.com/openstack-dev/devstack.git
  • 创建用户及修改密码、权限等:
    cd /home/devstack/tools
    ./create-stack-user.sh
    sudo chown -R stack:stack /home/devstack
    passwd stack

    vim /etc/sudoers
    # User privilege specification
    root ALL=(ALL:ALL) ALL
    stack ALL=(ALL:ALL) ALL

  • 切换用户:
    su stack
  • 增加配置文件
    将localrc放到目录/home/devstack/下
    (在附件中上传localrc)
  • 执行stack.sh


    问题

    下面详细的记录自己碰到问题的解决方法,这个才是重点。

  • 问题1
    subunit not found
    解决办法:
    sudo apt-get install python-pip
    sudo pip install –upgrade pip
    sudo pip install -U os-testr

  • 问题2
    Download of get-pip.py failed
    解决办法:
    wget https://bootstrap.pypa.io/ez_setup.py
    sudo python distribute_setup.py
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py
    然后在devstack/tools目录下,找到install_pip.py,注释
    install_get_pip这个函数调用。

  • 问题3
    pip not found in /opt/stack/.vnc/bin/
    解决办法:
    cd /opt/stack/.vnc/bin/
    sudo ln -sf /usr/local/bin/pip pip

  • 问题4
    碰到最多的要属:timeout错误. 最好的办法是手工下载
    因为就算修改源后,发现还是非常多的timeout
    a. python的源: pypi.python.org
    这个源下载后通过sudo python .. install 或者
    sudo pip install *.whl 两种方式进行安装
    b.openstack的源: github
    将文件下载好后放入到 /opt/stack/目录下

  • 问题5
    权限不足问题,比如无法创建or打
    开:/usr/local/lib/python2.7/dist-packages/parsley.pyc
    解决办法:
    sudo chown -R
    stack:stack /usr/local/lib/python2.7/dist-packages/

  • 问题6
    docutils工具运行失败
    解决办法
    因为自己的机器是python2.7, 而最新版本的docutils已经是
    python3.0版本,所以,下载老版本0.9. 因为从0.10开始就支
    持了python3.0了
    sudo pip install *.whl

  • 问题7
    /opt/stack/requirements/.venv/bin/edit-constraints:
    No such file or directory
    解决办法:
    查看错误信息:
    /opt/stack/requirements/.venv/bin/edit-constraints
    /opt/stack/requirements/upper-constraints.txt –
    keystone ‘-e file:///opt/stack/ keystone#egg=keystone’
    /opt/stack/requirements/.venv/bin/edit-constraints: No
    such file or directory
    这个edit-constraints 明显是一个工具啊!这个工具是
    ubuntu ? python?
    百度没有给出答案!
    最终在网上终于找到了一个地方,
    在/opt/stack/requirements/openstack_requirements路径
    下竟然有一个文件edit-constraints.py
    如果用python 直接安装,会有什么结果呢?
    尝试后,果然在/usr/bin/中生成一个工具edit-constraints.顺利解决上面的问题

    解决办法:
    sudo python
    /opt/stack/requirements/openstack_requirements/setup.py install

  • 问题8
    困扰很久的Keystone无法初始化成功的问题
    解决办法:
    通过查看日志得到错误信息是pymysql库的错误
    因为现在的openstack已经开始进行py3转移了,
    keystone它默认设置的是pymysql作为链接字串
    在/etc/keystone/keystone.conf的[database]中可以看到:
    [database]
    connection =
    mysql+pymysql://root:123456@127.0.0.1/keystone?
    charset=utf8
    知道python的小同学们都知道python中支持py3的数据库驱动(独此一家?我知道支持py3的只有这个)。
    现在我们用的版本是python2.7 因此修改字串,以mysqldb的当时进行链接(python官方、mysql官方给的驱动就是它了),修改如下
    [database]
    connection =
    mysql://root:123456@127.0.0.1/keystone?charset=utf8

    另外修改后会发现该文件还是会再次重新生成
    为了将/home/devstack/lib/databases中的
    MYSQL_DRIVER : 将pymysql 修改为mysql-python

    在localrc中追加配置
    MYSQL_DRIVER=MYSQL-python
    KEYSTONE_TOKEN_FORMAT=UUID

    另外:/etc/keystone/keystone.conf中
    [token] 模块下是默认使用pki作为token的provider, 但是pki会造成编译错误,因为对pki不了解,所以采用粗鲁的办法,按照上面的做法在localrc中追加配置 KEYSTONE_TOKEN_FORMAT=UUID,将token的provider直接改为uuid

  • 问题9
    +lib/keystone:create_keystone_accounts:368 local admin_project
    ++lib/keystone:create_keystone_accounts:369 openstack project show admin -f value -c id
    Discovering versions from the identity service failed when creating the password plugin. Attempting to determine version from URL.
    解决办法:
    暂时没有发现有效的解决办法,按照网上的大神些说道的
    export no_proxy=…
    chmod 777 /etc/openvswitch/….
    等等。统统无效
    然后自己把devstack,keystone模块统统的使用
    git reset –hard后,
    ./unstack.sh
    ./stack.sh
    问题竟然解决了!!!

  • 问题10
    screen -x stack
    Cannot open your terminal ‘/dev/pts/1’ - please check
    解决办法:
    su stack
    script /dev/null

初学这个,学的相当艰苦,不过把里面的很多东西都摸了一遍,对openstack的stack.sh有了一点点了解,算是解决这些问题的意外收获吧!

另外吐槽个某陈…克老师,在百度上找到很多他的文章。然而对问题的解决真心不太对,,可能是自己太菜了,没有理解回复的解决问题的办法的精髓。


localrc 的下载地址:
http://download.csdn.net/detail/swjtu_ran/9688696

期待以后自己能在这块一直进步,不过可能因为要养家糊口的因素,不一定能持之以恒的做自己想做的事情,勉self!

0 0
原创粉丝点击