配置变更
!通过 tripleO 进行配置变更存在一定风险,是否要按照这一方法进行配置管理有待商榷
当我们完成了一套 overcloud 的部署之后,在日常运维以及使用的过程中,难免会遇到需要对平台中部分配置项做出变更的操作,在 Red Hat 官方文档中有针对这部分内容的简单介绍,链接如下:
变更的操作与安装的操作过程非常相似,我们只需要修改相应部分的 environment 文件和 Heat templates,之后和再执行一次和安装时一样的 openstack overcloud deploy,heat 将会去检查已经创建好的 overcloud 所对应的 stack,并且修改相应的内容。如果我们希望修改过程可追溯,或者加入更多的内容的时候,可以在 deploy 的命令后追加 -e 选项,来 involve 更多的配置文件。
官方并不建议手工去修改 overcloud 的配置文件,因为修改的内容在后续的 deploy 中可能会被覆盖
每一次的配置修改,都会导致全过程的遍历,所以推荐做大范围大面积的批量变更,尽量减少针对少数节点少数配置项的变更
变更示例
我们将以一个简单的情形做出示例,让大家了解通过 tripleO 对 overcloud 集群做出变更的方法的步骤。
假设在一套已经安装完成的集群中,我们希望对 nova 服务做出修改,希望将 debug 模式打开,翻译成正常人的语言也就是我们希望在配置文件 nova.conf 中加入一行 debug = True。
通过查找,我们在 undercloud 中找到了如下文件:
/usr/share/openstack-tripleo-heat-templates/puppet/services/nova-base.yaml
并进一步在文件中找到了这样的内容:
Debug:
type: string
default: ''
description: Set to True to enable debugging on all services.
...
- {get_param: [EndpointMap, MysqlInternal, host]}
- '/nova_api'
nova::debug: {get_param: Debug}
nova::purge_config: {get_param: EnableConfigPurge}
nova::network::neutron::neutron_project_name: 'service'
所以 debug 这个选项是作为参数传入的,与此对应的另一种形式如下:
nova::rabbit_heartbeat_timeout_threshold: 60
nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
所以这两个配置项并不是参数传入,而是直接赋值。
那么针对参数类型所管理的配置进行修改就相对来说较为容易,找到相应的参数,执行 deploy 的命令就能够完成。相对复杂的则是参数传入类型的配置修改,我们需要先写出类似的脚本:
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig:
/usr/share/openstack-tripleo-heat-templates/puppet/services/nova-base.yaml
parameter_defaults:
Debug: true
大家可以看到,registry 表示本文件中的 parameter 将会被导入到哪个配置文件中,下面的具体配置则是根据具体参数的类型和实际变更需求进行写入。
同时这里提醒大家注意参数的名字大小写敏感
写好该脚本后,我们就按照 deploy 时候的命令,同时加入参数 -e 进行配置的变更。
openstack overcloud deploy \
--templates \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/change.yaml \
--control-flavor control \
--compute-flavor compute \
--neutron-public-interface nic6 \
--ntp-server clock.redhat.com \
--libvirt-type qemu
漫长的执行过程之后,得到期望的结果:
2017-01-06 04:11:54Z [AllNodesDeploySteps]: UPDATE_COMPLETE state changed
2017-01-06 04:12:04Z [overcloud]: UPDATE_COMPLETE Stack UPDATE completed successfully
Stack overcloud UPDATE_COMPLETE
Started Mistral Workflow. Execution ID: d5b0b263-168c-4b09-b322-2b30048cf943
Overcloud Endpoint: http://10.0.100.139:5000/v2.0
Overcloud Deployed
牢记!environments 相关的输入参数在任何执行的情况下都不能写错或不写!!!
牢记!environments 相关的输入参数在任何执行的情况下都不能写错或不写!!!
牢记!environments 相关的输入参数在任何执行的情况下都不能写错或不写!!!
勿谓言之不预也!!!