序号1. 小分段:目标说明:本文针对在台湾地区托管的Linux云服务器(常见Ubuntu/CentOS),实现基础资源自动化、配置管理与安全防护。准备工作步骤:1) 在云厂商控制台创建项目/账号,启用API Key并保存。2) 配置本地工作站,安装Git、Terraform、Ansible、kubectl、docker等工具:
apt install -y git terraform ansible docker.io kubectl(示例)。3) 为运维用户创建SSH密钥:ssh-keygen -t rsa -b 4096 -C "ops@example.com",并把公钥添加到云主机authorized_keys或镜像中。
序号2. 小分段:步骤1:限制SSH登录,编辑/etc/ssh/sshd_config并修改:
PermitRootLogin no
PasswordAuthentication no
AllowUsers opsuser
步骤2:重启服务并验证:sudo systemctl restart sshd、ssh -i ~/.ssh/id_rsa opsuser@server_ip。步骤3:建立堡垒机(Bastion)或VPN,避免直接暴露管理端口;必要时改SSH端口并配合防火墙规则。
序号3. 小分段:步骤1:初始化Terraform工程,创建main.tf并配置provider与变量。示例资源声明(伪代码):provider "yourcloud" { api_key = var.api_key }resource "yourcloud_instance" "web" { name="web01" image="ubuntu-20.04" size="s1" ssh_keys=[file("~/.ssh/id_rsa.pub")] }。步骤2:执行命令:terraform init、terraform plan、terraform apply -auto-approve。步骤3:将状态文件保存在远程后端(例如S3或云对象存储)并开启状态锁定。
序号4. 小分段:步骤1:编写Inventory(hosts)并使用SSH私钥:
hosts文件示例:[webservers] 10.0.0.10 ansible_user=opsuser ansible_ssh_private_key_file=~/.ssh/id_rsa。步骤2:创建Playbook示例(install_nginx.yml):
- hosts: webservers
become: yes
tasks:
- name: install nginx
apt: name=nginx state=present update_cache=yes
步骤3:运行:ansible-playbook -i hosts install_nginx.yml。步骤4:把Playbook纳入CI,推送到Git并在合并时触发自动执行以实现无停机配置发布。
序号5. 小分段:步骤1:在Git仓库添加.gitlab-ci.yml,示例阶段:build->push->deploy。步骤2:构建镜像并推到Registry:在job内使用Docker-in-Docker或Runner。步骤3:部署阶段使用Ansible或kubectl:ansible-playbook -i hosts deploy_app.yml --extra-vars "image=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"。步骤4:加入自动回滚策略:检测健康检查失败后触发上一个稳定tag的部署。
序号6. 小分段:步骤1:在每台主机安装node_exporter:
下载并运行:wget https://.../node_exporter.tar.gz && tar xzf && ./node_exporter &,或用systemd建service。步骤2:在Prometheus配置中加入targets:- job_name: 'node' static_configs: - targets: ['10.0.0.10:9100']。步骤3:配置Alertmanager规则:当CPU>90%持续5分钟触发告警,通知Slack/邮件。步骤4:集成日志:使用Fluentd或Filebeat收集/转发到ELK或Grafana Loki,配置日志轮转(logrotate)。
问:在台湾机房如何保证数据在灾难时能恢复?
答:建议采用异地备份与快照结合:1) 使用增量备份工具restic或borg,示例命令:restic -r s3:s3.example.com/bucket backup /var/www --password-file /root/.restic_pass,并把仓库放在不同区域或第三方对象存储。2) 对块存储做定时快照(云厂商API或Terraform定期任务)。3) 定期演练恢复:在不同可用区还原并验证应用可启动。4) 记录RTO/RPO并用自动化脚本(Ansible)完成恢复流程,确保可重复。
问:如何快速部署入侵检测并对可疑IP自动封禁?
答:结合fail2ban与监控告警即可实现自动阻断:1) 安装fail2ban并创建自定义jail来监控SSH、nginx登录失败日志:/etc/fail2ban/jail.local示例规则。2) 配合防火墙(iptables/nftables)执行封禁动作;fail2ban会自动添加规则。3) 若需更高级检测,部署Wazuh或OSSEC进行主机入侵检测,检测到威胁后通过Webhook触发自动化Playbook在堡垒机或防火墙上屏蔽IP。
问:怎样做到补丁自动化应用且能回溯谁、何时改动?
答:采用GitOps与配置管理结合实现:1) 所有配置(Ansible playbooks、systemd模板、iptables规则)放在Git仓库,变更通过Merge Request(MR)流程并由CI运行语法/合规检查。2) CI合并后触发Ansible执行到目标服务器,Ansible日志记录到集中日志(例如ELK)以便审计。3) 补丁策略:使用无人值守包管理器更新脚本(apt unattended-upgrades或yum-cron),并在非生产环境先自动验证,生产环境走MR审批后触发部署。4) 定期生成配置与补丁报告,保存到合规仓库以备审计。