ansible 安裝 AIO OpenStack


環境

通過OpenStack-Ansible安裝All-in-one (AIO) 用於:

  • 開發環境
  • 理解OpenStack服務是如何組合在一起的
  • 一個簡單的實驗環境

盡管這種方式不適合在生產部署,但是比較適合實驗開發環境。

最小配置:

  • 8 vCPU’s
  • 50GB root部分
  • 8GB RAM

推薦的服務器配置:

  • CPU/主板 支持硬件輔助虛擬化
  • 8核心CPU
  • 80G root空間,或者60G空盤。如果使用第二塊盤,需要配置bootstrap_host_data_disk_device參數。
  • 16GB 內存

可以在虛機中進行AIO安裝進行,但是如果你的虛機不支持嵌套虛擬化的話,性能將會很差。如果是生產環境,推薦使每個角色進行多節點部署。

創建一個AIO

概述

下面是創建AIO的步驟,如果要自定義構建,則需要配置好第一步:

  1. 准備主機環境
  2. ansible 啟動腳本和所需的roles
  3. AIO配置的啟動腳本
  4. 運行Playbook

准備主機環境

當在一個新服務器上創建AIO版本的時候,建議升級系統包到最新版本,並且重啟到新內核。

注:

  1. 使用root權限運行
  2. 在重啟之前,確保SELINUX處於關閉。/etc/sysconfig/selinux應該被置為SELINUX=disabled。CentOS/RHEL中OpenStack-Ansible目前不支持SELinux。
  3. 如果你是在連接受限的情況下安裝,需要看一下連接受限情況的相關手冊再繼續。
## Ubuntu / Debian
# apt-get update
# apt-get dist-upgrade
# reboot
## CentOS
# dnf upgrade
# dnf install git-core
# systemctl stop firewalld
# systemctl mask firewalld
# reboot

Ansible啟動腳本和需要的角色

復制OpenStack-Ansiblerepo並且切換到gen種方式不適合在生產部署,但是比較適合實驗開發環境。

最小配置:

  • 8 vCPU’s
  • 50GB root部分
  • 8GB RAM

推薦的服務器配置:

  • CPU/主板 支持硬件輔助虛擬化
  • 8核心CPU
  • 80G root空間,或者60G空盤。如果使用第二塊盤,需要配置bootstrap_host_data_disk_device參數。
  • 16GB 內存

可以在虛機中進行AIO安裝進行,但是如果你的虛機不支持嵌套虛擬化的話,性能將會很差。如果是生產環境,推薦使每個角色進行多節點部署。

創建一個AIO

概述

下面是創建AIO的步驟,如果要自定義構建,則需要配置好第一步:

  1. 准備主機環境
  2. ansible 啟動腳本和所需的roles
  3. AIO配置的啟動腳本
  4. 運行Playbook

准備主機環境

當在一個新服務器上創建AIO版本的時候,建議升級系統包到最新版本,並且重啟到新內核。

注:

  1. 使用root權限運行
  2. 在重啟之前,確保SELINUX處於關閉。/etc/sysconfig/selinux應該被置為SELINUX=disabled。CentOS/RHEL中OpenStack-Ansible目前不支持SELinux。
  3. 如果你是在連接受限的情況下安裝,需要看一下連接受限情況的相關手冊再繼續。
## Ubuntu / Debian
# apt-get update
# apt-get dist-upgrade
# reboot
## CentOS
# dnf upgrade
# dnf install git-core
# systemctl stop firewalld
# systemctl mask firewalld
# reboot

Ansible啟動腳本和需要的角色

復制OpenStack-Ansiblerepo並且切換到repo的根目錄。

# git clone https://opendev.org/openstack/openstack-ansible \
    /opt/openstack-ansible
# cd /opt/openstack-ansible

下一步切換到要部署的適用的branch/tag中。從一個分支的head進行部署可能會導致安裝有問題。如果是用於測試,最好先使用最新的標記的版本。

# # 列出所有目前的標簽.
# git tag -l

## 找出穩定分支和最新標簽
# git chec kout master
# git describe --abbrev=0 --tags

# # 取回最新標簽
# git checkout master

注:Wallaby版本只和Debian 10 (buster), Ubuntu 18.04 (Bionic Beaver), Ubuntu 20.04 (Focal Fossa) 還有CentOS 8兼容。目前無法在CentOS Stream上安裝.許多關鍵依賴項來自於EPEL資源庫,並且不能用於CentOS Stream主機. 注意一下在CentOS 8上部署的生命周期問題。

下一步就是使用ansible啟動腳本和roles來搭建環境。

