共计 4003 个字符,预计需要花费 11 分钟才能阅读完成。
这篇文章主要介绍如何搭建 ansible roles,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
ansible roles
在实际的工作当中,一个完整的项目实际上是很多功能体的组合,如果将所有的功能写在一个 playbook 中会存在如代码耦合程度高、playbook 长而维护成本大、灵活性低等一系列的问题。使用 roles 能巧妙的解决这一系列的问题。roles 是 ansible1.2 版本后加入的新功能,适合于大项目 playbook 的编排架构。
ansible roles 目录结构
roles 能够根据层次型结构自动装载变量文件、task 以及 handlers 等。简单来讲,roles 就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地 include 它们,roles 一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
web/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
roles 内各目录含义解释
files:用来存放由 copy 模块或 script 模块调用的文件。templates:用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。tasks:此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。handlers:此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。vars:此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。defaults:此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。meta:此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系。在一个 playbook 中使用 roles 的步骤:1)创建以 roles 命令的目录。mkdir /etc/ansible/roles/ -p #yum 装完默认就有
2)创建全局变量目录。mkdir /etc/ansible/group_vars/ -p
touch /etc/ansible/group_vars/all # 文件名自己定义,引用的时候注意
3)在 roles 目录中分别创建以各角色名称命令的目录,如 httpd。mkdir /etc/ansible/roles/common -p
4)在每个角色命令的目录中分别创建 files、handlers、tasks、templates、meta、defaults 和 vars 目录,用不到的目录可以创建为空目录,但不可以不创建。mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
5)在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义。touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
6)在 playbook 文件中,调用各角色。vi /etc/ansible/site.yml
- hosts: webserver
remote_user: root
roles:
- httpd
- mysql
角色管理,roles 安装搭建 LAMP 架构
[root@localhost ~]# vim /etc/ansible/hosts
[ftpserver]
192.168.136.251
#创建目录,子目录
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
#apachej 角色
[root@localhost roles]# cd /etc/ansible/roles/httpd/tasks/
[root@localhost tasks]# vim main.yml
- name: install apache
yum: pkg={{ servername }} state=latest
#定义 servername
[root@localhost tasks]# cd ../vars/
[root@localhost vars]# vim main.yml
servername: httpd
#mysql 角色
[root@localhost vars]# cd ../../mysql/tasks/
[root@localhost tasks]# vim main.yml
- name: install mysqld
yum: pkg={{servername}} state=latest
[root@localhost tasks]# vim ../vars/main.yml
servername: mariadb*
#php 角色
[root@localhost tasks]# cd ../../php/tasks/
[root@localhost tasks]# vim main.yml
- name: install php
yum: pkg={{servername}} state=latest
[root@localhost tasks]# cd ../vars/
[root@localhost vars]# vim main.yml
servername: php
#创建总体剧本去控制这些服务
[root@localhost vars]# cd /etc/ansible/
[root@localhost ansible]# vim site.yml
- hosts: ftpserver
remote_user: root
roles:
- httpd
- mysql
- php
[root@localhost ansible]# ansible-playbook site.yml
PLAY [ftpserver] ***********************************************************************************
TASK [Gathering Facts] *****************************************************************************
ok: [192.168.136.251]
TASK [httpd : install apache] **********************************************************************
changed: [192.168.136.251]
TASK [mysql : install mysqld] **********************************************************************
changed: [192.168.136.251]
TASK [php : install php] ***************************************************************************
changed: [192.168.136.251]
PLAY RECAP *****************************************************************************************
192.168.136.251 : ok=4 changed=3 unreachable=0 failed=0
以上是“如何搭建 ansible roles”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!
正文完