Ansible 项目结构解析与剧本注释
/etc/ansible ├── ansible.cfg # 主配置文件 ├── inventory.yml # 主机清单 ├── playbooks │ ├── 01-ansible-env.yml # Python 环境初始化剧本 │ ├── 02-debian12-setup.yml # 系统基础配置剧本 │ ├── 03-nginx-setup.yml # Nginx 部署剧本 │ ├── files │ │ └── index.html # 默认网站首页 │ ├── group_vars │ │ └── webservers.yml # webservers 组专属变量 │ └── templates │ └── nginx-site.conf.j2 # Nginx 配置模板Ansible 项目结构解析与剧本注释1.核心配置文件# ansible.cfg [defaults] inventory /etc/ansible/inventory.yml # 指定主机清单文件路径 host_key_checking False # 禁用SSH主机密钥验证简化连接2.主机清单文件# inventory.yml webservers: # 主机组名称 hosts: # 组内主机列表 web01: # 主机别名 ansible_host: 10.10.10.101 # 实际IP地址 web02: ansible_host: 10.10.10.1023.Nginx站点模板# templates/nginx-site.conf.j2 server { listen 80 default_server; server_name {{ site_domain_name }}; # 变量替换域名 root {{ document_root }}; # 变量替换网站根目录 index index.html index.htm; location / { try_files $uri $uri/ 404; } }Playbook 剧本详解剧本 1: 基础环境准备 (01-ansible-env.yml)- name: Install Python3 on target hosts # 任务描述 hosts: all # 目标主机所有主机 gather_facts: false # 禁用事实收集因目标机无Python remote_user: demo # 使用demo账户连接 become: true # 启用权限提升 become_method: su # 使用su切换用户 become_user: root # 切换到root用户 tasks: - name: Install Python3 using raw module ansible.builtin.raw: apt install -y python3 python3-apt # 原始命令安装 register: install_python3 # 注册结果到变量 changed_when: will be installed in install_python3.stdout # 判断是否变更作用为没有Python环境的目标主机安装Python3Ansible运行依赖。剧本 2: 系统初始化 (02-debian12-setup.yml)- name: Initial setup for Debian 12 servers hosts: all tasks: - name: Set hostname and update /etc/hosts block: # 代码块分组任务 - name: Update /etc/hosts ansible.builtin.replace: # 文件内容替换 path: /etc/hosts regexp: ^127\.0\.1\.1\s.*$ # 匹配127.0.1.1行 replace: 127.0.1.1 {{ inventory_hostname }} # 替换为当前主机名 - name: Set timezone community.general.timezone: # 使用社区模块 name: {{ timezone }} # 从变量获取时区 - name: Set NTP server ansible.builtin.lineinfile: # 行管理模块 path: /etc/systemd/timesyncd.conf regexp: ^#?NTP # 匹配注释/非注释行 line: NTP{{ ntp_servers | join( ) }} # 设置NTP服务器列表 state: present作用系统基础配置主机名、时区、时间同步。剧本 3: Nginx 部署 (03-nginx-setup.yml)- name: Setup Nginx web server hosts: webservers # 仅针对web服务器组 vars: site_domain_name: example.com # 定义域名变量 document_root: /srv/www/{{ site_domain_name }} # 网站根目录路径 tasks: - name: Install Nginx ansible.builtin.apt: name: nginx state: present # 确保安装最新版 ​ - name: Set nginx site configuration ansible.builtin.template: # 模板渲染 src: templates/nginx-site.conf.j2 dest: /etc/nginx/sites-available/{{ site_domain_name }} notify: Restart Nginx # 触发重启Handler ​ - name: Enable nginx site ansible.builtin.file: # 创建符号链接 src: /etc/nginx/sites-available/{{ site_domain_name }} dest: /etc/nginx/sites-enabled/{{ site_domain_name }} state: link notify: Restart Nginx ​ - name: Disable default nginx site ansible.builtin.file: path: /etc/nginx/sites-enabled/default state: absent # 删除默认站点 notify: Restart Nginx ​ - name: Create document root directory ansible.builtin.file: path: {{ document_root }} state: directory # 创建网站目录 owner: www-data # 设置属主 group: www-data ​ - name: Copy index.html ansible.builtin.copy: # 复制静态文件 src: files/index.html dest: {{ document_root }}/index.html owner: www-data group: www-data ​ handlers: # 处理器被notify触发 - name: Restart Nginx ansible.builtin.systemd: name: nginx state: restarted # 重启服务 enabled: true # 设置开机自启作用全流程部署Nginx服务安装、配置、部署网站。组变量配置 (group_vars/webservers.yml)ansible_port: 22 # SSH端口 ansible_user: root # 登录用户 ansible_password: CNSkills-2023 # 密码实际应使用vault加密 ansible_become: true # 启用权限提升 ansible_become_method: su # 切换方法 ansible_become_user: root # 目标用户 ansible_become_pass: CNSkills-2023 # 切换密码 ​ packages: # 要安装的软件包 - bash-completion - vim - sudo - systemd-timesyncd ​ timezone: Asia/Shanghai # 时区设置 ​ ntp_servers: # NTP服务器列表 - ntp.aliyun.com - cn.pool.ntp.org作用为webservers主机组定义全局变量。工作流程分析连接初始化通过ansible.cfg加载配置读取inventory.yml获取主机列表使用group_vars中的凭证连接主机环境准备01-ansible-env.yml→ 安装Python → 启用Ansible完整功能系统配置02-debian12-setup.yml→ 时区/NTP/主机名 → 基础环境标准化服务部署03-nginx-setup.yml→ 安装Nginx → 配置站点 → 部署网页 → 重启服务关键原理幂等性设计所有任务可重复执行如apt模块自动跳过已安装包模板引擎Jinja2模板动态生成配置文件{{ site_domain_name }}变量替换变更通知机制notify→handler确保配置更新后自动重启服务组变量继承webservers.yml变量自动应用到组内所有主机零接触部署从系统初始化到应用部署全自动化完成安全建议生产环境中应使用ansible-vault加密密码变量避免明文存储敏感信息。

