SaltStack - 用于云基础设施的 Salt

Salt 提供了一个单独的模块 Salt Cloud,用于提供各种云提供商的虚拟机,例如 Amazon AWS、Google Compute 等。Salt Cloud 是一个通用接口,用于配置和管理各种云提供商的虚拟机。

  • 云配置 − Salt Cloud 的主要配置文件是 /etc/salt/cloud,它适用于所有虚拟机。主要配置文件称为 云配置

  • 云提供商 − 要定位特定的云提供商,我们可以使用特定的配置文件,它们位于 /etc/salt/cloud.providers.d/*.conf,这些被称为 云提供商

  • 云配置文件 −要定位特定的虚拟机,我们还可以使用一个特殊的配置文件,该文件仅适用于该特定虚拟机,位于 /etc/salt/cloud.profiles.d/*.conf,这些配置文件称为 云配置文件

对于虚拟机,首先应用 云配置 中的设置,然后应用 云提供商 中的设置,最后由 云配置文件 覆盖。

Salt Cloud 的安装

默认情况下,Salt Cloud 内置于 Salt 中,可随时使用。如果不可用,我们可以使用以下命令进行安装。

pip install salt-cloud

由于 Salt Cloud 是一个单独的模块并在其自己的进程中运行,因此它也可以安装在 Salt Minion 系统中,而不是 Salt Master 中。

配置虚拟机

要配置虚拟机,我们需要定义云提供商和云配置文件。创建两者后,我们可以配置一个新的虚拟机来使用它。

云提供商

云主机信息在云提供商配置文件中配置。通常,需要配置的基本信息包括云驱动程序、用户名、密码、私钥等。让我们创建一个名为my-amazon-cloud的新云提供商。

  • 在/etc/salt/cloud.providers.d/下创建一个文件my-amazon-cloud.conf

  • 使用ec2驱动程序添加新提供商。

my-amazon-cloud:
   driver: ec2
   id: '<AWS_ID>'
   key: '<AWS_KEY>'
   private_key: /path/to/privatekey.pem
   keyname: <name of the key>
   securitygroup: default

   minion:
      master: <master server>

Salt 为各种云主机提供开箱即用的驱动程序,例如 GoGrid、HP Cloud、Google Compute Engine (GCE)、Amazon AWS、Joyent、Linode、OpenNebula、ProfitBricks、Proxmox、Saltify、VexxHost、VMWare 等。

配置云提供商后,我们可以查询提供商的可用位置、可用的机器映像及其各种大小。

salt-cloud --list-location my-amazon-cloud
salt-cloud --list-images my-amazon-cloud
salt-cloud --list-sizes my-amazon-cloud

云配置文件

云配置文件指定虚拟机映像和大小。可以在 - /etc/salt/cloud.profiles.d/ 下进行配置。让我们创建一个简单的配置文件 simple.conf

aws_micro:
   provider: my-amazon-cloud
   image: <image_id>
   size: <machine_id e.g. t1.micro>

虚拟机

配置提供商和配置文件后,我们可以轻松地使用 salt-cloud 提供虚拟机,如下所示。

salt-cloud -p aws_micro master minion1 minion2

其中,p – 配置文件名称 master,minion1 和 minion2 是新的虚拟机。

可以使用以下命令获取新创建的虚拟机的详细信息。

salt-cloud --query

可以使用以下命令销毁虚拟机 −

slat-cloud -d master minion1

云图

云图是一种特殊的格式,可以一次创建多个虚拟机。映射文件的格式是指定配置文件,然后添加其下的虚拟机列表。

示例映射文件如下 −

micro:
   - web1
   - web2
large:
   - db1
   - db2

可以将映射文件作为参数传递给 salt-cloud 命令来创建虚拟机,如下所示 −

salt-cloud -m /path/to/mapfile