優雅安裝OpenStack
OpenStack Pike版本發布了,借這個東風,這次介紹一下如何在個人環境安裝OpenStack。OpenStack安裝方法有很多,chef,ansible,puppet,fuel等。如果作為OpenStack的開發和初步研究,devstack應該是學習成本最低的安裝方式了。接下來就介紹一下如何用devstack優雅安裝OpenStack。
為什麼是優雅的安裝?因為在GFW環境下,只能強裝優雅 ??。如果你已經有VPN或者代理,那你已經足夠優雅,可以直接跳到步驟5。
0. 環境準備
8G內存(推薦數字,越多越好),60G硬碟。
Ubuntu 16.04系統,server image即可,不用帶桌面,節省內存。
最好做成虛擬機,一個是方便備份,另一個devstack會安裝大量包,可能會影響你的電腦的正常使用。
我用的是這個image。
至於怎麼部署虛機,網上有很多教程了,你可以用Virtual box,hyperV,VMware workstation,VMware Fusion。我就跳過這部分了。
1. 配置Ubuntu apt source源
自帶的源其實不慢,因為曾經在美國的虛機上不做任何修改,快如狗。執行下面命令:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.baksudo vim /etc/apt/sources.list
在編輯界面,填入sources.list中的內容。
之後執行:
sudo apt update
2. 配置pip源
OpenStack大部分項目是python項目,安裝過程中要下載大量python包,為了更順暢的安裝,需要修改pip源。
mkdir ~/.pipvim ~/.pip/pip.conf
在編輯界面填入pip.conf中的內容。
3. 下載devstack
git clone https://git.openstack.org/openstack-dev/devstack
4. 配置devstack local.conf
local.conf是devstack安裝的參數,可以通過下面方法自己生成。
cd devstack/cp samples/local.conf ./vim local.conf
在編輯界面的最後,加入如下內容:
GIT_BASE=http://git.trystack.cnNOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.gitSPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.gitdisable_service tempest
如果不想手動修改,也可以直接用我放在github上的local.conf。
5. 優雅安裝
完成了上面的步驟,才可以開始優雅安裝。在devstack目錄,執行:
./stack.sh
安裝過程可能會要求輸入一次密碼。安裝時間取決於你的網速,硬碟速度,CPU速度。一般需要一個小時左右,我個人的電腦速度稍微慢一些,總共花了一個半小時多完成。如果最後看到下面的提示,恭喜你,安裝成功了。
=========================DevStack Component Timing=========================Total runtime 6345run_process 48test_with_retry 9apt-get-update 12pip_install 1335osc 384wait_for_service 54git_timed 672dbsync 544apt-get 984=========================This is your host IP address: 192.168.31.179This is your host IPv6 address: ::1Horizon is now available at http://192.168.31.179/dashboardKeystone is serving at http://192.168.31.179/identity/The default users are: admin and demoThe password: nomoresecret
安裝完成之後,源代碼都在/opt/stack,目錄下。並不是所有的項目都會安裝,只有OpenStack的核心項目才會默認安裝。
配置文件在/etc/目錄下,例如nova的配置文件在/etc/nova目錄下。
6. 驗證
6.1 創建虛機
devstack默認會帶一個cirros鏡像,這是一個簡化版的系統,適合用來測試。devstack默認也會創建一個虛機三層網路架構。包括了一個router,一個tenant network和一個public network。首先在devstack目錄下,導入用戶名和租戶,再執行nova boot創建虛機:
source ~/devstack/openrc admin adminnova boot --image cirros-0.3.5-x86_64-disk --flavor 1 --nic net-name=private vm1
6.2 配置安全組
OpenStack Neutron 默認是關閉所有入方向的流量,也就是所有外界發往虛機的流量都默認被丟棄。可以手動接觸限制。
Neutron為每個tenant都會創建一個security group,這些security group都叫做「default」。為了找到當前租戶的security group,需要先找到當前租戶的tenant id。可以通過下面命令確定:
openstack project list+----------------------------------+--------------------+| ID | Name |+----------------------------------+--------------------+| 4e040c908959480d9f00a1be2989cb90 | admin || 57347766f6ba467a96e3ce87ae6b1989 | service || 7978a79ec6714c7da32eca02b29ae9bb | alt_demo || b3e49f46592d4f95b8178904208819b1 | invisible_to_admin || c9a919689712465a986730c3eafa1cfd | demo |+----------------------------------+--------------------+
剛才我們導入的是admin租戶,所以我們確定了tenant ID。注意,你的環境中,這個ID是不一樣的。
然後通過下面的命令確定security group:
neutron security-group-list --tenant-id 4e040c908959480d9f00a1be2989cb90+--------------------------------------+---------+----------------------------------+| id | name | tenant_id | +--------------------------------------+---------+----------------------------------+| be589b19-105e-42f9-9ae2-2a0112831942 | default | 4e040c908959480d9f00a1be2989cb90 |+--------------------------------------+---------+----------------------------------+
我接下來要ssh登錄到虛機內部,所以我需要打開tcp 22埠,為了省事我給所有的tcp埠放行。注意,你的環境中security group ID是不一樣的。
neutron security-group-rule-create be589b19-105e-42f9-9ae2-2a0112831942 --protocol tcp --remote-ip-prefix 0.0.0.0/0
6.3 登錄虛機
先確定虛機IP。
nova list
在虛機列表可以看到IP地址。
登錄Linux namespace,
$ ip netnsqrouter-1818f77c-e76b-43c5-b87a-9a04fbba6a9eqdhcp-51b3ecc4-50c5-408b-b554-1dd5f6e6a708$ sudo ip netns exec qdhcp-51b3ecc4-50c5-408b-b554-1dd5f6e6a708 bash
注意,你的Linux namespace後面的uuid是不一樣的。其實兩個namespace隨便選哪個都行。在namespace內,登錄虛機,密碼是cubswin:)
ssh cirros@10.0.0.9
這樣你就進到了OpenStack管理的虛機中來了。你可以看當前的IP,可以訪問別的虛機(如果你還創建了別的虛機的話),甚至可以訪問外網,例如:
$ ping zhihu.com -c 1PING zhihu.com (118.178.213.186): 56 data bytes64 bytes from 118.178.213.186: seq=0 ttl=38 time=32.479 ms--- zhihu.com ping statistics ---1 packets transmitted, 1 packets received, 0% packet lossround-trip min/avg/max = 32.479/32.479/32.479 ms
最後
0-4是我在個人環境搭建OpenStack的一些經驗,對於沒有翻牆捷徑的朋友,或許有一定的幫助。5-6就是一個簡單的OpenStack安裝和使用。如果你想了解OpenStack,或者想使用OpenStack,我相信本文是一個好的上手的方法。
推薦閱讀:
※關於openstack的部署架構的一點兒疑問?
※哪裡有Openstack入門到精通視頻教程下載?
※準備學習 OpenStack,眾位大神有哪些教材推薦和經驗傳授?