ansible目录结构参考

本文介绍了Ansible的基础概念,包括Inventory、Playbooks、Roles及其子目录结构。Inventory用于管理主机源,Playbooks是任务集合的入口,Roles通过Tasks、Handlers、Vars和Templates实现任务拆分和重用。理解并合理组织Ansible目录结构,有助于提高自动化运维的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ansible基础概念

  • inventory 主机源
  • playbooks 一组运行任务的命令集合
  • roles 角色
  • tasks 运行任务列表
  • handlers 运行任务后的触发动作
  • variables 定义的变量

ansible目录结构

使用Role组织任务,可以将复杂的Playbook剧本进行拆分,达到缩小文件,任务重用的作用。如下图目录结构可供参考。

img

Inventory

ansible可管理的主机源。

inventory目录包含:

  • hosts 主机及主机组列表
  • host_vars 主机变量,目录里包含以组名命名的yaml文件
  • group_vars 主机组变量,目录里包含以组名命名的yaml文件
  • inventory.py 动态主机列表脚本

如下图: host_vars

# cat /etc/ansible/inventory/hosts_vars/127.0.0.1
---
myname: wangpeng
address: beijing

若多个环境有不同的inventory源,可创建多个目录来区分,目录结构一致。比如将测试环境、生产环境区分开来。

Playbooks

执行playbook的统一入口。

在入口文件里指定目标主机、对应角色

# cat /etc/ansible/playbooks/epel.yaml
---
- hosts: host1      # 定义主机组
  gather_facts: false

  roles:            # 使用角色
    - epel

Roles

定义的角色。角色目录中通常存放着tasks,handler,vars,templates,meta子目录,这些子目录并不是必须的,如果没用到某个目录(比如没有用到模板templates),可以为空目录,或者不创建。基于这样的目录结构,role会自动加载到目录内的tasks,vars及handlers。

在Role里编写具体的tasks、handlers、变量

Tasks

play中运行的任务命令,也就是执行的哪些ansible模块,如command,shell,service,yum等。

# cat /etc/ansible/roles/epel/tasks/main.yaml
---

- name: install epel-release repo
  remote_user: root
  yum: name=epel-release state=installed
  notify: make yum cache

目录下要有一个main.yaml文件,其他文件用Include引用到main中

Handlers

任务执行改变后触发的动作。handler也是task,但只task notify通知后才会触发,且多个task同时调用handler,只会触发一次。

# cat /etc/ansible/roles/epel/handlers/main.yaml
---

- name:  make yum cache
  shell: yum clean all && yum makecache

目录下要有一个main.yaml文件,其他文件用Include引用到main中

Vars

定义的主机变量和主机组变量。若group_vars,host_vars,role/vars目录中定义了相同变量名,优先级group_vars < host_vars < vars。

# cat /etc/ansible/roles/epel/vars/main.yaml
---
myname: wangpeng
address: beijing

目录下要有一个main.yaml文件,其他文件用Include引用到main中

Templates

使用template模板渲染功能时,所需的模块文件存放在这个目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值