设为首页 收藏本站
查看: 1259|回复: 0

[经验分享] Vagrant学习之提高篇(三)

[复制链接]

尚未签到

发表于 2015-11-26 10:23:20 | 显示全部楼层 |阅读模式
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 &quot;>= 1.3.5&quot;, &quot;< 1.4.0&quot;


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


1.4 配置项
config.vm

config.ssh


config.winrm


config.vagrant



https://docs.vagrantup.com/v2/vagrantfile/machine_settings.html



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
例如:https://atlas.hashicorp.com/hashicorp/precise64



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: &quot;file&quot;



具有两个参数:

source 将要上传的文件路径

destination 传到vm的路径


用户可以将文件从host,copy到vm
例如:

Vagrant.configure(&quot;2&quot;) do |config|
# ... other configuration
config.vm.provision &quot;file&quot;, source: &quot;~/.gitconfig&quot;, destination: &quot;.gitconfig&quot;
end
注意,此文件不会自动保持同步




3.2脚本部署



Provisioner
name: &quot;shell&quot;



https://docs.vagrantup.com/v2/provisioning/shell.html




3.2.1 脚本读入方式
inline
直接将脚本文件写入到Vagrantfile里面
$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure(&quot;2&quot;) do |config|
config.vm.provision &quot;shell&quot;, inline: $script
end
也可以从指定path读入脚本




Vagrant.configure(&quot;2&quot;) do |config|
config.vm.provision &quot;shell&quot;, path: &quot;script.sh&quot;
end
甚至可以从网络路径读入脚本:

Vagrant.configure(&quot;2&quot;) do |config|
config.vm.provision &quot;shell&quot;, path: &quot;https://example.com/provisioner.sh&quot;
end


3.2.2脚本参数传入

Vagrant.configure(&quot;2&quot;) do |config|
config.vm.provision &quot;shell&quot; do |s|
s.inline = &quot;echo $1&quot;
s.args   = &quot;'hello, world!'&quot;
end
end











3.3
ansible部署
Provisioner
name: &quot;ansible&quot;



https://docs.vagrantup.com/v2/provisioning/ansible.html






3.4 Puppet部署
Provisioner name: puppet


https://docs.vagrantup.com/v2/provisioning/puppet_apply.html


Provisioner name: puppet_server

https://docs.vagrantup.com/v2/provisioning/puppet_agent.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143769-1-1.html 上篇帖子: Ansible(13) service模块 下篇帖子: Ansible(12) file模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表