配置变更


!通过 tripleO 进行配置变更存在一定风险,是否要按照这一方法进行配置管理有待商榷

当我们完成了一套 overcloud 的部署之后,在日常运维以及使用的过程中,难免会遇到需要对平台中部分配置项做出变更的操作,在 Red Hat 官方文档中有针对这部分内容的简单介绍,链接如下:

https://access.redhat.com/documentation/en/red-hat-openstack-platform/10/paged/director-installation-and-usage/chapter-7-performing-tasks-after-overcloud-creation

变更的操作与安装的操作过程非常相似,我们只需要修改相应部分的 environment 文件和 Heat templates,之后和再执行一次和安装时一样的 openstack overcloud deploy,heat 将会去检查已经创建好的 overcloud 所对应的 stack,并且修改相应的内容。如果我们希望修改过程可追溯,或者加入更多的内容的时候,可以在 deploy 的命令后追加 -e 选项,来 involve 更多的配置文件。

官方并不建议手工去修改 overcloud 的配置文件,因为修改的内容在后续的 deploy 中可能会被覆盖

每一次的配置修改,都会导致全过程的遍历,所以推荐做大范围大面积的批量变更,尽量减少针对少数节点少数配置项的变更

变更示例

我们将以一个简单的情形做出示例,让大家了解通过 tripleO 对 overcloud 集群做出变更的方法的步骤。

假设在一套已经安装完成的集群中,我们希望对 nova 服务做出修改,希望将 debug 模式打开,翻译成正常人的语言也就是我们希望在配置文件 nova.conf 中加入一行 debug = True。

通过查找,我们在 undercloud 中找到了如下文件:

  1. /usr/share/openstack-tripleo-heat-templates/puppet/services/nova-base.yaml

并进一步在文件中找到了这样的内容:

  1. Debug:
  2. type: string
  3. default: ''
  4. description: Set to True to enable debugging on all services.
  5. ...
  6. - {get_param: [EndpointMap, MysqlInternal, host]}
  7. - '/nova_api'
  8. nova::debug: {get_param: Debug}
  9. nova::purge_config: {get_param: EnableConfigPurge}
  10. nova::network::neutron::neutron_project_name: 'service'

所以 debug 这个选项是作为参数传入的,与此对应的另一种形式如下:

  1. nova::rabbit_heartbeat_timeout_threshold: 60
  2. nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'

所以这两个配置项并不是参数传入,而是直接赋值。

那么针对参数类型所管理的配置进行修改就相对来说较为容易,找到相应的参数,执行 deploy 的命令就能够完成。相对复杂的则是参数传入类型的配置修改,我们需要先写出类似的脚本:

  1. resource_registry:
  2. OS::TripleO::BlockStorage::Net::SoftwareConfig:
  3. /usr/share/openstack-tripleo-heat-templates/puppet/services/nova-base.yaml
  4. parameter_defaults:
  5. Debug: true

大家可以看到,registry 表示本文件中的 parameter 将会被导入到哪个配置文件中,下面的具体配置则是根据具体参数的类型和实际变更需求进行写入。

同时这里提醒大家注意参数的名字大小写敏感

写好该脚本后,我们就按照 deploy 时候的命令,同时加入参数 -e 进行配置的变更。

  1. openstack overcloud deploy \
  2. --templates \
  3. -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
  4. -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
  5. -e /home/stack/change.yaml \
  6. --control-flavor control \
  7. --compute-flavor compute \
  8. --neutron-public-interface nic6 \
  9. --ntp-server clock.redhat.com \
  10. --libvirt-type qemu

漫长的执行过程之后,得到期望的结果:

  1. 2017-01-06 04:11:54Z [AllNodesDeploySteps]: UPDATE_COMPLETE state changed
  2. 2017-01-06 04:12:04Z [overcloud]: UPDATE_COMPLETE Stack UPDATE completed successfully
  3. Stack overcloud UPDATE_COMPLETE
  4. Started Mistral Workflow. Execution ID: d5b0b263-168c-4b09-b322-2b30048cf943
  5. Overcloud Endpoint: http://10.0.100.139:5000/v2.0
  6. Overcloud Deployed

牢记!environments 相关的输入参数在任何执行的情况下都不能写错或不写!!!

牢记!environments 相关的输入参数在任何执行的情况下都不能写错或不写!!!

牢记!environments 相关的输入参数在任何执行的情况下都不能写错或不写!!!

勿谓言之不预也!!!