基于Vagrant+Ansible批量管理虚拟机 2022-12-28 14:35:40 最近在做大数据和k8s的集群化测试,刚好自己电脑的配置还不错,干脆直接基于虚拟机本机折腾了。 为了管理方便,用到了vagrant和ansible这两个工具,主要是可以进行批量的处理,免去一台台手动配置的麻烦了。 相关的安装及详细使用这里就不介绍了,官网都有材料,本文主要记录一些关键配置及命令,方便日后复用。 ## Vagrantfile配置 ``` Vagrant.configure("2") do |config| (1..3).each do |i| config.vm.define "n#{i}" do |node| # 设置虚拟机的Box node.vm.box = "centos/7" # 设置虚拟机的主机名 node.vm.hostname="n#{i}" # 设置虚拟机的IP node.vm.network "private_network", ip: "192.168.59.2#{i}" # 设置主机与虚拟机的共享目录 #node.vm.synced_folder "~/Desktop/share", "/home/vagrant/share" # VirtaulBox相关配置 node.vm.provider "virtualbox" do |v| # 设置虚拟机的名称 v.name = "n#{i}" # 设置虚拟机的内存大小 v.memory = 2048 # 设置虚拟机的CPU个数 v.cpus = 2 end end end end ``` 配置完成后,在当前目录执行`vagrant up`批量启动虚拟机,`vagrant ssh n1`可以登录到第一台机器,然后给每台机器做下root用户的免密登录,方便接下来的ansible配置。 ## ansible的inventory.yaml配置 ``` vm: hosts: n1: ansible_host: 192.168.59.21 n2: ansible_host: 192.168.59.22 n3: ansible_host: 192.168.59.23 vars: ansible_user: root ``` ## 基于ansible的shell模块,批量执行命令 一个示例: ``` ansible vm -i inventory.yaml -m shell -a 'date' ``` 如果使用yum批量安装软件的话,注意加上-y参数,避免交互式命令卡住ansible执行。 ## 参考 - <https://www.vagrantup.com/> - <https://docs.ansible.com/> - <https://galaxy.ansible.com/> 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:基于Vagrant+Ansible批量管理虚拟机 赏 Prev 基于sshfs远程下载HuggingFace模型文件到本机 Next 基于Jenkins实现Git代码提交自动化上线