飞天使-linux操作的一些技巧与知识点5

文章目录

        • roles
        • [role 的依赖关系](#role 的依赖关系)
        • [role 的实际案例](#role 的实际案例)
roles
复制代码
 tasks 和 handlers ,那怎样组织 playbook 才是最好的方式呢?简
单的回答就是:使用 Roles
Roles 基于一个已知的文件结构,去自动的加载 vars,tasks 以及 handlers 以便
playbook 更好的调用。
roles 相比 playbook 的结构更加的清晰有层次,但 roles 显然要比 playbook
更加复杂难理解!
比如:我们无论安装什么软件都会安装时间同步服务,那么每个 playbook 都要编
写时间同步服务的 task 。此时我们可以将时间同步服务 task 任务编写好,等到需
要使用的时候进行调用就行了。

roles 官方目录结构,必须按如下方式定义。在每个目录中必须有 main.yml 文
件,这些属于强制要求

[root@m01 ~]# cd /etc/ansible/roles
[root@m01 roles]# mkdir
{nfs,rsync,web}/{vars,tasks,templates,handlers,files,meta} -p
[root@m01 roles]# tree
.
├── nfs #角色名称
│ ├── files #存放文件
│ ├── handlers #触发任务
│ ├── tasks #具体任务
│ ├── templates #模板文件
│ └── vars #定义变量
│ └── meta #依赖关系
批量替换文件
复制代码
ll /opt/php/ |awk '{print $NF}' | sed -r 's#(.*)#- /opt/php/\1#g'
role 的依赖关系
复制代码
roles 允许在使用时自动引入其他 role , role 依赖关系存储在
meta/main.yml 文件中。
例如: 安装 wordpress 项目时:
1.需要先确保 nginx 与 php-fpm 的 role 都能正常运行
2.然后在 wordpress 的 role 中定义,依赖关系
3.依赖的 role 有 nginx 以及 php-fpm
#wordpress依赖nginx与php-fpm的role

[root@m01 playbook]# cat /root/roles/wordpress/meta/main.yml
---
dependencies:
- { role: nginx }
- { role: php-fpm }

wordpress 的 role 会先执行 nginx、php-fpm 的 role ,最后在执行 wordpress
本身
role 的实际案例
复制代码
[root@m01 memcached]# cd /etc/ansible/roles/
[root@m01 memcached]# tree memcached/
.
├── tasks
│ ├── main.yml
│ ├── start.yml
│ ├── template.yml
│ └── yum.yml
└── templates
└── memcached.j2


[root@m01 memcached]# cat tasks/main.yml
- include: yum.yml
- include: template.yml
- include: start.yml
[root@m01 ~]# cat tasks/yum.yml
- name: install memcached package
yum: name=memcached
[root@m01 ~]# cat tasks/template.yml
- name: Copy memcahed conf
template: src=memcached.j2 dest=/etc/sysconfig/memcached
[root@m01 ~]# cat templates/memcached.j2
PORT="11211"
USER="memcached"
MAXCONN="{{ ansible_memtotal_mb//4 }}"
CACHESIZE="64"
OPTIONS=""
[root@m01 ~]# cat tasks/start.yml
- name: start memcached
service: name=memcached state=started enabled=yes


[root@m01 ~]# cat site.yml
- hosts: "{{ host }}"
remote_user: root
roles:
- role: memcached
# 执行playbook
[root@m01 ~]# ansible-playbook site.yml -e "host=10.0.0.1"
相关推荐
YuMiao11 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒1 天前
OpenClaw 多 Agent 配置实战指南
运维
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行3 天前
Linux和window共享文件夹
linux
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器