导航仪指南初始环境设置

<$>[注] :这是导航员指南书的内容的早期版本,这是数字海洋解决方案工程师的报价。本书的目的是帮助企业客户规划他们的基础设施需求,提供沿途的工作示例,并包括技术细节和为什么使一些决定比其他更好。

该书和附加代码将在GitHub存储库中公开获取,因为这是一个早期版本,该书尚未完成,存储库尚未公开,但保持定制! <$>

这是本书的第一部分。

首先,我们将讨论我们将使用的工具,它们如何匹配在一起,以及它们如何对您有益,因为您开始在DigitalOcean上创建和管理您的基础设施。

我们的工具带

我們將首先使用 Terraform, Ansible, terraform-inventoryGit

地形

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项目,并提供培训选项,其中包括免费以及更先进的视频课程:

地形发明

terraform-inventory是一个动态库存脚本,从Terraform的状态文件中提取资源信息,并以一种方式输出它,Ansible可以用来针对特定主机执行播放簿时。

我们将使用Git作为我们的版本控制系统,您不需要对Git的深入知识,但需要了解((https://www.digitalocean.com/community/tutorial_series/introduction-to-git-installation-usage-and-branches)。

本书的存储库托管在 GitHub,但你可以使用任何Git托管服务进行自己的部署,如GitHub, GitLabBitbucket

可选工具

DigitalOcean CLI 实用程序doctl通常有助于通过 API 快速访问您的帐户以创建或获取资源信息,您可以在 项目 README中找到设置doctl的说明,并在其 官方文档中找到完整的使用信息。

设置控制器 Droplet

我们将使用Ubuntu 18.04 x64 (Bionic Beaver) Droplet,我们将其配置为在创建Droplet时安装所需的所有工具。

注意:如果您更舒适地使用其他操作系统(如本地计算机上的 macOS),则只要它符合 Ansible 的系统要求就可以这样做。

要开始,你需要:

您可以创建一个在 https://www.digitalocean.com/.

现在是时候创建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 已设置,这意味着您可以开始使用这些工具。在下一章中,我们将向您展示如何使用这些工具开始创建高度可用的基础设施。

Published At
Categories with 技术
comments powered by Disqus