ansible roles详解+搭建LAMP架构
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,ansible roles在实际的工作当中,一个完整的项目实际上是很多功能体的组合,如果将所有的功能写在一个playbook中会存在如代码耦合程度高、playbook长而维护成本大、灵活性低等一系列的
千家信息网最后更新 2025年12月01日ansible roles详解+搭建LAMP架构
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/ -ptouch /etc/ansible/group_vars/all #文件名自己定义,引用的时候注意3)在roles目录中分别创建以各角色名称命令的目录,如httpd。mkdir /etc/ansible/roles/common -p4)在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,但不可以不创建。mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -pmkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p5)在每个角色的handlers、tasks、meta、defaults、vars目录下创建main.yml文件,千万不能自定义。touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml6)在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} -pmkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -pmkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -ptouch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.ymltouch /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
目录
文件
角色
变量
模块
命令
架构
任务
功能
场景
实际
模板
结构
问题
项目
服务
便捷
巧妙
特殊
主机
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
锐捷服务器产地
网络安全技术发展状况
用土豆服务器玩我的世界
网络安全如何找恶意ip
服务器端口修改管理工具
贷款的精准数据库
怎么给数据库做数据
软件开发语言排行
数据库新建备份设备失败
市民卡软件开发
天翼云盘服务器怎么用
复深蓝软件开发
软件开发各岗位介绍
电力网络安全排查情况说明
士林服务器
hp服务器阵列卡里看不到
网络安全知识视频十分钟
软件开发故障报告
网络安全专刊征文活动
服务器数据库修改物品数据
neo4j数据库扩展指南
高校远程数据库怎么使用
承接软件开发的大公司
隐藏的网络安全性选哪个
黑板报网络安全知识资料
摩尔庄园欢乐家园服务器
支付系统数据库设计
银行软件开发中心都考什么
软件开发时封装是什么
重庆教育erp软件开发