当前位置: 首页 > news >正文

【ansible】5.在受管主机部署文件和Jinja2模板

1.Ansible 中,如何用模块创建一个文件并设置权限644并设置SELinux类型,如何从受管主机中删除文件?

使用ansible.builtin集合中的 file 模块,添加state:touch 创建文件,mode:‘0644’ 设置权限,setype设置SELinux类型,state:absent参数删除文件。

2.想把本地文件app.conf复制到远程/etc/app/,用哪个模块?

copy模块。

3.copy和fetch模块核心区别是什么?

copy是控制节点 → 受管主机传文件;fetch是受管主机 → 控制节点拉文件。

4.要修改远程文件某一行内容(比如替换old_text为new_text),用什么模块?

lineinfile模块

- lineinfile:path: /etc/configregexp: '^old_text'line: 'new_text

5.想修改文件某几行(比如添加一段配置),用哪个模块最方便?

blockinfile模块,可批量插入 / 修改带标记的文本块,比lineinfile更适合多行场景。

6.如何检索受管主机上的文件状态?

使用stat模块检索文件事实,提供检索文件属性等功能。

7.如何递归同步本地目录./dist/到远程/app/,且删除远程多余文件?

使用synchronize模块(基于rsync),加delete:yes实现删除远程不存在的文件:

- synchronize:src: ./dist/dest: /app/delete: yes  # 删除远程不存在的文件rsync_opts:- "--exclude=.git"  # 可选:排除不需要的文件

8.Jinja2 模板里,{{ var }}和{% code %}有什么区别?

{{ var }}是变量渲染,把变量值替换到模板。{% code %}用于特殊的控制结构或逻辑(如if/for),用来写循环或条件判断。

9.Ansible 中,Jinja2 模板文件一般放哪?默认扩展名是啥?

通常放在playbook项目的templates目录中,.j2为其文件扩展名。

10.模板里想遍历users列表(如users: [alice, bob]),怎么写循环?

{% for user in users %}

{{ user }}

{% endfor %}

11. 模板里判断env变量是否为prod,怎么写条件?

{% if env == ‘prod’ %}

生产环境配置

{% endif %}

12.怎么用 Ansible 部署 Jinja2 模板到目标主机?

使用 ansible.builtin.template 模块,如:

tasks:- name: template renderansible.builtin.template:src: /tmp/j2-template.j2dest: /tmp/dest-config-file.txt

13.怎么避免模板文件被手动修改?

为避免其他系统管理员修改ansible管理的文件,应该在ansible.cfg文件中设置ansible_managed=Ansible managed,然后将模板顶部加注释 {{ ansible_managed }}

14. 模板渲染后内容不对,怎么调试?

用debug模块输出生成的内容;检查变量是否正确传递(-vvv看详细日志)。

15.Jinja2模块的作用?

Jinja2 模板可以将配置文件的结构和逻辑分离,使得开发人员和运维人员能够更清晰地理解配置的生成方式。同时,模板可以被多个 Playbook 复用,减少重复代码的编写。

例如:团队中可能存在多个项目都需要部署 Nginx 服务,通过共享 Nginx 配置的 Jinja2 模板,不同的项目只需要根据自身需求定义不同的变量,就可以快速生成符合项目要求的 Nginx 配置文件,提高了开发和运维的效率。

创建一个 Nginx 配置模板(nginx.conf.j2):jinja2
server {listen {{ nginx_port }};server_name {{ server_name }};location / {root /usr/share/nginx/html;index index.html;}
}在 Ansible 的 Playbook 中,通过定义变量 nginx_port 和 server_name ,
就可以为不同的 Nginx 服务器生成定制化的配置文件。yaml
- name: 部署 Nginx 配置hosts: web_serversvars:nginx_port: 8080server_name: "example.com"tasks:- name: 生成 Nginx 配置ansible.builtin.template:src: nginx.conf.j2dest: /etc/nginx/nginx.conf
http://www.dtcms.com/a/348399.html

相关文章:

  • 信誉代币的发行和管理机制是怎样的?
  • 基于角色的访问控制(RBAC)研究与Go语言实现
  • overleaf关于给参考文献添加DOI链接的问题
  • B站视频字幕提取工具
  • 当GitHub“断网”:从应急到终极方案,手把手搭建永不宕机的代码协作体系
  • 鸿蒙 ArkTS 开发:Number、Boolean、String 三种核心基本数据类型详解(附实战案例)
  • 从 Unity UGUI 到 Unreal UMG 的无缝迁移:UMG 基础与 UI 控件布局
  • Java的数字计算
  • pycharm的matplotlib不显示动图问题的解决
  • Python核心技术开发指南(004)——配置PyCharm
  • Flink直接缓冲存储器异常解析与解决方案
  • 力扣155.最小栈
  • 嵌入式知识篇---32GUI
  • 神经网络|(十四)概率论基础知识-协方差和方差
  • 使用 Golang 的 Gin 框架实现一周极限编程计划:全网 AIGC 项目热点追踪应用
  • 自然语言处理——06 迁移学习(下)
  • 自然语言处理——06 迁移学习(中)
  • RockyLinux9.6安装k8s
  • 【(含模板)滑动窗口 - LeetCode】3. 无重复字符的最长子串
  • 从“小麻烦”到“大难题”:Spring Boot 配置文件的坑与解
  • UE5游戏开发的理想硬件配置指南:从入门到专业级方案
  • MySQL视图有什么用?一文读懂虚拟表的六大核心价值
  • 数据治理进阶——埃森哲 数据治理元数据管理建设规划方案【附全文阅读】
  • LabVIEW Vision视觉引导撑簧圈智能插装
  • java-代码随想录第十五天| 12.平衡二叉树、222.完全二叉树的节点个数、404.左叶子之和
  • 网络安全转型书籍清单
  • JavaScript 性能优化实战:全方位提升 Web 应用性能
  • 【LeetCode 热题 100】152. 乘积最大子数组——(解法一)递推
  • Vue2+Vue3前端开发笔记合集
  • 九、redis 入门 之 数据库和缓存一致性问题