Skip to content

Latest commit

 

History

History
92 lines (78 loc) · 3.48 KB

15-16.Salt-Cloud-Getting-Started-With-Libvirt.md

File metadata and controls

92 lines (78 loc) · 3.48 KB

Getting Started With Libvirt

Libvirt是与较新版本的Linux(和其他OS)的虚拟化功能进行交互的工具包。 该Salt cloud provider驱动程序当前是针对libvirt的qemu-kvm实现提供支持。

http://www.libvirt.org/

Host Dependencies - 主机系统的依赖关系

  • libvirt >= 1.2.18 (older might work)

Salt-Cloud Dependencies - Salt-Cloud的依赖关系

  • libvirt-python

Provider Configuration - Provider驱动程序配置

对于每个KVM主机,都需要设置一个provider驱动程序。 该驱动程序当前是映射到一个libvirt守护程序(例如,一个KVM主机)。

/etc/salt/cloud.providers/etc/salt/cloud.providers.d/*.conf中设置provider驱动程序的配置文件。

# Set up a provider with qemu+ssh protocol
kvm-via-ssh:
  driver: libvirt
  url: qemu+ssh://user@kvm.company.com/system?socket=/var/run/libvirt/libvirt-sock

# Or connect to a local libvirt instance
local-kvm:
  driver: libvirt
  url: qemu:///system
  # work around flag for XML validation errors while cloning
  validate_xml: no

Cloud Profiles - 云主机配置文件

虚拟机是从所谓的“云配置文件”中克隆的。 可以在/etc/salt/cloud.profiles/etc/salt/cloud.profiles.d/*.conf中设置该配置文件:

  • 配置一个可用的虚机配置文件:
centos7:
  # points back at provider configuration
  provider: local-kvm
  base_domain: base-centos7-64
  ip_source: ip-learning
  ssh_username: root
  password: my-very-secret-password
  # /tmp is mounted noexec.. do workaround
  deploy_command: sh /tmp/.saltcloud/deploy.sh
  script_args: -F
  # grains to add to the minion
  grains:
    clones-are-awesome: true
  # override minion settings
  minion:
    master: 192.168.16.1
    master_port: 5506

在上面的虚机配置基础上,使用以下salt命令克隆出一个虚机的实例:

# salt-cloud -p centos7 my-centos7-clone

这将在云主机上创建一个名为my-centos7-clone的实例。 Minion id也将设置为my-centos7-clone

如果命令是在salt-master主机上执行的,则其salt key将自动在主机上得到签名。

创建实例并安装Salt-minion之后,即可使用Salt验证到该实例的连接性:

# salt my-centos7-clone test.version

Required Settings - 必需的配置项

libvirt始终需要设置配置项:

centos7:
  provider: local-kvm
  # the domain to clone
  base_domain: base-centos7-64
  # how to obtain the IP address of the cloned instance
  # ip-learning or qemu-agent
  ip_source: ip-learning

ip_source设置控制如何确定克隆实例的IP地址。 使用ip-learning时,会从libvirt请求IP。 这需要最新的libvirt版本,并且可能仅适用于NAT网络。 另一个选择是使用qemu-agent,这要求安装qemu-agent并将其配置为在启动时在base domain域中运行。

Optional Settings - 可选的配置项

# Username and password
ssh_username: root
password: my-secret-password

# Cloning strategy: full or quick
clone_strategy: quick

clone_strategy控制克隆的完成方式。 如果设置为full,则将对其进行复制以创建一个完全独立的克隆实例。 如果使用quick,则将base_domain域的磁盘用作克隆实例的后备磁盘,这个方式下几乎瞬时可以完成克隆操作,但会降低磁盘可写入性能。 quick策略有许多使用要求:

  • 磁盘必须是qcow2类型
  • base domain域必须是关闭状态的
  • 创建克隆后,原base domain域也不得更改