注:執行前請先配置好NTP時鍾同步,否則后面會有https證書的報錯。

運行以下ansible啟動腳本和所需的roles:

# scripts/bootstrap-ansible.sh

注:你在使用ANSIBLE腳本構建PYTHON擴展功能的時候(例如pycrypto),可能會遇到以下報錯:

configure: error: cannot run C compiled programs.

原因可能在於是由於與/tmp關聯的文件系統使用了noexec掛載標志,可以通過運行以下命令來檢查該標志:

# mount | grep $(df /tmp | tail -n +2 | awk '{print $1}') | grep noexec

你也可以指定一個沒有此掛載選項的備用路徑:

# TMPDIR=/var/tmp scripts/bootstrap-ansible.sh

啟動AIO配置

為了使所有服務啟動,主機必須要配置適當的磁盤分區,安裝包,網絡配置和OpenStack開發配置。
默認AIO啟動腳本會以一些默認的配置值去部署一些列的OpenStack服務,以滿足一些環境要求和構建開發測試系統。可以查看bootstrap-host role defaults默認文件來了解一些變量的配置。開發人員可以選擇更改引導方式。當你希望AIO使用第二塊磁盤或者使用相同roles去啟動多節點的開發環境時,這些信息將很有用。

啟動腳本已經將環境變量BOOTSTRAP_OPTS作為一個附加選項傳遞給啟動進程中。比如,如果你希望將啟動腳本在第二塊盤(/dev/sdb)上進行重分區,可以執行以下命令,這也將會導致設備上的數據被擦除:

# export BOOTSTRAP_OPTS="bootstrap_host_data_disk_device=sdb"

其他的選項都可以通過空格簡單的連接起來執行,比如:

# export BOOTSTRAP_OPTS="bootstrap_host_data_disk_device=sdb"
# export BOOTSTRAP_OPTS="${BOOTSTRAP_OPTS} bootstrap_host_data_disk_fs_type=xfs"

如果你安裝時沒有網絡連接或者沒有默認路由,你需要手動指定一個接口或者出向的連接。

# export BOOTSTRAP_OPTS="bootstrap_host_public_interface=eth1"

對於默認的AIO方案,可以通過執行以下命令進行配置:

# scripts/bootstrap-aio.sh

在合適的bootstrap-aio默認服務之上添加OpenStack服務,可以復制以.aio為擴展名的conf.d文件到/etc/openstack_deploy中,然后將擴展名改為.yml文件。例如要啟動openstack的Telemetry服務:

# cd /opt/openstack-ansible/
# cp etc/openstack_deploy/conf.d/{aodh,gnocchi,ceilometer}.yml.aio /etc/openstack_deploy/conf.d/
# for f in $(ls -1 /etc/openstack_deploy/conf.d/*.aio); do mv -v ${f} ${f%.*}; done

可以在運行啟動腳本和運行前更改這些SCENARIO環境變量。關鍵詞aio會確保一系列基礎OPENSTACK配置會被部署(cinder塊存儲, glance鏡像服務, horizon面板, neutron網絡服務, nova計算服務)。關鍵詞lxcnspawn能夠被用於設置容器后端,而關鍵詞metal會在沒有容器的情況下部署所有的服務。為了部署其他的服務,請將conf.d文件的名字(去掉.yml.aio擴展名)添加到SCENARIO環境變量中。每個關鍵字都應該用下划線限定,以下命令會實施一個帶有barbican(key管理服務), cinder, glance, horizon, neutron, 和nova的AIO。它將會設置cinder存儲后端為ceph並且會使用LXC作為容器后端。

# export SCENARIO='aio_lxc_barbican_ceph'
# scripts/bootstrap-aio.sh

注:如果metalaio關鍵詞在一起使用的話,horizon不會被部署,因為haproxy和horizon的監聽端口是沖突的。

如果要在默認配置基礎上添加其他更適用的global overrides,需要編輯/etc/openstack_deploy/user_variables.yml的內容。為了了解可以替換roles,playbook和組變量中列出的默認值的各種方法,請參閱override默認配置
如果想用個性化配置而不是使用AIO引導程序,詳細說明請參閱《 Deployment Guide 》

運行Playbook

最后,運行Playbook

# cd /opt/openstack-ansible/playbooks
# openstack-ansible setup-hosts.yml
# openstack-ansible setup-infrastructure.yml
# openstack-ansible setup-openstack.yml

