Vagrant是一款开源软件,它允许开发者以编程的方式管理虚拟机,帮助团队之间共享开发环境。本书不仅介绍Vagrant的各个知识点,还包含很多相关生态的应用技巧。本书前8章以循序渐进的方式介绍Vagrant的各个功能点和特性,后6章则详细介绍5种主流配置管理工具(Ansible、Chef、Docker、Puppet和Salt),以及它们是如何与Vagrant协同工作的。阅读完本书,相信读者一定能有所收获。
本书可供Vagrant开发与运维的初学者阅读,已经对Vagrant有所了解的读者在阅读本书后也将更好地理解和使用Vagrant。无论读者处于什么水平,通过学习本书讲解的知识点和应用技巧,可以有所收获。
1.本书以循序渐进的方式介绍了Vagrant的各个功能点和特性,还包含很多相关生态的应用技巧。
2.本书先介绍如何使用强大的 DevOps 工具 Vagrant,并概述它如何适应 DevOps 环境。掌握基础知识后,本书将帮助读者了解如何配置 Vagrant 以及网络。
3.本书提供了对配置 Shell 脚本的解析,还将指导读者学习如何配合使用Vagrant 和配置管理工具(如 Chef、Ansible、Docker、Puppet 和 Salt)。
4.本书可同时作为Vagrant的入门书籍或已掌握基础知识的读者的进阶读物,扫码可获配套源代码。
5.从本书中读者将学到以下主要内容:
● Vagrant 提供的开发特性;
● 在 Windows、macOS 和 Linux 上安装 Vagrant 和 VirtualBox;
● 利用 Vagrant 创建强大的开发环境;
● 使用 Docker、Chef 和 Puppet 等 DevOps 工具;
● 了解关于 Vagrant 的相关知识,包括网络、插件和配置;
● 使用 Vagrant Cloud 安装和管理 Vagrant box。
Alex Braunton是一位热情的网络开发人员,他为中小型企业构建,部署和维护复杂的Web应用程序。他喜欢探索新技术并创建有关他们的YouTube教程视频。他有很多的视频基于Vagrant。在技术领域之外,亚历克斯是一个自认为盆景的爱好者,喜欢自然散步。
第 1章 简介 1
1.1 从Vagrant和DevOps开始 1
1.1.1 走进Vagrant世界 2
1.1.2 Vagrant的优点 3
1.1.3 什么是VirtualBox 4
1.1.4 什么是DevOps 5
1.2 DevOps中的Vagrant 5
1.2.1 Vagrant在DevOps中的开发状态 5
1.2.2 Vagrant如何适应DevOps 7
1.2.3 将Vagrant用作日常DevOps工具 7
1.3 总结 8
第 2章 安装VirtualBox和Vagrant 9
2.1 在Windows中安装VirtualBox和Vagrant 10
2.1.1 准备工作 10
2.1.2 在Windows 10中安装VirtualBox 11
2.1.3 在Windows 10中安装Vagrant 13
2.2 在Linux中安装VirtualBox和Vagrant 14
2.2.1 准备工作 15
2.2.2 在Ubuntu 16.04中安装VirtualBox 15
2.2.3 在Ubuntu 16.04操作系统中安装Vagrant 16
2.3 在macOS中安装VirtualBox和Vagrant 17
2.3.1 准备工作 17
2.3.2 在macOS 10.11.3中安装VirtualBox 18
2.3.3 在macOS 10.13.3中安装Vagrant 19
2.4 总结 20
第3章 命令行界面—Vagrant命令 21
3.1 Vagrant命令概述 21
3.2 深入了解Vagrant命令 23
3.2.1 关于命令格式的简要说明 23
3.2.2 常规Vagrant命令和子命令 24
3.2.3 Vagrant的配置命令和子命令 25
3.2.4 日常使用的Vagrant命令和子命令 28
3.2.5 特定应用程序的Vagrant命令和子命令 35
3.2.6 使用这些命令的典型的Vagrant工作流 39
3.3 故障排除 41
3.4 总结 42
第4章 探索Vagrant box—Vagrant Cloud 43
4.1 Vagrant box 44
4.1.1 Vagrant box文件 44
4.1.2 如何安装Vagrant box 45
4.1.3 如何删除Vagrant box 46
4.1.4 box版本管理 48
4.2 Vagrant Cloud 48
4.3 将Vagrant box上传到Vagrant Cloud 54
4.4 Vagrant box的企业级解决方案 60
4.5 总结 60
第5章 使用Vagrantfile配置Vagrant 62
5.1 了解Vagrantfile 62
5.1.1 新建Vagrantfile 63
5.1.2 Vagrantfile语法 64
5.2 Vagrantfile选项 64
5.2.1 Vagrant机器配置(config.vm) 64
5.2.2 Vagrant SSH配置(config.ssh) 67
5.2.3 Vagrant配置(config.vagrant) 69
5.2.4 其他Vagrantfile配置 69
5.3 Vagrantfile故障排除 70
5.4 总结 72
第6章 Vagrant中的网络 73
6.1 端口转发 73
6.1.1 端口转发配置 74
6.1.2 端口转发知识点 77
6.2 专用网络 78
6.2.1 DHCP 78
6.2.2 静态IP 80
6.2.3 IPv6 81
6.3 公用网络 81
6.3.1 DHCP 82
6.3.2 静态IP 83
6.3.3 网桥 83
6.4 总结 83
第7章 多机器 85
7.1 多机器特性 85
7.1.1 多机器负载均衡 86
7.1.2 使用Vagrant多机器配置功能配置Web服务与数据库 93
7.2 总结 99
第8章 探索Vagrant插件与文件同步 100
8.1 了解Vagrant插件 100
8.1.1 Vagrant插件概述 101
8.1.2 管理Vagrant插件 101
8.1.3 Vagrant中的plugin命令与子命令 103
8.1.4 Vagrant插件的搜索、安装与使用 104
8.2 Vagrant文件同步 109
8.3 总结 112
第9章 Shell脚本—服务开通 114
9.1 Vagrant服务开通 114
9.2 了解配置管理 115
9.3 Vagrant服务开通的基本用法 116
9.4 使用文件选项进行Vagrant服务开通 117
9.4.1 使用单个文件 117
9.4.2 使用整个文件夹 118
9.5 Vagrant Shell配置管理 119
9.5.1 内联脚本 121
9.5.2 外部脚本 121
9.5.3 脚本参数 122
9.6 总结 123
第 10章 Ansible—使用Ansible配置Vagrant box 124
10.1 了解Ansible 125
10.2 安装Ansible 125
10.3 使用Ansible配置Vagrant 127
10.3.1 在主机上使用Ansible配置Vagrant 127
10.3.2 在客户机上使用Ansible配置Vagrant 130
10.3.3 附加Ansible配置 132
10.4 Ansible Playbook 134
10.5 总结 135
第 11章 Chef—使用Chef配置Vagrant box 136
11.1 了解Chef 137
11.2 Chef Cookbook 137
11.2.1 Recipe 138
11.2.2 模板 138
11.2.3 属性值 138
11.2.4 扩展 139
11.2.5 文件分发 139
11.3 Chef Supermarket 139
11.4 使用Chef配置Vagrant 142
11.4.1 在macOS上安装Chef 142
11.4.2 使用Chef Solo配置Vagrant机器 144
11.4.3 使用Chef Client配置Vagrant机器 147
11.5 总结 148
第 12章 Docker—Docker与Vagrant一起使用 149
12.1 了解Docker 150
12.2 使用Docker Hub查找和拉取镜像 151
12.3 基本用法—启动容器 153
12.3.1 docker pull 154
12.3.2 docker run 154
12.3.3 docker stop 155
12.3.4 docker start 155
12.3.5 docker search 156
12.4 使用Docker配置Vagrant机器 156
12.5 Vagrant中的Docker特定配置 158
12.5.1 镜像 159
12.5.2 build_image 159
12.5.3 pull_images 160
12.5.4 run 160
12.5.5 post_install_provisioner 163
12.6 总结 164
第 13章 Puppet—使用Puppet配置Vagrant box 165
13.1 了解Puppet 165
13.2 Puppet Apply和Puppet Agent 167
13.2.1 Puppet Apply 167
13.2.2 Puppet Agent 170
13.3 Puppet Manifest示例和语法 171
13.4 使用Puppet进行服务开通 173
13.4.1 使用Puppet Apply进行服务开通 173
13.4.2 使用Puppet Agent进行服务开通 176
13.5 总结 181
第 14章 Salt—使用Salt配置Vagrant box 183
14.1 了解Salt 183
14.1.1 Salt服务器端 184
14.1.2 Salt客户端 184
14.1.3 模块 184
14.2 Salt State 186
14.3 使用Salt配置Vagrant 186
14.4 Vagrant中可以使用的Salt选项 190
14.4.1 Install选项 190
14.4.2 Minion选项 191
14.4.3 Master选项 192
14.4.4 执行状态 192
14.4.5 执行器 192
14.4.6 输出控制 192
14.5 Vagrant备忘清单 193
14.5.1 测试Vagrantfile 193
14.5.2 保存快照 193
14.5.3 状态 193
14.5.4 box 194
14.5.5 硬件规格 194
14.5.6 代码部署 194
14.5.7 多机器 195
14.5.8 通用基础 195
14.6 总结 195