服务器(物理机器和虚拟机)多了以后需要工具来管理,经常登陆系统后不知是在虚拟机上还是在物理机上?如果在虚拟机上这个虚拟机运行在哪个服务器节 点(host)上?如果在物理机上运行在什么配置的物理机上?运行在 Dell 刀片服务器上还是 IBM 超级计算机上,SUN 服务器上还是普通 PC 上?这个系统 IP 是多少?域名是啥?有几个网卡?分别走的哪个交换机?有没有连到 SAN 存储等等?无数问题,我们需要一个统一查看和管理所有机器(物理机和虚拟机)的这么一套工具。Foreman 就是这么一个集成了 Puppet 的统一机器生命周期管理工具。
Foreman 功能很强大,可以解决硬件或虚拟机上线到运行 Puppet 之间的一切问题,比如安装操作系统、配置网络、配置 DNS、Puppet 客户端安装认证等等,完成必要的上线工作后,Foreman 就把剩下的工作交给了 Puppet,Puppet 完成剩下的服务器和服务配置工作,这样就完美的完成了从服务器上线到服务上线的全过程,而且是自动的。这里主要介绍用 Foreman 获取(配合 Puppet Facts)和查看服务器信息。
加入 foreman 官方源后安装软件包:
# cat > /etc/yum.repos.d/foreman.repo << EOF [foreman] name=Foreman Repo baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 EOF # yum install foreman
拷贝 foreman 里面的 report 例子到 puppet 下,并更改 $foreman_url 指向这台安装 foreman 的服务器:
# cp /usr/share/foreman/extras/puppet/foreman/templates/foreman-report.rb.erb \ /usr/lib/ruby/site_ruby/1.8/puppet/reports/foreman.rb # vi /usr/lib/ruby/site_ruby/1.8/puppet/reports/foreman.rb ... $foreman_url='http://foreman.vpsee.com:3000/' ...
配置 puppetmaster 服务端,编辑 puppet.conf 配置文件:
# vi /etc/puppet/puppet.conf [main] ... reports=log, foreman ... # /etc/init.d/puppetmaster restart
配置 puppet 客户端,编辑 puppet.conf 配置文件,确保 report 是 true:
# vi /etc/puppet/puppet.conf ... report = true ...
初始化 foreman 数据库(这里 foreman 默认使用 sqlite,简单、不用任何配置,如果想用 mysql 的话可以参考官方帮助文件):
# cd /usr/share/foreman # RAILS_ENV=production rake db:migrate
启动 foreman:
# /etc/init.d/foreman start
我们把 foreman 和 puppetmaster 安装在同一个机器上,每次运行这个脚本都会导入新的 facts:
# cd /usr/share/foreman # rake puppet:import:hosts_and_facts RAILS_ENV=production (in /usr/share/foreman) Importing from /var/lib/puppet/yaml/facts Importing monitor.vpsee.com Importing dev.vpsee.com Importing intranet.vpsee.com Importing datasrv.vpsee.com Importing rocket.vpsee.com Importing grid.vpsee.com Importing proxy.vpsee.com Importing mail.vpsee.com
导入成功后打开浏览器访问 http://ip:3000 就可以看到 foreman 界面了:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY