<$>[注]
注:这是导航员指南书的内容的早期版本,这是数字海洋解决方案工程师的报价。本书的目的是帮助企业客户规划他们的基础设施需求,提供沿途的工作示例,并包括技术细节和为什么
使一些决定比其他更好。
该书和附加代码将在GitHub存储库中公开获取,因为这是一个早期版本,该书尚未完成,存储库尚未公开,但保持定制! <$>
这是本书的第一部分。
首先,我们将讨论我们将使用的工具,它们如何匹配在一起,以及它们如何对您有益,因为您开始在DigitalOcean上创建和管理您的基础设施。
我们的工具带
我們將首先使用 Terraform, Ansible, terraform-inventory
和 Git 。
地形
Terraform是一个开源工具,允许您轻松地将基础设施描述为代码,这意味着您可以以相同的方式版本控制您的资源,如果您正在编写程序,这允许您在遇到错误时返回工作状态。
Terraform 使用一个声明语法(HCL)的设计,使人类和计算机都很容易理解。
我们将使用Terraform创建我们的基础设施 - 即创建Droplets,保留IP,防火墙,区块存储量和DigitalOcean负载平衡器 - 但我们不会使用它来配置这些资源。
有几个资源,我们建议如果你想了解更多关于Terraform:
可见
Ansible是一个 配置管理工具,允许您系统地处理系统的更改,以保持其完整性。
Ansible 播放簿是 YAML 文件,定义你想要管理的自动化。像 Terraform,你可以版本控制你的播放簿。与 Terraform 不同,资源配置的改变不需要破坏和重建该资源; Ansible 将配置推向你的基础设施。
Ansible 使用 SSH 连接,所以您不需要在目标节点上安装代理来使用它. 然而,这意味着 Ansible 需要知道要连接到哪个终端,这通常是用库存文件定义的。
Ansible Playbooks 调用模块以进行配置更改或执行命令. Ansible 有许多内置模块来控制流行的软件或云供应商,包括 DigitalOcean。在命令行中工作时,ansible-doc 命令是一种轻松的方式来查看模块的选项和细节。一个例子是ansible-doc -l
来列出模块或调用特定模块来查看文档,ansible-doc digital_ocean
。Playbooks 可以作为角色包,以便轻松共享。角色的主要公共存储库是 Ansible Galaxy。本书中的代码示例使用多个角色来应用配置。
值得注意的是,Ansible 不强制执行状态. 运行播放簿只会运行播放簿中的命令. 直接对由Ansible管理的服务器进行更改可能会导致意想不到的后果。
如果您想了解更多关于Ansible的信息,我们会推荐几种资源。Red Hat拥有Ansible项目,并提供培训选项,其中包括免费以及更先进的视频课程:
- DO007 Ansible Essentials
- DO407 自动化与 Ansible
- Linux Academy: Ansible Quick Start
- Ansible: Up and Running by Lorin Hochstein
地形发明
terraform-inventory
是一个动态库存脚本,从Terraform的状态文件中提取资源信息,并以一种方式输出它,Ansible可以用来针对特定主机执行播放簿时。
去
我们将使用Git作为我们的版本控制系统,您不需要对Git的深入知识,但需要了解((https://www.digitalocean.com/community/tutorial_series/introduction-to-git-installation-usage-and-branches)。
本书的存储库托管在 GitHub,但你可以使用任何Git托管服务进行自己的部署,如GitHub, GitLab或 Bitbucket。
可选工具
DigitalOcean CLI 实用程序doctl
通常有助于通过 API 快速访问您的帐户以创建或获取资源信息,您可以在 项目 README中找到设置doctl
的说明,并在其 官方文档中找到完整的使用信息。
设置控制器 Droplet
我们将使用Ubuntu 18.04 x64 (Bionic Beaver) Droplet,我们将其配置为在创建Droplet时安装所需的所有工具。
注意:如果您更舒适地使用其他操作系统(如本地计算机上的 macOS),则只要它符合 Ansible 的系统要求就可以这样做。
要开始,你需要:
您可以创建一个在 https://www.digitalocean.com/.
- 一个 SSH密钥添加到您的DigitalOcean帐户。
- 一个 DigitalOcean API代币与读取/写入权限
现在是时候创建Droplet(https://www.digitalocean.com/docs/droplets/how-to/create/)。我们将使用以下选项:
- 图像: Ubuntu 18.04 x64.
- 尺寸: 1GB标准Droplet
- **数据中心区域:**您的选择
- **额外选项:**私人网络,备份,用户数据和监控
- SSH键:选择您的
当您选择用户数据选项时,会打开一个文本字段。 用户数据是用户在创建时可以向 Droplet 提供的任意数据。
我们将使用云配置脚本来安装Python 2.7,pip
(Python包管理器),Git,zip
,Terraform,terraform-inventory
和Ansible。
您也可以手动安装此软件,如果您喜欢,Terraform和terraform-inventory
是Go二进制,需要在您的$PATH
内放置。我们建议安装Ansible与Pip而不是像APT这样的系统包管理器,因为它保持最新状态,允许您在virtualenv
内安装。
1#cloud-config
2# Source: https://git.io/nav-guide-cloud-config
3
4package_upgrade: true
5
6packages:
7 - python
8 - python-pip
9 - git
10 - zip
11 - jq
12
13runcmd:
14 - [curl, -o, /tmp/terraform.zip, "https://releases.hashicorp.com/terraform/0.11.7/terraform_0.11.7_linux_amd64.zip"]
15 - [unzip, -d, /usr/local/bin/, /tmp/terraform.zip]
16 - [curl, -L, -o, /tmp/terraform-inventory.zip, "https://github.com/adammck/terraform-inventory/releases/download/v0.7-pre/terraform-inventory_v0.7-pre_linux_amd64.zip"]
17 - [unzip, -d, /usr/local/bin/, /tmp/terraform-inventory.zip]
18 - [pip, install, -U, pip, ansible]
19 - [git, clone, "https://github.com/digtialocean/navigators-guide.git"]
从这里,点击 Create. Droplet 本身将快速启动并运行,但其用户数据中的命令将需要一段时间才能完成运行。
最后一步是为控制器Droplet创建一个SSH密钥,我们将稍后将其放置在我们的基础设施中的每个节点上。当您登录到您的服务器时,您可以运行这个单线程,以创建一个密钥并用您的Droplet主机名评论它:
1ssh-keygen -t rsa -C $(hostname -f)
您将能够在 /home/your_username/.ssh/
中看到公共和私钥对。
什么是下一步?
您的控制器 Droplet 已设置,这意味着您可以开始使用这些工具。在下一章中,我们将向您展示如何使用这些工具开始创建高度可用的基础设施。