一 ansible role 入门
知乎文章详解role
代码复用之Ansible Roles - 知乎 (zhihu.com)
roles/ \\ansible所有的信息都放到此目录下面对应的目录中 └── nginx \\角色名称 ├── default \\为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件; ├── files \\存放有copy或script等模块调用的文件,或压缩安装包等 ├── handlers \\此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler ├── meta \\应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持 ├── tasks \\至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令 ├── templates \\template模块会自动在此目录中寻找Jinja2模板文件 └── vars \\应当包含一个main.yml文件,用于定义此角色用到的变量
一个数据中心有可能存在好多类型的服务器。比如WEB类型、DB类型、开发人员使用的开发类型、QA使用的测试类型等等。如果每个类型的服务器的初始化行为都不一致,那要在一个PlayBook中将这些动作完成,这个PlayBook将变得臃肿、庞大,且难以后续维护和更新。如果能够针对每个类型的服务器单独编写PlayBook,最后通过某种方式整合这PlayBook, 在管理方式上就又会变得简单。Ansible中提供了类似的概念,也就是Role。它允许管理员将他们复杂的PlayBook分解成一个个小的逻辑单元, 以便于维护和管理。
从表面上看,它就是一个目录。目录的名字也就是role的名字。进到这个role名字的目录里,会发现好多子目录。 tasks: 存放 task 任务 handlers: 存放 handlers 任务 files: 存放 task 中引用的文件 templages: 存放 task 中引用的模板 meta: 存在 role 的依赖role(这个role 执行前,要先执行那个role) vars: 存放 role 的变量 defaults: 存在 role 的默认变量
# 目录结构
user.example/ ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates └── vars └── main.yml
role 的名字叫做 user.example。 其中 tasks 、handlers 、meta、 vars、defaults 目录的入口文件必须是main.yml,不能别配置为其他。
作者:Habit_1027
链接:https://www.jianshu.com/p/eddc2d345488
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二 延申:
教程:Ansible Galaxy — 国内最专业的Ansible中文官方学习手册 # 现代无法打开这个网站你敢信 逗B 网管
ansible-galaxy 的 github:Ansible Galaxy
实战: