Libvirt是与较新版本的Linux(和其他OS)的虚拟化功能进行交互的工具包。 该Salt cloud provider驱动程序当前是针对libvirt的qemu-kvm实现提供支持。
- libvirt >= 1.2.18 (older might work)
- libvirt-python
对于每个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
虚拟机是从所谓的“云配置文件”中克隆的。 可以在/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
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域中运行。
# 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域也不得更改