SaltStack - Salt for Cloud Infrastructure

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

  • Cloud Config :  Salt Cloud的主要配置文件是/etc/salt/cloud,它适用于所有VM.主配置文件名为 Cloud Config .

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

  • 云配置文件 : 要定位特定VM,我们还可以使用特殊配置文件,该文件仅适用于该特定VM,它们位于/etc/salt/cloud.profiles.d/*.conf,这些文件称为 Cloud个人资料.

对于虚拟机,首先应用云配置中的设置,然后在 Cloud Providers 中,最后覆盖由 Cloud Profiles 完成.

安装Salt Cloud

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

 
 pip install salt-cloud

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

配置虚拟机

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

云提供商

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

  • 在/etc/salt/cloud.providers.d/

  • 使用 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

Cloud Profile

云配置文件指定虚拟机映像和大小.它可以在 - /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 -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