kolla的配置管理主要是管理openstack service config文件;
主要实现是

reconfigure 使用

下面以1个例子来演示下

修改nova.conf,重启相关服务

在部署节点 新建/etc/kolla/config/nova/nova.conf

reconfigure 代码流程

kolla-ansible 的核心代码在ansible实现的
先介绍下ansible role是什么?如何使用
先看看下面nova role的代码目录

ansible role是什么?

Ansible Role 是一种分类 & 重用的概念,透过将 vars, tasks, files, templates, handler … 等等根据不同的目的(例如:nova、glance、cinder),规划后至于独立目录中,后续便可以利用 include 的概念來使用。

若同样是 include 的概念,那 role 跟 include 之间不一样的地方又是在哪里呢?

答案是:role 的 include 机制是自动的!

我們只要事前將 role 的 vars / tasks / files / handler …. 等等事先定义好按照特定的结构(下面會提到)放好,Ansible 就會很聰明的幫我們 include 完成,不需要再自己一个一个指定 include。

透过这样的方式,管理者可以透过設定 role 的方式將所需要安裝設定的功能分门别类,拆成细项來管理并编写相对应的 script,让原本可能很庞大的设定工作可以细分成多个不同的部分來分別设定,不仅仅可以让自己重复利用特定的设定,也可以共享給其他人一同使用。

要设计一個 role,必須先知道怎麼將 files / templates / tasks / handlers / vars …. 等等拆开设定

看看下面kolla-ansible下nova role的代码目录

以上就是一个基本完整的一个role结构,当然还有file、vars;我们这里没有使用这个2个;如果没有的部分可以不用。

ansible会针对role(x)进行以下处理:

  1. 如果role/x/tasks/main.yml存在,则会自动加到playbook中的task list中
  2. 如果role/x/handlers/main.yml存在,则会自动加到playbook中的handler list中
  3. 如果role/x/vars/mani.yml存在,则会自动加入到playbook中的variables list中
  4. 如果role/x/meta/main.yml存在, 任何与指定的role想依赖的其他的role设置都会被自动加入
  5. roles/x/templates/ 目录中的 template tasks,在 playbook 中使用时不需要指定绝对(absolutely) or 相对(relatively)路径
  6. 在 roles/x/files/ 目录中的 copy tasks 或是 script tasks,在 playbook 中使用时不需要指定绝对(absolutely) or 相对(relatively)路径
  7. 定义在 roles/x/defaults/main.yml 中的变量將会是使用该role时所取得的预设变量

再返回来看来 kolla-ansible reconfigure 具体代码就能理解了

 

从上面命令就可以看出,tasks是根据action去找相应的操作。那我们去跳到reconfigure.yml

 

整体的一个脉络流程就是这样;
下面我们一个一个去细看他们的实现。

这里我们主要是看config.yml和flush_handlers这个2个的实现

config.yml

config.yml 是用来生成openstack sevice config文件

这里最核心的实现就是merge_configs。
action plugin中在merge_configs.py作用是导入template模板,并且run。代码在/usr/share/kolla-ansible/ansible/action_plugins/merge_configs.py

 

Categories: 未分类

1 Comment

ปั้มไลค์ · 07/20/2020 at 8:32 PM

Like!! Great article post.Really thank you! Really Cool.

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *