置备虚拟机是什么意思?

What does it mean to provision a virtual machine?

我看到 "provisioning" 这个词在虚拟化中随处可见,但我似乎无法在 google 上找到它的明确定义。它只涉及设置客户操作系统并为其分配资源,还是还包括下载软件和更新?或者它是否包括更多内容,例如设置共享文件夹和配置?

定义和示例

来自definition of Puppet

Puppet is a configuration management system that allows you to define the state of your IT infrastructure, then automatically enforces the correct state.

Vagrant 允许您使用 shell 脚本、Puppet、Chef 或 Ansible 等配置器来配置您的机器作为 provisioning process:

的一部分

Provisioners in Vagrant allow you to automatically install software, alter configurations, and more on the machine as part of the vagrant up process.

一般来说,如果您想自动设置或配置节点,无论是否是虚拟的,那么支持硬件 and/or OS 配置的配置管理工具就是您所需要的。

预配通常意味着功能状态 - 超出普通服务器创建的状态。

一个典型的例子是:提供一个网络服务器或提供20个网络服务器。 实际上这意味着: - 创建 20 个服务器。 - 安装提供网络流量所需的软件包 - 可能创建一个负载均衡器 -(也许)将所有这些盒子加入负载均衡器

通过 Chef Provisioning 表示的示例(来自:https://github.com/vinyar/tokyo_chef_provisioning

## Setting up empty array
elb_instances = []

## Generic name
name = 'stack_example'

## machine_batch allows parallel creation of machines
machine_batch 'hello_world' do
  1.upto(20) do |n|
    ## Just a variable to make things easier
    instance = "#{name}-webserver-#{n}"
    ## Machine resource is used to create a single server
    machine instance do
      machine_options ({
        bootstrap_options: { 
          :instance_type => "t1.micro",
          image_id: 'ami-b6bdde86',
          :key_name => "stack_key"},
        :ssh_username => "root"})
      recipe "webserver"
      tag "#{name}-webserver"
      converge true
    end
    ## Populating array with instance name on each loop.
    elb_instances << instance
  end
end

## Creating load balancer
load_balancer "#{name}-webserver-lb" do
  load_balancer_options({
    :availability_zones => ["us-west-2a", "us-west-2b", "us-west-2c"],
    :listeners => [{:port => 80, :protocol => :http, :instance_port => 80, :instance_protocol => :http }],
  })
  ## Passing array as a list of machines to the load balancer
  machines elb_instances
end