使用 Vagrant 调试 Ansible Playbook
简介
本文主要介绍使用 Vagrant 本地调试 Ansible Playbook 的最佳实践。
我平时用 ansible 做一些自动化任务,难免要写很多 playbook,如果直接将写的 playbook 在线上或者真实的服务器运行难免会担心出错,而且很可能会导致严重的错误。最好的方法就是先在本地虚拟机测试好,然后跑到真实的环境。我们可以将 Vagrant 和 ansible 结合使用来轻松地在本地调试 playbook。为什么使用这种方式呢?我觉得有如下好处(当然用了之后就知道有多爽了):
- 虚拟机用 Vagrant 管理,随时可以方便地删除、重建,这些操作都是简单的命令行;
- ansible 脚本在本地虚拟机可以随便折腾,哪怕 VM 折腾坏了,可以马上重建 VM;
- 所有操作都是基于配置文件,没有界面点触式操作,可以很好地将其工程化,放到 git 仓库统一管理;
Vagrant 结合 Ansible 的 workflow
Vagrant 结合 Ansible 的主要工作原理是使用 Vagrant 的 ansible_local 或者 ansible 配置器(Provisioner),这两个的唯一区别是前者会在 provision 时自动在 VM 安装 ansible,后者不会自动安装,需要自行安装。我选择用 ansible_local 配置器,懒得装一遍 ansible… 而且在 vagrant destroy
销毁虚拟机后重建时还能得到与之前一致的配置。
下面介绍下我本地调试 ansible playbook 脚本的 workflow。
- 使用 Vagrantfile 定义虚拟机
Vagrant.c