本文由【云老大】 TG@yunlaoda360 撰写
环境准备
- 安装 Ansible :在控制机上安装 Ansible,可通过包管理工具如 pip 等进行安装,如使用 pip,命令为pip install ansible。
- 配置 Ansible 主配置文件 :根据需要修改 Ansible 的主配置文件ansible.cfg,指定 SSH 连接的超时时间、是否启用主机密钥检查等参数。
- 准备云服务器的 SSH 密钥对 :为云服务器配置 SSH 密钥对,以便 Ansible 能够通过 SSH 连接并管理云服务器,可使用ssh-keygen命令生成密钥对,并将公钥部署到云服务器上。
定义 Ansible 清单文件
- 创建清单文件 :创建一个清单文件(inventory 文件),如inventory.ini,列出所有要管理的云服务器的 IP 地址或主机名,以及将它们分组以便于分类管理,例如:
- ini
- [webservers] 192.168.1.10 ansible_ssh_private_key=/path/to/private_key 192.168.1.11 ansible_ssh_private_key=/path/to/private_key [databases] 192.168.1.20 ansible_ssh_private_key=/path/to/private_key
- 这里,ansible_ssh_private_key指定了用于 SSH 连接的私钥文件路径。
编写 Ansible 配置脚本(Playbook)
- 创建 Playbook 文件 :创建一个 YAML 格式的 Playbook 文件,如configure_servers.yml,定义对云服务器的一系列配置任务,例如安装软件包、配置防火墙、创建用户等。
- 编写任务 :在 Playbook 中,使用 Ansible 模块编写具体任务,以下是一个简单的 Playbook 示例,展示了如何在 Web 服务器上安装 Nginx 并启动服务:
- yaml
- 复制
- - name: Configure Web Servers hosts: webservers become: yes tasks: - name: Install Nginx apt: name: nginx state: present - name: Start Nginx Service service: name: nginx state: started enabled: yes
- 其中,hosts指定了要对哪些主机组执行任务,become: yes表示以具有 sudo 权限的用户身份执行任务,tasks列表中的每项任务定义了具体的配置操作,使用了apt模块安装 Nginx 和service模块启动服务。
执行 Ansible Playbook
- 运行 Playbook :在控制机上执行命令ansible-playbook configure_servers.yml,Ansible 会根据清单文件中定义的服务器列表,依次连接到每台云服务器,并按照 Playbook 中定义的任务顺序执行配置操作。
- 查看执行结果 :Ansible 会输出每个任务在每台服务器上的执行结果,包括成功、失败或跳过的情况,方便你了解配置任务的执行情况,并根据需要进行调整和修正。
状态管理与回滚
- 利用 Ansible 的幂等性 :Ansible 的任务具有幂等性,即多次执行相同的 Playbook 不会对系统造成额外的影响,这使得可以安全地重复运行配置脚本,以确保云服务器始终处于期望的配置状态。
- 版本控制与回滚策略 :将 Playbook 文件纳入版本控制系统,如 Git,以便跟踪配置脚本的变更历史,并在需要时能够快速回滚到之前的版本,从而恢复云服务器的特定配置状态。