1. 定义主机
在部署overcloud的过程中,我们一定有很多需要自定义的地方。那么TripleO是如何实现自定义参数部署的呢?我们通过下面几个章节一一说明。
1.1 分配节点
在默认部署的情况下,tripleO 会从 ironic 中拥有的同一tag的node中任意挑选一台,这会导致ironic node-list 显示的主机与nova list 显示的主机编号不一致。可以通过为每个ironic node分配properties/capabilities
属性来解决。
首先,为每个类型的node添加tag,例如第一台controller打上node:contoller-0 的tag,第二台controller 打上node:contoller-1的tag,以此类推。
ironic node-update <id> replace properties/capabilities='node:controller-0,boot_option:local'
ironic node-update <id> replace properties/capabilities='node:controller-1,boot_option:local'
...
ironic node-update <id> replace properties/capabilities='node:compute-0,boot_option:local'
ironic node-update <id> replace properties/capabilities='node:compute-1,boot_option:local'
...
ironic node-update <id> replace properties/capabilities='node:ceph-storage-0,boot_option:local'
ironic node-update <id> replace properties/capabilities='node:ceph-storage-1,boot_option:local'
...
一句话命令可以这样写
list=(`ironic node-list|grep control|awk '{print $2}'`);for i in {0..2};do ironic node-update ${list[$i]} replace properties/capabilities="node:controller-$i,boot_option:local";done
在templates/environment 目录中创建scheduler_hints_env.yaml
:
scheduler_hints_env.yaml
parameter_defaults:
ControllerSchedulerHints:
'capabilities:node': 'controller-%index%'
NovaComputeSchedulerHints:
'capabilities:node': 'compute-%index%'
CephStorageSchedulerHints:
'capabilities:node': 'ceph-storage-%index%'
在部署时使用这个Environment File,同时每个节点的flavor要选择baremetal。
openstack overcloud deploy --template ....
-e scheduler_hints_env.yaml \
--control-flavor baremetal \
--compute-flavor baremetal \
--ceph-storage-flavor baremetal
...
一共有这些Hints可以选择。
ControllerSchedulerHints for Controller nodes.
NovaComputeSchedulerHints for Compute nodes.
BlockStorageSchedulerHints for Block Storage nodes.
ObjectStorageSchedulerHints for Object Storage nodes.
CephStorageSchedulerHints for Ceph Storage nodes.
[ROLE]SchedulerHints for custom roles. Replace [ROLE] with the role name.
1.2 分配主机名
结合1.1 分配节点ID,还可以自定义每个节点的主机名。
scheduler_hints_env.yaml
parameter_defaults:
ControllerSchedulerHints:
'capabilities:node': 'controller-%index%'
NovaComputeSchedulerHints:
'capabilities:node': 'compute-%index%'
CephStorageSchedulerHints:
'capabilities:node': 'ceph-storage-%index%'
HostnameMap:
overcloud-controller-0: overcloud-controller-rack1-row1
overcloud-controller-1: overcloud-controller-rack1-row2
overcloud-controller-2: overcloud-controller-rack1-row3
overcloud-compute-0: overcloud-compute-rack2-row1
overcloud-compute-1: overcloud-compute-rack2-row2
overcloud-compute-2: overcloud-compute-rack2-row3
overcloud-ceph-storage-0: overcloud-ceph-rack3-row1
...
同样的,在部署时,不要忘了附加 scheduler_hints_env.yaml
。
openstack overcloud deploy --template ....
-e scheduler_hints_env.yaml \
--control-flavor baremetal \
--compute-flavor baremetal \
--ceph-storage-flavor baremetal
···
1.3 自定义Role
overcloud 是由一系列角色组成的,比如controller、compute、Storage。每个默认角色都是在TripleO Heat Template 核心代码中定义的一组service。但是 TripleO Heat Template 还可以支持:
- 创建自定义role
- 从role 中添加或移除 service
这篇文章描述了如何自定义role、组合service。