下面用「从零到可用」的思路,带你用 Ansible 管理服务器。内容偏实战,不堆概念。
Ansible 是 SSH + YAML,你写“剧本(playbook)”,它帮你批量在服务器上执行命令、装软件、改配置。
优点
# Linux / macOS
pip install ansible
# 或
apt install ansible
# 验证
ansible --version
Windows 不推荐做控制机,用 WSL 最省事
ssh-copy-id user@server_ip
| 概念 | 说明 |
|---|---|
| Inventory | 服务器清单 |
| Module | 执行单元(apt/yum/copy/service…) |
| Playbook | YAML 自动化脚本 |
| Task | 一个操作 |
| Role | 可复用的 playbook 包 |
# hosts.ini
[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.20
[all:vars]
ansible_user=ubuntu
ansible_python_interpreter=/usr/bin/python3
测试连通性:
ansible all -i hosts.ini -m ping
# 查看 uptime
ansible web -i hosts.ini -a "uptime"
# 安装 nginx
ansible web -i hosts.ini -m apt -a "name=nginx state=present" -b
# 重启服务
ansible web -i hosts.ini -m service -a "name=nginx state=restarted" -b
-b= sudo
# deploy_nginx.yml
- hosts: web
become: yes
tasks:
- name: Install nginx
apt:
name: nginx
state: present
update_cache: yes
- name: Start nginx
service:
name: nginx
state: started
enabled: true
执行:
ansible-playbook -i hosts.ini deploy_nginx.yml
- name: Copy config
copy:
src: ./nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
mode: '0644'
notify: Restart nginx
handlers:
- name: Restart nginx
service:
name: nginx
state: restarted
nginx_port: 80
- name: Print port
debug:
msg: "Port is {{ nginx_port }}"
ansible-galaxy init nginx
结构:
roles/nginx/
├── tasks/main.yml
├── handlers/main.yml
├── templates/nginx.conf.j2
└── vars/main.yml
调用:
- hosts: web
roles:
- nginx
| 模块 | 用途 |
|---|---|
| apt/yum | 装软件 |
| copy | 传文件 |
| template | 模板渲染 |
| lineinfile | 改某一行 |
| service | 服务管理 |
| user | 用户管理 |
| cron | 定时任务 |
| git | 拉代码 |
ansible_python_interpreterbecome: yesansible.cfg如果你愿意,我可以:
你主要管什么服务器?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。