系統要求
ubuntu 16.04
一定要注意使用ubuntu 16.04系統,其他系統會出現各種莫名其妙的不兼容問題。。。
另外,磁盤存儲空間儘量大些!!!否則,隨便生成幾個實例就沒空間。
更換apt源
修改/etc/apt/sources.lis t文件,改成阿里雲
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
更新apt-get update
安裝python2.7以及pip
apt-get install python python-pip
修改【超級用戶】的 pip源:
sudo -i #進入超級用戶
vim ~/.pip/pip.conf
內容如下:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = https://mirrors.aliyun.com/pypi/simple/
安裝proxychains設置代理
安裝的中途,openstack需要去亞馬遜下載若干個安裝包,考慮到可能需要fq ,現在設置好全局代理來。
安裝proxychains
apt-get install proxychains
修改proxychains的腳本源碼,因爲這個版本的會報錯:
vim /usr/bin/proxychains
把export LD_PRELOAD=libproxychains.so.3
改成 export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libproxychains.so.3
開啓socks5代理端口
使用ssh或ss客戶端開啓一個可以fq的代理端口。
例如,如果你有一個主機的ss客戶端的本地代理端口爲 ip: 1080,那麼這個1080也可以被用來作爲proxychains的代理端口。
當然,你也可以使用ssh隧道來實現這一點,假設你有一臺在【美國】的主機,它的ip爲xxx.yyy.zzz.qqq。
那麼你可以這樣:ssh -D 127.0.0.1:1080 [email protected]
,這樣也一樣在本機開啓一個socks5的本地代理端口。
設置proxychains的配置文件
vim /etc/proxychains.conf
把DNS代理關掉
同時設置socks5的代理端口
後面跟的就是你的socks5 端口的所在的ip和端口信息。
拉取devstack代碼
sudo apt-get install git proxychains
proxychains git clone https://git.openstack.org/openstack-dev/devstack -b stable/queens
創建stack賬戶
sudo devstack/tools/create-stack-user.sh
將devstack目錄放到/opt/stack中並設置權限
sudo mv devstack /opt/stack
sudo chown -R stack:stack /opt/stack
切換到stack用戶
sudo su - stack
同樣的給stack賬戶也設置阿里雲的pip源:
sudo su - stack
mkdir ~/.pip/
vim ~/.pip/pip.conf
把阿里雲源貼上去:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = https://mirrors.aliyun.com/pypi/simple/
編譯安裝
配置文件
準備配置文件:
sudo su - stack
cd devstack
cp samples/local.conf ./
cp samples/local.sh ./
修改配置文件:
vim local.conf
內容:
- 修改密碼:全部改成統一的secret
- 在末尾追加:
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
安裝
OK,安裝:
proxychains ./stack.sh
等就完事了,注意如果安裝的特別耗時,注意看看pip源和apt源有沒有設置正確並生效。
如果不設置阿里雲的pip源,安裝會巨慢;
如果不設置代理,在安裝某些關鍵包可能失敗。
可能的報錯
-
安裝報錯:E: Unable to locate package libsystemd-dev。 方法:使用ubuntu 16.04系統走這個教程。
-
configure: error: *** POSIX caps library not found 。方法:換16.04 系統安裝
-
Syntax Error: EOF while scanning triple-quoted string literal 。。。。方法:這個問題,一般是在安裝pip包的時候,被用戶強行中斷pip的下載或安裝過程,導致包才下載一半。解決方法是根據日誌找出正在安裝什麼pip包,手動清空pip的緩存,然後再使用pip install xxx安裝這個包,然後重新執行
proxychains ./stack.sh
-
df : /mnt/hgfs : Protocol Error,系統中有未正確掛載的hgfs設備,把它卸載掉就行。
sudo umount /mnt/hgfs
-
def _collate(*iterables, key=lambda a: a, reverse=False):
^
SyntaxError: invalid syntax 方法:pip install more_itertools==4.0.0
-
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) 方法:不使用proxychains 重啓一次stack.sh即可。
-
More than one SecurityGroup exists with the name ‘default’ .不用管,這個問題不大。
-
Error: Failed to perform requested operation on instance “vm1”, the instance has an error status: Please try again later [Error: Host ‘ccrfox105’ is not mapped to any cell]. 說主機名沒有映射到任何的節點。 解決方法:執行:
nova-manage cell_v2 discover_hosts
設置網絡
stack.sh執行完畢後,訪問dashboard. http://172.16.30.174/dashboard ,IP是剛剛執行stack.sh的主機地址。
添加私有網絡
設置網絡名稱
設置子網
配置路由
點擊網絡拓撲,選擇public的一個路由器。
添加接口
選擇子網
選完以後就OK啦,可以看到public和private連在一起了。
配置安全組
所有的虛擬機的默認安全組在啓動的時候都會阻止所有外來的連接。我們需要添加新的安全組。
輸入好名稱,然後點擊“管理規則”,再點擊添加規則。
添加四條規則:
所有TCP的出入連接,所有ICMP的出入連接。
添加Centos鏡像
去 http://cloud.centos.org/centos/7/images/ 選擇一個想要的centos鏡像。
我選擇的是 CentOS-7-x86_64-GenericCloud-1907.qcow2c ,它是qemu的鏡像。
我們想先把鏡像下載到本地,然後通過dashboard上傳鏡像。
創建鏡像,填好就行。
等待一段時間,上傳完畢後,就可以從鏡像中創建實例了。
創建Centos 7 實例
設置個名稱
選擇創建的鏡像源,
也就是剛剛上傳的Centos 7.
選擇配置
選擇所屬的網絡
選擇安全組
選擇剛剛設置好的TCP/ICMP全通的安全組。
選擇密鑰對
在此刻配置密鑰對,可以在後面首次登陸的時候直接使用ssh私鑰登錄,而不用輸入密碼。
點擊創建密鑰對,然後選擇這個新建的密鑰對。在創建的同時,dashboard會主動讓你下載好私鑰文件xxx.pem,這個就是在ssh登錄的時候用的。
OK 創建一波
創建中。。。。
創建完畢:::
可以看到,此時新建立的虛擬機只有私有IP 10.0.0.92 ,需要綁定一個外部可以訪問的IP,x
選擇動作:綁定浮動IP.
選擇外部IP資源池,點擊“分配IP”
可以看到,分配了一個172.24.4.5 的外部IP,點擊“關聯”。
此時,就可以看到剛剛的Centos JM虛擬機有兩個IP啦。
對於公有云來說,當外部IP資源池改成他自己的外網IP池的時候,就實現了外網IP的分配了。
登錄一波
在執行stack.sh的那個主機,執行ssh登錄。
先Ping一下,看網絡是否連通:
發現沒毛病,ssh登錄一波:
發現報錯,得用centos用戶名登錄
再次登錄:ssh [email protected] -i /home/dk/dk-keys.pem
-i 後面跟的就是剛剛設置的密鑰對的私鑰文件。
發現登錄成功!!!使用ifconfig,可以看到就是Centos JM的私網IP。
參考資料
- Ubuntu16安裝OpenStack https://www.jianshu.com/p/d4e91feceb05
- 優雅安裝OpenStack https://zhuanlan.zhihu.com/p/28996062