相关新闻

LangChain vs CrewAI:AI开发框架终极对决

LangChain vs CrewAI:AI开发框架终极对决

前言:随着大语言模型(LLM)的快速发展,AI 应用开发框架也在不断演进。从最早的 Prompt Engineering,到后来的链式调用(Chain),再到如今流行的 Agent 架构,AI 工程正在逐渐…

2026/7/5 8:22:36 阅读更多 →
告别“辐射焦虑”,把实验室带到您身边!

告别“辐射焦虑”,把实验室带到您身边!

——记深圳市宝安区沙井街道专业辐射现场测试服务在深圳宝安沙井街道的工业园里,每天都有无数的电子设备、精密仪器和工业探伤设备在高速运转。作为“智造重镇”,沙井及周边福永、松岗的企业在享受科技红利的同时,也面临着一个共同的课题&…

2026/5/17 11:09:38 阅读更多 →
【实时Linux工业PLC解决方案系列】第十三篇 - 实时Linux PLC Profinet从站适配方案

【实时Linux工业PLC解决方案系列】第十三篇 - 实时Linux PLC Profinet从站适配方案

一、简介:为什么Profinet是工业互联的"必选项"?工业现场的现实:一条汽车焊装线可能同时存在西门子S7-1500、发那科机器人、基恩士视觉系统——协议不统一数据孤岛调试噩梦。Profinet的地位:IEC 61158标准工业以太网&…

2026/7/5 16:47:46 阅读更多 →

最新新闻

YOLOv5 6.2 部署实战:RTX 3060 单卡实现 30 FPS 实时检测(附环境配置)

YOLOv5 6.2 部署实战:RTX 3060 单卡实现 30 FPS 实时检测(附环境配置)

YOLOv5 6.2 部署实战:RTX 3060 单卡实现30 FPS实时检测全流程解析1. 环境配置与性能优化基础在消费级显卡上实现高效目标检测需要精细的软硬件协同优化。我们以RTX 3060(12GB显存)为例,展示从零开始的完整部署流程。首先需要构建稳…

2026/7/6 10:11:39 阅读更多 →
Plone 4.3升级:内容运营自主化与数字韧性构建

Plone 4.3升级:内容运营自主化与数字韧性构建

1. 项目概述:Plone 4.3 升级不是“打补丁”,而是内容运营能力的结构性升级 我从2008年开始接触Plone,亲手部署过从2.5到4.2的每一次大版本迁移,也带团队做过二十多个高校和科研机构的Plone站点重构。所以当Plone 4.3正式发布时&a…

2026/7/6 10:09:35 阅读更多 →
Midscene视觉驱动浏览器自动化:原理、实战与性能优化指南

Midscene视觉驱动浏览器自动化:原理、实战与性能优化指南

1. 项目概述:当AI“看见”并“操作”你的浏览器浏览器自动化,这个概念对很多开发者、测试工程师甚至运营同学来说都不陌生。从早期的Selenium,到后来的Puppeteer、Playwright,我们一直在尝试用代码模拟人类在浏览器中的点击、输入…

2026/7/6 10:03:25 阅读更多 →
输电线路绝缘子YOLO训练数据集:含完好与破损实物图及标准txt标签

输电线路绝缘子YOLO训练数据集:含完好与破损实物图及标准txt标签

本文还有配套的精品资源,点击获取 简介:输电线路巡检场景下的绝缘子检测专用YOLO格式数据集,覆盖正常和缺陷两类真实拍摄图像,图片分辨率适中,背景为典型野外架空线路环境,具备实际部署所需的复杂背景与…

2026/7/6 10:01:21 阅读更多 →
Windows任务栏透明美化终极指南:5种模式让你的桌面焕然一新

Windows任务栏透明美化终极指南:5种模式让你的桌面焕然一新

Windows任务栏透明美化终极指南:5种模式让你的桌面焕然一新 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 厌倦了Windows系统…

2026/7/6 9:59:19 阅读更多 →
医生用AI不是偷懒,是临床决策的静默升级

医生用AI不是偷懒,是临床决策的静默升级

1. 这不是医德滑坡,而是临床决策方式的静默升级上周陪媳妇去西安一家三甲医院看胃部不适,挂的是消化内科的专家号——抢了整整两天才成功。从挂号、签到、候诊,到助理初筛登记,流程和十年前几乎没变。但就在我们坐在诊室外长椅上等…

2026/7/6 9:59:19 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