欢迎来到我的网站!

Linux Foreman自动化部署与运维指南

一、Foreman 自动化部署操作步骤

环境准备

  1. 系统要求
    • 服务器:CentOS 8/RHEL 8(推荐),4核CPU,8GB RAM,100GB磁盘
    • 网络:静态IP,DNS解析,防火墙开放端口(80/443/8443/69)

bash

sudo firewall-cmd --permanent --add-port={80/tcp,443/tcp,8443/tcp,69/udp}

sudo firewall-cmd --reload

  1. 安装 Foreman

bash

# 添加仓库

sudo dnf install -y https://yum.theforeman.org/releases/3.5/el8/x86_64/foreman-release.rpm

# 安装 Foreman + Puppet(默认配置)

sudo dnf install -y foreman-installer

sudo foreman-installer --scenario foreman \

--enable-foreman-proxy \

--enable-foreman-plugin-remote-execution \

--enable-foreman-plugin-templates

    • 安装完成后记录控制台 URL 和 admin 密码(在 /etc/foreman-installer/scenarios.d/foreman-answers.yaml 中查看)。

二、部署操作系统流程

  1. 配置 DHCP/TFTP/PXE
    • 在 Foreman Web 控制台(https://<foreman-ip>)配置:
      基础设施 → 子网 → 选择子网 → 编辑
      • 填写 DHCP 范围、网关、DNS
      • 启用 TFTP 和 PXE
  2. 添加操作系统镜像
    主机 → 操作系统 → 新建

    • 示例:CentOS 8
      • 名称:CentOS 8.5
      • 家族:Red Hat
      • Root
        密码:Use encrypted(推荐)

bash

# 生成加密密码(复制输出到Foreman)

echo "mypassword" | openssl passwd -1 -stdin

  1. 创建 Provisioning 模板
    主机 → 模板 → 新建

    • 类型:Provisioning Template
    • 关联操作系统:选择 CentOS 8.5
    • 内容示例(Kickstart 精简版):

kickstart

lang en_US.UTF-8

keyboard us

timezone UTC

rootpw --iscrypted <%= root_pass %>

reboot

install

url --url <%= medium_uri %>

bootloader --location=mbr

zerombr

clearpart --all --initlabel

autopart

network --bootproto=dhcp --hostname=<%= host.name %>

auth --passalgo=sha512 --useshadow

selinux --enforcing

firewall --enabled

%post

/usr/sbin/subscription-manager register ... # 如有订阅

%end

  1. 定义主机组
    配置 → 主机组 → 新建

    • 名称:web-servers
    • 操作系统:CentOS 8.5
    • 环境:production
    • Puppet Classes
      :添加基础安全类(如 ntpselinux
  2. 启动 PXE 部署
    • 将目标服务器设置为网络启动(PXE)
    • Foreman
      自动检测并列出主机 → 点击 Provision

三、日常运维操作

  1. 主机生命周期管理
    • 批量操作

bash

# 通过 Hammer CLI 重启所有 web-servers 组主机

hammer host reboot --search 'hostgroup = "web-servers"'

    • 状态监控

      控制台查看 监控 → 报告(Puppet运行状态、审计日志)
  1. 软件更新

bash

# 远程执行批量更新(需安装remote-execution 插件)

hammer job-invocation create --job-template "Run Command - SSH Default" \

--search-query "hostgroup = web-servers" \

--inputs "command=yum update -y --security"

  1. 日志管理
    • 集成 ELK 或 Loki:
      修改 Puppet Manifest 添加 filebeat 类,将日志转发至中心服务器。

四、安全合规加固

  1. 基线配置(通过 Puppet 强制实施)

puppet

# 示例:加固 SSH (manifests/secure_ssh.pp)

class secure_ssh {

file { '/etc/ssh/sshd_config':

content => template('secure/sshd_config.erb'),

notify  => Service['sshd'],

}

service { 'sshd': ensure => running, enable => true }

}

    • 模板 sshd_config.erb 内容:

conf

PermitRootLogin no

PasswordAuthentication no

Protocol 2

  1. 合规扫描(OpenSCAP 集成)
    • 在 Foreman 中:主机 → 策略 → 新建 OSCAP 策略
      • 选择配置文件:CIS CentOS 8 Benchmark
      • 定期扫描并生成报告(合规性 → 报告
  2. 漏洞管理
    • 同步安全仓库:

bash

hammer repository synchronize --name="CentOS 8 Security Updates" --product="CentOS"

    • 自动修补(创建定期作业模板):

bash

hammer job-template create --name "Monthly Security Patch" \

--template "yum update -y --security" \

--cron-line "0 3 * * 6" 每周六 3AM 执行

五、数据备份策略

  1. Foreman 元数据备份

bash

# 每日全量备份(包含数据库、配置、Puppet代码)

sudo foreman-maintain backup offline --preserve-directory /backup/foreman-$(date +%F)

  1. 应用数据备份
    • 使用 Rclone 同步至 S3:

bash

rclone sync /var/lib/pulp s3:mybucket/foreman-pulp --copy-links

  1. 灾难恢复测试

bash

# 恢复演练(每季度)

sudo foreman-maintain restore /backup/foreman-2025-01-01

六、关键注意事项

  1. 网络隔离
    • PXE/DHCP
      服务需在专用 VLAN 中运行,避免干扰生产网络。
  2. 密钥管理
    • 使用 Vault 插件存储加密密码:

puppet

$db_password = vault_lookup('secret/db', 'password')

  1. 审计与合规
    • 开启 Foreman 审计日志(/var/log/foreman/audit.log),定期归档。
  2. 性能优化
    • 为 Pulp(软件仓库)配置 SSD 存储
    • 调整 Passenger 线程数:

bash

echo "PassengerMaxPoolSize 12" >> /etc/foreman/apache2.conf

  1. 故障自愈
    • 部署 监控告警集成(Prometheus +       Alertmanager):
      • 规则示例:TFTP 服务宕机或 PXE 引导失败率 > 5%。

终极建议

  • 测试先行
    :所有 Puppet 代码/模板在非生产环境验证
  • 文档即代码
    :使用 Git 管理 Kickstart 模板和 Puppet Manifest
  • 最小权限原则
    :Foreman 用户角色按需分配(如 Viewer/Operator
  • 定期演练
    :每半年执行一次完整灾备恢复流程

通过以上步骤,可构建高可靠的自动化运维体系,实现从部署到合规的全生命周期管理。

阅读剩余
THE END
底部友情链接
本站已平安运行
00000000