Kolla-ansible 安裝 OpenStack

  • Kolla: 將 OpenStack 各個專案包成 docker image

  • Kolla-ansible: 將 OpenStack 各個專案包成 docker image,部署至節點上,也就是 OpenStack所有服務都在 container 內執行。

  • 此篇內容參考郭靖大大的文章: https://igene.tw/kolla-ansible-deploy

前置準備

  • 準備節點,這範例準備了8台

    • 1台部屬節點,即 kolla-ansible執行的節點

    • 3台controller

    • 3台compute

    • 1台monitor

hosname

外部網段

VM和管理網段

儲存網段

Neutron 外網網段

ens3

ens9

ens10

ens11

controller1

10.50.2.4

192.168.2.4

192.168.4.4

controller2

10.50.2.5

192.168.2.5

192.168.4.5

controller3

10.50.2.6

192.168.2.6

192.168.4.6

compute1 (ceph-osd1)

10.50.2.7

192.168.2.7

192.168.4.7

compute2 (ceph-osd2)

10.50.2.8

192.168.2.8

192.168.4.8

compute3 (ceph-osd3)

10.50.2.13

192.168.2.13

192.168.4.13

monitor

10.50.2.14

192.168.2.14

192.168.4.14

  • 網卡數量,最少兩張,此範例為4張

    • 外部網段: ens3

    • Neutron 外網: ens11

    • VM、管理網段: ens9

    • 儲存網段: ens10

  • 佈署節點需要無密碼登入各節點,可以使用ssh-copy-id 輸入公鑰至各節點

  • Kolla-ansible 也可以佈署 ceph,如果要佈署 ceph,請到 ceph-osd 的節點,輸入以下指令: ($DISK 為你的osd硬碟 例如:/dev/vdb)

  • Kolla-ansible 會幫你安裝 docker,但是版本是舊的,如果你想要裝新版 docker,可以自行到各節點安裝 docker

各節點準備

  • 設定好各網卡 IP

  • 設定好 hostname

  • Neutron 外網的網卡請不要設定IP,此範例ens11為Neutron 外網,因此設定為

Kolla-ansible 佈署節點準備

  • 請在 /etc/hosts 自行填入其他節點的 hostname 和 IP,以便使用hostname。

  • 安裝 pip, ansible

  • 安裝相關套件

  • 新增/etc/ansible/資料夾

  • 新增/etc/ansible/ansible.cfg檔案,內容如下:

  • 從github clone kolla-ansible,安裝所需套件

  • 複製kolla設定檔至/etc/kolla/

  • 複製 inventory 檔案至家目錄

  • 編輯 /etc/kolla/globals.yml,裡面可以設定環境

globals.yml 參數說明

kolla Options

  • kolla base distro: image的基底作業系統這裡使用ubuntu

  • kolla install type: OpenStack 安裝的來源,有binary 跟 source 可選

  • openstack release: OpenStack版本

  • kolla internal vip address: OpenStack 內部溝通的VIP,也是HA環境時keepalived所使用的IP

  • kolla external vip address: OpenStack 外部溝通的VIP,也就是 endpoint 的 public url的 IP

  • Neutron - Networking Options

    • API interface: OpenStack 各 component 溝通的網路

    • External VIP Interface: OpenStack Public 的 endpoint

    • Storage Interface: OpenStack VM 和 Ceph 溝通的網路

    • Tunnel Interface: OpenStack VM之間的溝通網路

    • Neutron External Interface: VM 連接對外網路的 interface,為Floating IP的網路,不能與其他人共用也不能設IP

    預設 network_interface 的值, 這個{{ network_interface }}值, 就會等於你所填的network_interface, 也就是說,ansible會把 變數解析為 ens9

根據範例的網段設定如下

OpenStack options: 根據需求啟用OpenStack各種服務,被註解的部分就是預設值,此範例額外啟用ceph,然而有關儲存的服務,像是 glance 和 cinder 等等,都要啟用 backend 為 ceph

如果要啟用 ceilometer,請將 ceilometer、gnocchi、redis開啟

Ansible Inventory 設定說明

Inventory 檔案可以設定 OpenStack 的主機和角色,此範例為: 3台 controller、3台 compute、compute 包含 OSD,1台 monitor。

編輯 ~/multinode

  • ansible ssh user: ansible要使用哪個 user ssh 登入

  • ansible become pass: ansible ssh 進入後,要使用 sudo 指令時的密碼

佈署 OpenStack

  • 產生OpenStack所需的密碼,產出的檔案在/etc/kolla/passwords.yml

  • 產出後,可以根據喜好更改密碼,若想要自訂 horizon 的 admin 登入密碼,請修改keystone admin password

  • 執行 bootstrap-servers,kolla-ansible會至各節點安裝設定所需的套件,像是docker

  • 執行 prechecks ,會檢查所需的 IP 和 port 是否可以使用等等

  • 執行 deploy,佈署 OpenStack

  • 完成後,可至瀏覽器輸入 kolla internal vip_address 或 kolla external vip address,登入OpenStack

  • 請查看 /var/log/kolla/gnocchi/gnocchi-metricd.log 如果有錯誤是關於 not 'NoneType' 請隨意進入一個 gnocchi 的容器,輸入以下指令

Last updated

Was this helpful?