Molecule有助于Ansible角色的开发和测试
项目描述
Molecule KubeVirt插件旨在允许使用KubeVirt容器来提供测试资源。
支持的平台
支持与任何作为 cloud-config 兼容镜像(也称为“云镜像”)分发的操作系统。
使用方法
要使用此插件,您需要在您的 molecule.yml 文件中设置 driver 和 platform 变量。
driver:
name: kubevirt
platforms:
- name: instance
image: quay.io/kubevirt/fedora-cloud-container-disk-demo
安装
驱动程序
此驱动程序支持 Ansible 2、3 和 4。
# Ansible >2
python3 -m pip install molecule-kubevirt
# Ansible 2
python3 -m pip install molecule-kubevirt 'openshift<0.12.0' 'kubernetes<12.0'
KubeVirt 安装
SSH 访问
默认情况下,驱动程序通过 VirtualMachineInstance Pod ip 连接到 ssh,而 molecule 需要能够直接通过 Pod ip ssh。
如果使用 kind 运行本地 Kubernetes
IP=$(docker container inspect kind-control-plane --format '{{ .NetworkSettings.Networks.kind.IPAddress }}')
sudo ip route add 10.244.0.0/16 via $IP # Linux
# sudo route -n add 10.244.0.0/16 $IP # MacOSX
如果使用 minikube 运行本地 Kubernetes
sudo ip route add 172.17.0.0/16 via $(minikube ip)
# sudo route -n add 172.17.0.0/16 $(minikube ip) # MacOSX
如果在目标 Kubernetes 集群内运行 molecule,路由将通过 CNI 确保连接。
驱动程序可以为 SSH 访问创建 Kubernetes 服务。当前支持的服务是 ClusterIP 和 NodePort。
NodePort
可以设置 NodePort。可以定义静态 nodePort,也可以设置端口的宿主目标。
ssh_service:
type: NodePort
# optional static port
nodePort: 32569
# host where nodePort can be reached
nodePort_host: localhost
ClusterIP
默认 SSH 服务是 ClusterIP,可以设置静态 clusterIP。
ssh_service:
type: ClusterIP
clusterIP: 10.96.102.231
Molecule 需要能够通过 ClusterIP ip ssh。
如果使用 Kind 运行本地 Kubernetes
IP=$(docker container inspect kind-control-plane --format '{{ .NetworkSettings.Networks.kind.IPAddress }}')
sudo ip route add 10.96.0.0/12 via $IP # Linux
# sudo route -n add 10.96.0.0/12 $IP # MacOSX
如果使用 Minikube 运行本地 Kubernetes,目前还没有已知解决方案。
如果在目标 Kubernetes 集群内运行 molecule,路由将通过 CNI 确保连接。
虚拟机自定义
如果没有在平台定义中提供,则会创建一些默认值。
如果没有在
domain.devices.interfaces
中定义带有name: default
的接口,则会创建一个带有brige: {}
和bus: virtio
的默认接口。如果没有在
domain.devices.disks
中定义带有name: boot
的磁盘,则会创建一个带有bus: virtio
的默认磁盘。如果没有在
networks
中定义带有name: default
的网络,则会创建一个带有pod: {}
和model: virtio
的默认网络。如果没有在
volumes
中定义带有name: boot
的卷,则会创建一个默认的卷,作为一个
containerDisk
分别设置了
image
、path
和imagePullPolicy
为平台image
、image_path
和image_pull_policy
。
如果
user_data
中定义了 cloud-config,则会将其与默认设置合并,为 'molecule' 用户设置 ssh 公钥。
自定义示例
此示例配置演示了如何
使用 Kubevirt 的 CDI 替代
image
,使用dataVolumeTemplates
并覆盖默认的boot
卷。设置自定义资源注解
并添加第二个接口/网络
添加第二个磁盘/卷
使用 cloud-config 格式化和挂载额外的磁盘
---
dependency:
name: galaxy
driver:
name: kubevirt
platforms:
- name: instance
# annotate for calico static ip
annotations:
cni.projectcalico.org/ipAddrs: "[\"10.244.25.25\"]"
# use data volume facility in place of using 'image:'
dataVolumeTemplates:
- metadata:
name: disk-dv
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
preallocation: true
source:
http:
url: https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.raw.xz
domain:
resources:
limits:
cpu: "1"
memory: 3Gi
requests:
cpu: 200m
memory: 1Gi
devices:
interfaces:
# add a second device interface
- bridge: {}
name: multus
model: virtio
ports:
- port: 22
disks:
# add a second device disk
- name: emptydisk
disk:
bus: virtio
volumes:
# override default 'boot' volume with cdi data volume template source
- name: boot
dataVolume:
name: disk-dv
# add a second volume, must be same name as defined in device
- name: emptydisk
emptyDisk:
capacity: 2Gi
networks:
# add a second network for added device interface
- name: multus
multus:
# use a NetworkAttachement
networkName: macvlan-conf
# cloud-config format and mount additional disk
user_data:
# format additional disk
fs_setup:
- label: data_disk
filesystem: 'ext4'
device: /dev/vdb
overwrite: true
# mount additional disk
mounts:
- [ /dev/vdb, /var/lib/software, "auto", "defaults,nofail", "0", "0" ]
请参阅源代码中的 molecule/tests/molecule.yml 以获取完整示例。
在 Kubernetes 集群内部运行
您可以使用运行 tox 和/或 molecule 的容器来运行此驱动程序。请参阅以下内容作为基础镜像:
test-rolebinding 文件作为 ServiceAccount 示例
github_workflow 中的“Launch test”步骤,用于运行 tox 的 Kubernetes Job
参与其中
加入 Freenode 上的 #ansible-molecule 频道。
加入 molecule-users 论坛 中的讨论。
通过检查 wiki 加入社区工作组。
想了解有关发布的信息,请订阅 ansible-announce 列表。
有关 Ansible 电子邮件列表和 IRC 频道的完整列表,请参阅 通信页面。
许可协议
受 MIT 许可证的保护。
该标志受Creative Commons NoDerivatives 4.0许可许可。
如果您有其他用途,请联系我们。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
molecule-kubevirt-0.1.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 50a779c20ad6f5f9b4287ad050c0b9e26e82b917d47a14011251a60bf524ae7a |
|
MD5 | 3593c4d8965cfb4a502116942083c306 |
|
BLAKE2b-256 | 8a461f25e6177077435cfa924967877d3a41e0fbbf3e1c673cd4e726f8c7e62a |
molecule_kubevirt-0.1.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ebdb7210ef8cb2d99fc48396c1566aab0a8f4f2d5707316adc34fe7019ccc65a |
|
MD5 | 23890a217a64cb642487afd624728bbd |
|
BLAKE2b-256 | 846716cf1fcddfba095ef22219db02432b003d822e71d044c39d0729b3da757d |