0

0

Linux 自动化运维工具实战

冷漠man

冷漠man

发布时间:2026-02-25 18:23:02

|

285人浏览过

|

来源于php中文网

原创

ansible卡在“gathering facts”主因是setup模块收集系统信息失败,需确认python版本、ssh配置并可禁用事实收集;shell模块不解析jinja2变量,应指定executable或改用shell模块;cron模块不重载服务且忽略path,须校验语法并显式指定user和完整路径;跨发行版需用package模块或条件判断os_family。

linux 自动化运维工具实战

Ansible 执行任务卡在 “Gathering Facts” 不动

这是最常见的阻塞点,不是 Ansible 挂了,而是它默认会先 SSH 连上去跑 setup 模块收集目标主机的系统信息(比如 OS 版本、IP、磁盘、Python 路径等)。如果目标机 Python 缺失、SSH 延迟高、或防火墙拦截了某些探测行为,就会卡住甚至超时失败。

实操建议:

  • 确认目标主机已安装 Python 3(python3 --version),Ansible 2.10+ 默认要求 Python 3;若只有 Python 2,需在 inventory 中显式指定 ansible_python_interpreter=/usr/bin/python2
  • 跳过事实收集:在 playbook 顶层加 gather_facts: false,或 ad-hoc 命令加 -m ping 快速验证连通性(ansible all -m ping
  • 检查 SSH 配置:确保 ControlPersist yesControlMaster auto 开启,避免每次任务都新建连接;同时确认 ~/.ssh/config 中没写错 HostKeyAlgorithms 导致握手失败

Shell 模块里变量不展开,{{ item }} 输出字面量

Ansible 的 shellcommand 模块默认不经过 shell 解析器,所以 $PATH$(date){{ item }} 这类都不会被替换——它们只是字符串参数,传给远程 /bin/sh -c 时还没被 Jinja2 渲染。

实操建议:

  • args: + executable: /bin/bash 强制走 bash:
    - name: Run bash command with variable
      shell: echo "host: {{ inventory_hostname }}"
      args:
        executable: /bin/bash
  • 更安全的做法是改用 ansible.builtin.shell(显式声明)并配合 vars:loop: 控制上下文,避免拼接字符串引发注入
  • 如果只是想执行简单命令,优先用 command 模块(更安全、无 shell 注入风险),把需要展开的内容提前用 set_fact 存成变量再引用

Cron 模块添加定时任务后不生效

Ansible 的 cron 模块只负责写入 /var/spool/cron//etc/cron.d/,但不会 reload cron daemon,也不会校验语法是否合法。常见现象是文件写了,但 crond 没读取,或者环境变量缺失导致脚本找不到命令。

青鸟内测(手机app封装、托管系统)
青鸟内测(手机app封装、托管系统)

注意:请在linux环境下测试或生产使用 青鸟内测是一个移动应用分发系统,支持安卓苹果应用上传与下载,并且还能快捷封装网址为应用。应用内测分发:一键上传APP应用包,自动生成下载链接和二维码,方便用户内测下载。应用封装:一键即可生成app,无需写代码,可视化编辑、 直接拖拽组件制作页面的高效平台。工具箱:安卓证书生成、提取UDID、Plist文件在线制作、IOS封装、APP图标在线制作APP分发:

下载

实操建议:

  • validate: 'crontab -t %s' 参数让 Ansible 在写入前校验语法,避免非法格式写死 cron 表
  • 明确指定 user:(如 root),否则默认以当前连接用户写入,可能和预期不符;写入 /etc/cron.d/ 时还必须带用户名字段,cron daemon 才认
  • 注意 PATH:系统 crond 的默认 PATH 很窄(通常只有 /usr/bin:/bin),脚本中别直接写 python3,换成 /usr/bin/python3 或在 crontab 条目开头加 PATH=/usr/local/bin:/usr/bin:/bin

Playbook 在不同发行版上因包管理器报错

同一份 Playbook 在 CentOS 和 Ubuntu 上运行,yumapt 模块不能混用,硬编码会导致失败。Ansible 不会自动识别 distro 并切换模块,得靠条件判断。

实操建议:

  • ansible_facts['distribution']ansible_facts['os_family'] 做条件分支,例如:
    - name: Install nginx
      yum:
        name: nginx
        state: present
      when: ansible_facts['os_family'] == 'RedHat'
  • 优先使用抽象层模块如 package(Ansible 2.5+),它会根据 ansible_facts['pkg_mgr'] 自动选 apt/yum/dnf,但要注意旧版系统(如 CentOS 7)的 pkg_mgr 可能是 yum,而 CentOS 8 是 dnf,行为略有差异
  • 避免在 vars: 里硬写包名(如 nginx_package: nginx),应按发行版覆盖:vars_files: [vars/RedHat.yml, vars/Debian.yml]

真正麻烦的从来不是写多少 task,而是每个模块背后隐含的执行上下文:Python 版本、shell 环境、cron 加载机制、包管理器状态——这些细节不会报错,但会让任务静默失败。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

240

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

519

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

587

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

243

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

585

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3606

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

51

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

67

2026.01.13

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

127

2026.02.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.7万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号