184 字
1 分钟
Ansible学习笔记(2)
关于Role
用我的理解来说,你写了一个安装和配置 httpd 的 Playbook,里面有一堆任务、变量和模板,Role 就是把这些东西打包成一个“积木包”。以后想装 httpd,直接拿来用就行,还可以灵活向里面修改添加变量以适应需求
下面列出一个role的文件结构
roles/└── httpd/ # Role 的名字叫 httpd ├── defaults/ # 默认变量 —— 优先级最低,最容易被覆盖 ├── vars/ # 强变量 —— 优先级高,不容易被覆盖 ├── tasks/ # 核心:要做的每一步动作 ├── handlers/ # 触发器 ├── templates/ # 模板文件:里面有 {{变量}},会动态生成真实文件 ├── files/ # 普通文件:直接拷贝,不做变量替换 └── meta/ # 元信息:作者、依赖关系等(可选)下面拿出上篇文章中安装http服务的案例,用role实现
defaults/main.yml
httpd_port: 8080student_name: "张三"student_id: "20240001"tasks/main.yml
- name: 安装 httpd 软件包 yum: name=httpd state=present
- name: 复制配置文件模板 template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf notify: restart httpd
- name: 复制首页模板 template: src=index.html.j2 dest=/var/www/html/index.html
- name: 启动并开机自启 service: name=httpd state=started enabled=yeshandlers/main.yml
- name: restart httpd service: name=httpd state=restartedtemplates/httpd.conf.j2
# 全局环境ServerRoot "/etc/httpd"Listen {{ httpd_port }}User apacheGroup apacheServerAdmin root@localhostServerName localhost:{{ httpd_port }}
# 加载 MPM 模块(通过主配置文件加载,不依赖 conf.modules.d)LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# 加载其他必需模块LoadModule authz_core_module modules/mod_authz_core.soLoadModule dir_module modules/mod_dir.soLoadModule log_config_module modules/mod_log_config.soLoadModule mime_module modules/mod_mime.soLoadModule unixd_module modules/mod_unixd.so
# 文档根目录DocumentRoot "/var/www/html"<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory>
# 默认首页<IfModule dir_module> DirectoryIndex index.html</IfModule>
# 日志配置ErrorLog "logs/error_log"CustomLog "logs/access_log" combined
# MPM 配置(prefork 默认值)<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 256 MaxConnectionsPerChild 3000</IfModule>templates/index.html.j2
<h1>Welcome</h1><p>Name: {{ student_name }}</p><p>ID: {{ student_id }}</p>添加完以上文件后,这个role的文件结构应该是这样
roles/└── httpd/ ├── defaults/ │ └── main.yml ├── vars/ │ └── main.yml ├── tasks/ │ └── main.yml ├── handlers/ │ └── main.yml ├── templates/ │ ├── httpd.conf.j2 │ └── index.html.j2 └── meta/如果调用这个role? 新疆一个playbook文件 text.yml
---- name: 用role装httpd hosts: webservers #对其进行操作的组 become: yes
roles: - httpd #这里就是调用 roles/httpd运行指令
ansible-playbook text.yml这样就完成了role的编写与使用
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Ansible学习笔记(2)
https://www.yisibuwang.top/posts/2026-04-21-ansible学习笔记2/ 部分信息可能已经过时
相关文章 智能推荐
1
ansible学习笔记
笔记 ansible是一款开源的it自动化引擎,你可以把它理解成一个统一的指挥棒,用来管理成百上千台服务器。它的核心目标就是简单和易用,旨在消除重复性工作,简化复杂的工作流程,我会尽可能的记录学习到的功能并添加一些简单案例
2
Ansible学习笔记(1)
学习 Ansible是一款通过ssh来实现批量自动化的工具,理论上,只要能使用ssh完成的操作,Ansible都能做到,支持多类型主机且部署方便这里记录下自己学习此软件的笔记,会随学习进度更新
3
在windows上安装并简单配置wsl
学习 记得挺久之前微软在宣布更新windows11的时候,就说过wsa和wsl,分别是全程分别是 适用于android的windows子系统 和 适用于liunx的windows子系统,当时我也是因为wsa升级的win11,而wsl听说很垃圾就没有接触过,这几天在群里水群的时候看到有人在用这个,发现这个依旧更新到了2.0版本,据说是好用了很多,便试了试并记录
4
解决虚拟机无法共享宿主机Clash代理问题
踩坑记录 最近我想要在我的虚拟机上运行docker,但运行时却出现镜像容器pull不下来的问题,明明宿主机上的Clash开启了局域网连接,虚拟机内的系统也正确的配置了地址,但就是无法连接
5
博客已升级并对所有文章链接进行的更改
博客更改记录 博客已升级到mizuki V9.0,并进行了多项改动










