最近在做大数据和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执行。

参考