在 Kolla-Ansible 使用 Custom Config

Kolla Mascot

上篇文章介紹了 Kolla 跟 Kolla-Ansible 部署 OpenStack 的方法。在設定的部分全部都是在 globals.yml 中設定,其他則交由 Kolla-Ansible 中的 template 處理。不過這樣的方式不免在部署中顯得稍失彈性,無法根據特殊環境做客製化,於是就誕生出了 config override 的方式來進行 custom config 的設定。本篇文章將會介紹如何使用 config override 來更改 Kolla-Ansible 部署 OpenStack 的設定檔。

設定方法

同樣在 globals.yml 中我們可以找到一行設定 config overrides 檔案的資料夾。預設值是 /etc/kolla/config ,可以更改為自己想要的資料夾。

# Location of configuration overrides
#node_custom_config: "/etc/kolla/config"

Kolla-Ansible 會在尋找在 /etc/kolla/config/<< 服務名稱 >>/<< 設定檔 >> 的檔案。設定檔 override 基本上可以 override 整個 OpenStack project (e.g. Nova)、OpenStack service (e.g. nova-api)、或是在特定 host 上的 service (e.g. nova-api on controller02),在使用上非常有彈性。

另外如果要對所有 service 的設定做 override,Kolla-Ansible 會尋找 /etc/kolla/config/global.conf 這個檔案。

設定範例

如果想要在 OpenStack 上的 Virtual Machine 啟用巢狀虛擬化,我們需要將 libvirt 參數中 cpu_mode 設定為 host-passthrou
此時就會需要新建 /etc/kolla/config/nova/nova-compute.conf 後寫入以下兩行:

[libvirt]
cpu_mode=host-passthrough

若想要在 compute01 這個主機上更改 CPU 跟 RAM 的 allocation ratio,就會建立 /etc/kolla/config/nova/compute01/nova-compute.conf 並寫入:

[DEFAULT]
cpu_allocation_ratio = 16.0
ram_allocation_ratio = 2.0

最後如果想要更改所有 service 的 database pool size connection,就會新建一個 /etc/kolla/config/global.conf 檔案並寫入

[database]
max_pool_size = 100

Policy 設定

policy.json 的設定方式相對一般 service 的設定檔稍微不一樣,需要將完整的 policy 檔案都放在那個 project 的資料夾下。Kolla-Ansible 會使用那個檔案 overrite 原本預設的 policy.json 檔案。

例如若想要 override Neutron 的 policy.json,部署者需要從 Neutron 原始碼中將完整的 policy.json 拿下來,修改後並放到 /etc/kolla/config/neutron/policy.json 下。

部署後更改設定

Kolla-Ansible 在已經部署完成的 OpenStack cluster 要更改設定也非常容易,只需要下:

kolla-ansible reconfigure

就會將更改的設定檔部署至環境並且重新啟動相對應的 container。

結論

透過 config override 的方式,operator 可以很容易的針對各個 service 甚至 host 上的特定 service 做設定檔的調整。這讓使用 Kolla-Ansible 部署 OpenStack 更有彈性,能夠針對各個部署的需求進行客製化的部署。

Reference

Kolla-Ansible Advanced Configuration


Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.