這個安裝過程可能需要一些時間,下面是正常情況下的時間消耗:

  • SSD盤的裸金屬系統 ~ 30-50 分鍾
  • SSD盤的虛擬機 ~ 45-60分鍾
  • 機械盤的主機 ~ 90-120分鍾
    一旦playbooks全部執行完畢,可以嘗試在/etc/openstack_deploy/user_variables.yml中進行各種設置更改,並且只需要運行這一個playbook。
    例如,通過playbook運行keystone服務:
# cd /opt/openstack-ansible/playbooks
# openstack-ansible os-keystone-install.yml

重啟AIO

由於AIO包括MariaDB/Galera的所有三個集群成員,因此在重新引導主機后必須重新初始化集群。
命令:

# cd /opt/openstack-ansible/playbooks
# openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml

如果數據庫集群啟動失敗,請查看Galera Cluster Recovery手冊。

重建一個AIO

有時候需要刪除所有容器重建AIO。但是一般無法完整地摧毀AIO。可以執行以下命令:

# # 移動到playbooks目錄.
# cd /opt/openstack-ansible/playbooks

# # 摧毀所有容器
# openstack-ansible lxc-containers-destroy.yml

# # 停止所有本地不在容器里的服務
# for i in \
       $(ls /etc/init \
         | grep -e "nova\|swift\|neutron\|cinder" \
         | awk -F'.' '{print $1}'); do \
    service $i stop; \
  done

# # 卸載核心服務.
# for i in $(pip freeze | grep -e "nova\|neutron\|keystone\|swift\|cinder"); do \
    pip uninstall -y $i; done

# # 刪除其余目錄
# rm -rf /openstack /etc/{neutron,nova,swift,cinder} \
         /var/log/{neutron,nova,swift,cinder}

# # 刪除PIP配置文件
# rm -rf /root/.pip

# # 移除APT包管理
# rm /etc/apt/apt.conf.d/00apt-cacher-proxy

刪除AIO最好的方式就是重新安裝系統,所以最好在虛擬機中或者雲環境中創建。

AIO參考圖里

這里有個基礎圖示去嘗試展示AIO部署。
此圖未按比例繪制,甚至沒有100%准確,該圖僅出於提供信息的目的而構建,僅供參考。


          ------->[ ETH0 == Public Network ]
          |
          V                        [  *   ] Socket Connections
[ HOST MACHINE ]                   [ <>v^ ] Network Connections
  *       ^  *
  |       |  |-------------------------------------------------------
  |       |                                                         |
  |       |---------------->[ HAProxy ]                             |
  |                                 ^                               |
  |                                 |                               |
  |                                 V                               |
  |                          (BR-Interfaces)<------                 |
  |                                  ^     *      |                 |
  *-[ LXC ]*--*----------------------|-----|------|----|            |
  |           |                      |     |      |  | |            |
  |           |                      |     |      |  | |            |
  |           |                      |     |      |  | |            |
  |           |                      |     |      V  * |            |
  |           *                      |     |   [ Galera x3 ]        |
  |        [ Memcached ]<------------|     |           |            |
  *-------*[ Rsyslog ]<--------------|--|  |           *            |
  |        [ Repos Server x3 ]<------|  ---|-->[ RabbitMQ x3 ]      |
  |        [ Horizon x2 ]<-----------|  |  |                        |
  |        [ Nova api ec2 ]<---------|--|  |                        |
  |        [ Nova api os ]<----------|->|  |                        |
  |        [ Nova console ]<---------|  |  |                        |
  |        [ Nova Cert ]<------------|->|  |                        |
  |        [ Cinder api ]<-----------|->|  |                        |
  |        [ Glance api ]<-----------|->|  |                        |
  |        [ Heat apis ]<------------|->|  | [ Loop back devices ]*-*
  |        [ Heat engine ]<----------|->|  |    \        \          |
  | ------>[ Nova api metadata ]     |  |  |    { LVM }  { XFS x3 } |
  | |      [ Nova conductor ]<-------|  |  |       *         *      |
  | |----->[ Nova scheduler ]--------|->|  |       |         |      |
  | |      [ Keystone x3 ]<----------|->|  |       |         |      |
  | | |--->[ Neutron agents ]*-------|--|---------------------------*
  | | |    [ Neutron server ]<-------|->|          |         |      |
  | | | |->[ Swift proxy ]<-----------  |          |         |      |
  *-|-|-|-*[ Cinder volume ]*----------------------*         |      |
  | | | |                               |                    |      |
  | | | -----------------------------------------            |      |
  | | ----------------------------------------- |            |      |
  | |          -------------------------|     | |            |      |
  | |          |                              | |            |      |
  | |          V                              | |            *      |
  ---->[ Compute ]*[ Neutron linuxbridge ]<---| |->[ Swift storage ]-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM