Ansible执行逻辑

easyops-ansible简介

  • ansible组件在easyops中以容器方式运行
  • 从easyops-2.0开始ansible容器从1个扩展成2个
  • easyops-ansible容器中安装了ansible本身,然后运行了一个ansible-runner-service以提供restful api方式调用ansible能力

easyops-ansible位置

Ansible执行逻辑 - 图1

ansible容器目录说明

      - ${DEPLOY_DIR}/configs:/mnt/mockdisk/configs:rw
      - ${DEPLOY_DIR}/easyops-ansible/logs:/mnt/mockdisk/logs:rw
      - ${DEPLOY_DIR}/easyops-ansible/artifacts:/mnt/mockdisk/playbooks_root_dir/artifacts:rw
      - ${DEPLOY_DIR}/easyops-ansible/keys:/mnt/mockdisk/playbooks_root_dir/keys:rw
      - ${DEPLOY_DIR}/easyops-ansible/env:/mnt/mockdisk/playbooks_root_dir/env:rw
      - ${DEPLOY_DIR}/easyops-ansible/inventory:/mnt/mockdisk/playbooks_root_dir/inventory:rw
      - ${DEPLOY_DIR}/../services-spec/playbooks:/mnt/mockdisk/playbooks_root_dir/project/playbooks:rw
      - ${DEPLOY_DIR}/../services-spec/roles:/mnt/mockdisk/playbooks_root_dir/project/roles:rw
      - ${DEPLOY_DIR}/../ansible-data:/mnt/mockdisk/playbooks_root_dir/data
  • 重点是以下目录

    • artifacts:ansible执行过的任务,对应界面上每一个审计中操作
    • keys:主机的私钥,使用ssh连接方式需要
    • project:playbook挂载位置

    如下图,展示了ansible容器中相关目录的路径

Ansible执行逻辑 - 图2

  • ansible执行任务的目录说明
    • 重点说下inventory:下面是一个大yml文件,ansible playbook执行过程中所访问的变量基本都来自于这个yml中

Ansible执行逻辑 - 图3

easyops inventory结构

  • 在基本概念模型中,我们讲过组件实例是管理的最小单位,同时组件实例也是ansible playbook执行的最小单位。
  • 如下图service1_component1_instance1即1个执行节点
  • 访问变量的优先级顺序也是优先访问此节点下的,其次是service1_component1,再是service1下的
  • 同时我们可以通过关键字hostvars[xxx]定位到某一个节点位置,以访问目标节点下的变量

Ansible执行逻辑 - 图4

easyops playbook结构

  • spec.yml 服务声明,描述服务的基本信息,是接入easyops平台的身份标识
  • Playbook 服务及其组件的行为描述,是作为调用入口
  • role 服务或组件的具体执行内容,变量定义,文件模板 Ansible执行逻辑 - 图5

服务描述文件spec.yml

Ansible执行逻辑 - 图6

playbook行为描述

以hive为例

Ansible执行逻辑 - 图7

关于《easyops playbook开发指南》

关于更多easyops playbook相关介绍和开发指南,请参阅: https://docs.popo.netease.com/lingxi/10ef97660b8d4e06a200a31767f12d8b#edit