前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vagrant provision 典型应用场景

vagrant provision 典型应用场景

作者头像
pollyduan
发布2019-11-04 14:51:20
3840
发布2019-11-04 14:51:20
举报

让虚拟机初始创建时,添加自定义的包管理器的源。

准备镜像仓库的源配置文件

如本例中的:

我的虚拟机工作目录是 /Users/pollyduan/vm

虚拟机工作目录为/Users/pollyduan/vm/ubuntu

我创建了一个/Users/pollyduan/vm/data 作为保存共享所需的软件和资源。

provision中的source可以使用相对路径,因此我的用户目录/Users/pollyduan 可以省略。如:

"../data/mirrors/tsinghua/CentOS7/CentOS-Base.repo"
"../data/mirrors/tsinghua/ubuntu16.04/sources.list"

centos7:

将如下配置添加到Vagrantfile的"config.vm.synced_folder" 下面即可。

config.vm.provision "file", source: "../data/mirrors/tsinghua/CentOS7/CentOS-Base.repo", destination: "CentOS-Base.repo"

config.vm.provision "shell" do |s|
  s.inline = "sudo cp ~vagrant/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo"
end
config.vm.provision "shell" do |s|
  s.inline = "sudo yum makecache fast"
end

ubuntu:

同样的,ubuntu中,将如下配置添加到Vagrantfile的"config.vm.synced_folder" 下面即可。

config.vm.provision "file", source: "../data/mirrors/tsinghua/ubuntu16.04/sources.list", destination: "sources.list"

config.vm.provision "shell" do |s|
  s.inline = "sudo cp ~vagrant/sources.list /etc/apt/sources.list"
end
config.vm.provision "shell" do |s|
  s.inline = "sudo apt-get update"
end

这样,虚拟机一旦创建,就会自动把包管理器的源替换掉。

当然,如果你修改了源配置文件,也可以使用如下命令更新:

vagrant provision [实例名]

思考一下

为什么不直接使用file命令复制到目标目录?

为什么要在vm目录中创建一个data目录作为共享目录?

~vagrant 是什么东西?

不明白的,请参阅之前的文字。

修订

  1. destination 中的目标目录删除了 "~/",测试在部分版本的linux中会在用户目录创建一个名为 "~"的目录,并把文件放进去,导致provision失败。干脆删除,默认就在用户主目录中。
  2. 修改centos部署后的makecache参数,增加了fast 子开关,的确速度有提升。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备镜像仓库的源配置文件
  • centos7:
  • ubuntu:
  • 思考一下
  • 修订
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档