如何搭建ansible roles

61次阅读
没有评论

共计 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 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计4003字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)