1. 程式人生 > >自動化部署openstack

自動化部署openstack

   這篇文章主要是通過基於devstack進行自動化部署,後續會通過解析這個部署指令碼的原始碼的形式,學習openstack的部署,同時一步步閱讀openstack其他服務的原始碼,比如keystone、nvoa等,一步步深入。學習這個框架個人覺得,閱讀原始碼比看大牛經過二次提取之後的含金量大的多。

自動化部署和手動部署的區別
事實上手動部署和自動化部署在命令上沒啥區別,如果對自動化部署軟體的原始碼熟悉,其實收穫更大,進過這次部署,對devstack指令碼的架構流程有一定的熟悉,其中有一些感覺不夠完善,後續會提供自己的修改後的程式碼,拋磚引玉。

自動化部署原理

自動執行安裝指令碼:將安裝命令指令碼化—>
自動生成配置檔案:生成正確的配置引數—>
自動解決依賴關係:安裝依賴的軟體包&服務的安裝順序
(理解自動化部署的思路,以便後續自己編寫自動化部署指令碼)
分析軟體的架構特點
devstack架構分佈圖

devstack 下載

  • 代理問題
    git一般通過兩種協議實現傳輸:http(https)和ssh
    有些公司會通過代理伺服器上網,代理伺服器通常只會允許http協議
    注:具體參見《ubuntu git http proxy配置 》
    我是建議一定要在乾淨的系統中學習,VMware workstation Pro 12中安裝ubuntu 14.04,配置VT-x&AMD-V、Virtual CPU等功能。此外在安裝系統的時候,時區定位在United States,之前定位在chongqing結果還需要設定代理,然後在修改配置的時候有些地方忘記修改,結果導致安裝失敗,主要是用於學習,所以儘量在原生系統中配置,不要過多的增加人為的配置,這個架構感覺挺複雜的,所以還是一步步來學吧~

devstack架構淺析

devstack結構

  • stack.sh ->自動化部署的入口 ->.exe檔案
  • unstack.sh ->解除安裝指令碼,也是用來關閉這個軟體
  • localrc ->配置檔案 -> 傳入stack.sh的引數。裡面規定了nova的密碼,admin賬號、mysql的密碼,安裝的時候會統一從這裡獲取配置資訊
    檔案下載
  • openrc -> 環境變數指令碼
    • 在執行openstack命令時要匯入一些環境變數
    • export OS_USERNAME = admin
  • lib->每個服務的自動化安裝指令碼
    • nova,swift等自動化安裝指令碼
    • 手動安裝時執行的所有命令
    • 每一個openstack服務對應一個檔案
      lib檔案
      分別對應的是各種服務的部署指令碼,介紹一下其中一部分服務
  • database、databases:openstack資料庫服務的資料庫服務的部署指令碼
    • postgresql/mysql預設使用mysql
  • nova、nova_plugins
    • functions-libvirt hypervisor-baremetal hypervisor-fake hypervisor-ironic hypervisor-libvirt hypervisor-openvz hypervisor-vsphere hypervisor-xenserver
  • tempest單元測試框架

devstack執行原理

stack.sh判斷localrc是否存在,如果是則進入配置模式,否則進行互動模式

互動模式是需要根據自身需求向stack.sh輸入相關的服務指令,如mysql的密碼、roken引數等資訊
配置模式的話,就是根據localrc配置好的引數進行自動化安裝,並部署,下面介紹localrc的指令資訊

下面是針對localrc檔案中的引數進行介紹

DATABASE_PASSWORD=123456 # 配置資料庫的密碼,預設是mysql,如果想安裝postgresql則需要修改DATABASE_TYPE=postgresql
ADMIN_PASSWORD=123456 # 管理員密碼 
SERVICE_PASSWORD=123456 
SERVICE_TOKEN=123456 # token資訊,每次請求都要帶著否則會被拒絕 
RABBIT_PASSWORD=123456 # rabbit MQ密碼

reclone=true # 這個配置之後會重新下載各個服務的原始碼,如果檢測到哪個服務的原始碼不對的話,將會重新下載

接下來是配置devstack的openstack日誌檔案的儲存位置

DEST=/home/stack 
LOGFILE=$DEST/logs/stack.sh.log 
VERBOSE=True 
LOG_COLOR=True 
SCREEN_LOGDIR=$DEST/logs 

需要部署的服務直接寫在這兒就行,然後我在部署的時候稍微修改了一下檔案,目的是增加一些服務以便後續的學習,當然了,你可以自便修改相關引數

VIF_PLUGGING_IS_FATAL=False
VIF_PLUGGING_TIMEOUT=10

上面兩個是用來解決openstack部署vxlan時的一個bug。
如果映象檔案損壞,建議進行修改

IMAGE_URLS+=", http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img"

這些就是我的一些配置的建議,僅供參考
之後就是儲存檔案,再執行即可./stack.sh

詳細的部署教程看下一篇