下面我用从入门到实践的方式,给你讲清楚 怎样用 Ansible 做自动化,包含概念、结构、示例和常见场景。
Ansible 是一个基于 SSH 的自动化运维工具,用来:
特点:
| 概念 | 说明 |
|---|---|
| Control Node | 运行 Ansible 的机器 |
| Managed Node | 被管理的服务器 |
| Inventory | 主机清单(IP / 分组) |
| Playbook | 自动化任务脚本(YAML) |
| Task | 一个具体操作(如安装软件) |
| Module | Ansible 提供的功能单元 |
yum install -y epel-release
yum install -y ansible
apt update
apt install -y ansible
ansible --version
hosts.ini[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.20
[all:vars]
ansible_user=root
ansible_ssh_private_key_file=~/.ssh/id_rsa
测试连接:
ansible all -i hosts.ini -m ping
# deploy_nginx.yaml
- hosts: web
become: yes
tasks:
- name: Install nginx
yum:
name: nginx
state: present
- name: Start nginx
service:
name: nginx
state: started
enabled: yes
运行:
ansible-playbook -i hosts.ini deploy_nginx.yaml
ansible web -i hosts.ini -m shell -a "uptime"
- name: Copy config
copy:
src: ./nginx.conf
dest: /etc/nginx/nginx.conf
- name: Create user
user:
name: deploy
groups: wheel
state: present
- name: Install on CentOS
yum:
name: httpd
when: ansible_os_family == "RedHat"
- name: Install packages
yum:
name: "{{ item }}"
state: present
loop:
- vim
- wget
- git
nginx_port: 80
- name: Set port
lineinfile:
path: /etc/nginx/nginx.conf
regexp: 'listen'
line: "listen {{ nginx_port }};"
ansible-vault create secret.yaml
ansible/
├── hosts.ini
├── playbooks/
│ └── deploy_web.yaml
├── group_vars/
│ └── web.yaml
└── roles/
ansible-galaxy init nginx
结构:
roles/nginx/
├── tasks/main.yaml
├── handlers/main.yaml
├── templates/
├── vars/main.yaml
调用:
- hosts: web
roles:
- nginx
✅ 初始化服务器
✅ 安装基础软件
✅ 配置防火墙
✅ 部署应用
✅ 启动服务
✅ 健康检查
❌ 不适合:
ansible 命令如果你愿意,我可以:
你主要想用 Ansible 做什么?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。