Ansible自动化运维实践

Ansible自动化运维工具的使用实践,包括Playbook编写、主机管理、批量部署等。
Ansible自动化运维实践

Ansible自动化运维实践

Ansible是一个开源的自动化运维工具,使用简单的YAML语法来描述自动化任务。

安装Ansible

# Ubuntu/Debian
sudo apt update
sudo apt install ansible

# CentOS/RHEL
sudo yum install epel-release
sudo yum install ansible

# macOS
brew install ansible

# Python pip
pip install ansible

配置清单文件

# /etc/ansible/hosts
[webservers]
web1.example.com
web2.example.com

[databases]
db1.example.com
db2.example.com

[all:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=~/.ssh/id_rsa

基本命令

# 测试连接
ansible all -m ping

# 执行命令
ansible webservers -m shell -a "uptime"

# 复制文件
ansible all -m copy -a "src=/etc/hosts dest=/tmp/hosts"

# 安装软件包
ansible webservers -m apt -a "name=nginx state=present" --become

Playbook示例

# nginx-install.yml
---
- name: Install and configure Nginx
  hosts: webservers
  become: yes
  
  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes
    
    - name: Start Nginx service
      systemd:
        name: nginx
        state: started
        enabled: yes
    
    - name: Copy custom config
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: restart nginx
  
  handlers:
    - name: restart nginx
      systemd:
        name: nginx
        state: restarted

运行Playbook

# 执行Playbook
ansible-playbook nginx-install.yml

# 检查语法
ansible-playbook nginx-install.yml --syntax-check

# 试运行
ansible-playbook nginx-install.yml --check

# 指定主机
ansible-playbook nginx-install.yml --limit webservers

变量和模板

# group_vars/webservers.yml
nginx_port: 80
server_name: example.com

# templates/nginx.conf.j2
server {
    listen {{ nginx_port }};
    server_name {{ server_name }};
    
    location / {
        root /var/www/html;
        index index.html;
    }
}

评论 (0)