0) 前提
Ubuntu HOST 已经安装了 KVM 环境并工作良好。
1) 在 Ubuntu KVM HOST 上安装 ansible
代码语言:javascript复制sudo apt install -y software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install -y ansible
2) 安装其它相关工具包
代码语言:javascript复制sudo apt install -y --no-install-recommends
dnsmasq
git
genisoimage
libguestfs-tools
libosinfo-bin
python3-libvirt
python3-lxml
qemu-utils
virtinst
### 3) checkout virt-infra 代码库
这是ansible用于创建host、guest的playbook脚本和设置。
代码语言:javascript复制mkdir ~/devenv_bootstrap
git clone https://github.com/dhyuan/virt-infra-ansible.git
cd virt-infra-ansible
git check -b devenv origin/devenv
cd roles
git clone https://github.com/dhyuan/ansible-role-virt-infra.git
git check -b devenv orign.devenv
4) 确保宿主机上有个网桥的名字与客户机定义文件所用网络名一致。
比如 inventory/ubuntu20Server.yml 中我们定义了网桥网络使用 br0。
代码语言:javascript复制virt_infra_networks:
- name: br0
5) 使用 ansible 在 ubuntu 宿主机上安装客户机
在http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 下载镜像保持到 host 的 /var/lib/libvirt/images 目录。确保 kvmhost 上的/etc/hosts 中没有定义对 ubuntu20Server 的 ip 映射。注意修改ubuntu20Server中的mac避免冲突。
代码语言:javascript复制apt install -y ansible
ansible-playbook --limit kvmhost,ubuntu20Server ./virt-infra.yml
删除已安装guest虚拟机的命令:
代码语言:javascript复制ansible-playbook ./virt-infra.yml --limit kvmhost,ubuntu20Server --extra-vars virt_infra_state=undefined
6) 创建完毕,通过 virt-manager 启动客户机。
测试网络的连通性,在 kvmhost 上 ping ubuntu20Server。有问题可以通过 ip 命令查看,进行必要的网卡启动等操作、检查/etc/netplan/....yml 文件、执行 netplan apply 等操作。
7) 下载在 VM 安装 Docker 的脚本,并安装
在 kvmhost 上执行:
代码语言:javascript复制ansible-galaxy install
--roles-path ~/.ansible/roles/
git https://github.com/haxorof/ansible-role-docker-ce.git,3.3.2
ansible-galaxy list
~/devenv_bootstrap/virt-infra-ansible/install_docker.yml 里定义了 ansbile 所用配置。执行以下语句,将在第五步创建的 VM ubuntu20Server 中安装 Docker 20.10.4。
代码语言:javascript复制ansible-playbook ./install_docker.yml --limit ubuntu20Server -v --extra-vars docker_version=5:20.10.4~3-0~ubuntu-focal
可以通过 docker_users 参数指定加入 docker group 的用户,使用 ali 镜像下载 docker 安装包:
代码语言:javascript复制ansible-playbook ./install_docker.yml
--limit ubuntu20Server -v
--extra-vars docker_version=5:20.10.4~3-0~ubuntu-focal
--extra-vars '{"docker_users": ["devops"] }'
-e '{"docker_repository_url": {"Ubuntu20": "http://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/Release"}}'
登录到guest虚机ubuntu20Server验证docker工作正常。