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

【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.xdnf.cn/news/18592.html

相关文章:

  • 嵌入式八股文面试题总结(QT、RTOS、Linux、ARM、C/C++)(持续更新)
  • 在Excel和WPS表格中打印时加上行号和列标
  • 【Unity开发】Unity核心学习(二)
  • 超级助理:百度智能云发布的AI助理应用
  • 2025年渗透测试面试题总结-30(题目+回答)
  • 【从零开始学习Redis】如何设计一个秒杀业务
  • Java全栈工程师面试实录:从基础到微服务的深度探索
  • 埃氏筛|树dfs|差分计数
  • UE5.5 C++ 增强输入 快速上手
  • 恶劣天气下漏检率↓79%!陌讯多模态时序融合算法在道路事故识别的实战优化
  • 淘宝API实战应用:数据驱动商品信息实时监控与增长策略
  • DBeaver连接SQL Server时添加驱动后仍提示找不到驱动的解决方法
  • 51c自动驾驶~合集18
  • 学习记录(二十一)-Overleaf中图片文字间隔太大怎么办
  • java学习 + 一个向前端传流顺序不一致的一个解决思路
  • ubuntu中的nginx.conf和windows中的nginx.conf内容对比
  • 从栈到堆:深入理解C语言静态与动态链表的创建与管理
  • Flutter性能优化完全指南:构建流畅应用的实用策略
  • 如何安全解密受限制的PDF文件
  • [二维前缀和]1277. 统计全为 1 的正方形子矩阵
  • 【线性代数】常见矩阵类型
  • RandAR训练自己的数据集
  • ARINC 825板卡的应用
  • C++---双指针
  • Hyperledger Fabric官方中文教程-改进笔记(十五)-从通道中删除组织
  • Adobe CS6所有系列绿色免安装版,Photoshop 6 Adobe Illustrator CS6 等绿色版
  • 283. 移动零
  • 阿里云拉取dockers镜像
  • Wireshark USRP联合波形捕获(下)
  • 【Linux】Java线上问题,一分钟日志定位