Vagrant学习之提高篇(三)

1.Vagrantfile配置
1.1配置版本号
Vagrant.configure(2) do |config|
  # ...
end
其中的“2”代表vagrant支持的配置版本。目前vagrant支持“1”和“2”两种配置版本
Vagrant 1.0.x使用“1”
Vagrant 1.1以上,使用“2”
1.2 vagrant版本号
Vagrant.require_version ">= 1.3.5"
vagrant当前版本号大于1.3.5才能使用该项目
Vagrant.require_version ">= 1.3.5", "< 1.4.0"

1.3循环
当我们创建多个虚拟机时,会用到循环
(1..3).each do |i|
  config.vm.define "node-#{i}" do |node|
    node.vm.provision "shell",
      inline: "echo hello from node #{i}"
  end
end
注意,不能使用for循环

1.4 配置项
config.vm
config.ssh
config.winrm
config.vagrant



2.BOX配置
box是vagrant环境文件
官方提供了很多box,可以直接使用:  https://atlas.hashicorp.com/boxes/search
以下命令可以获取官方提供的box
$ vagrant box add USER/BOX
例如: vagrant box add hashicorp/precise64
也可以:vagrant init hashicorp/precise64

2.1 BOX版本控制
2.1.1 vagrant box list 
列出所有已经安装好的box images
查看有哪些可用的box,需要登录box网站查看 https://atlas.hashicorp.com/USER/BOX 

2.1.2 box的更新

查看过期的box: vagrant box outdated
更新: vagrant box outdated
    此命令只是更新box镜像,不会对正在运行的vm产生影响。如果要使用新box镜像,需要把vm destroy,然后在重新vagrant up

2.1.3 box的版本控制
config.vm.box_version选项控制box文件的版本
config.vm.box_check_update默认是enabled,vm每次up,重启,恢复都会检测box版本信息


3.使用vagrant自动部署

3.1文件file
Provisioner name: "file"
具有两个参数:
source 将要上传的文件路径
destination 传到vm的路径

用户可以将文件从host,copy到vm
例如:
Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
注意,此文件不会自动保持同步


3.2脚本部署

Provisioner name: "shell"

3.2.1 脚本读入方式
inline
直接将脚本文件写入到Vagrantfile里面
$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: $script
end
也可以从指定path读入脚本

Vagrant.configure("2") do |config|
  config.vm.provision "shell", path: "script.sh"
end
甚至可以从网络路径读入脚本:
Vagrant.configure("2") do |config|
  config.vm.provision "shell", path: "https://example.com/provisioner.sh"
end

3.2.2脚本参数传入
Vagrant.configure("2") do |config|
  config.vm.provision "shell" do |s|
    s.inline = "echo $1"
    s.args   = "'hello, world!'"
  end
end




3.3 ansible部署
Provisioner name: "ansible"


3.4 Puppet部署
Provisioner name: puppet

Provisioner name: puppet_server



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值