DeepSeek 生成 Ansible Playbook:实现服务器配置自动化
·
生成 Ansible Playbook 实现服务器配置自动化
以下是一个完整的 Ansible Playbook 示例,用于实现服务器基础配置自动化,包含用户管理、安全加固、软件安装和服务配置等核心功能:
---
- name: 服务器基础配置自动化
hosts: all
become: yes
vars:
admin_user: deploy
ssh_port: 2222
timezone: Asia/Shanghai
packages:
- nginx
- fail2ban
- ufw
tasks:
# 基础系统配置
- name: 设置时区
timezone:
name: "{{ timezone }}"
- name: 更新软件包索引
apt:
update_cache: yes
# 用户管理
- name: 创建管理员用户
user:
name: "{{ admin_user }}"
groups: sudo
append: yes
shell: /bin/bash
password: "{{ 'Password123' | password_hash('sha512') }}"
- name: 配置SSH公钥认证
authorized_key:
user: "{{ admin_user }}"
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
# 安全加固
- name: 修改SSH端口
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^#?Port'
line: "Port {{ ssh_port }}"
notify: 重启SSH服务
- name: 禁用root登录
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^#?PermitRootLogin'
line: "PermitRootLogin no"
- name: 安装安全软件包
apt:
name: "{{ packages }}"
state: present
- name: 配置防火墙
ufw:
rule: allow
port: "{{ ssh_port }}"
proto: tcp
when: "'ufw' in packages"
# 服务配置
- name: 配置Nginx默认页面
copy:
content: "Hello from Ansible!"
dest: /var/www/html/index.nginx-debian.html
when: "'nginx' in packages"
- name: 确保服务运行
service:
name: "{{ item }}"
state: started
enabled: yes
loop:
- nginx
- fail2ban
handlers:
- name: 重启SSH服务
service:
name: sshd
state: restarted
使用说明
-
准备工作:
- 在控制节点安装 Ansible:
sudo apt install ansible - 配置目标服务器清单
/etc/ansible/hosts:[web_servers] server1 ansible_host=192.168.1.10 server2 ansible_host=192.168.1.11
- 在控制节点安装 Ansible:
-
执行 Playbook:
ansible-playbook -i /etc/ansible/hosts server_setup.yml -K
功能说明
-
基础配置:
- 自动设置时区为东八区
- 创建具有 sudo 权限的管理员账户
- 配置 SSH 公钥认证
-
安全加固:
- 修改 SSH 默认端口为 2222
- 禁用 root 远程登录
- 安装配置 UFW 防火墙和 Fail2Ban
-
服务部署:
- 自动安装 Nginx 并设置默认页面
- 确保关键服务开机自启
-
扩展建议:
# 添加数据库安装 - name: 安装MySQL apt: name: mysql-server state: present # 配置环境变量 - name: 设置JAVA_HOME lineinfile: path: /etc/environment line: 'JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"'
最佳实践:使用 Ansible Vault 加密敏感变量:
ansible-vault create secrets.yml在 Playbook 中通过
vars_files引入加密文件
此 Playbook 遵循幂等性原则,可安全重复执行。可根据实际需求调整 vars 部分变量值,或扩展 tasks 实现自定义配置。
更多推荐


所有评论(0)