原文地址

Provisioner 命令:“file”

通过 file 配置程序可以上传宿主机的文件或目录到虚拟机中。

使用场景:将宿主机的 ~/.gitconfig 复制到虚拟机中的用户家目录,这样就不用每次都要为新的虚拟机执行 git config --global

Vagrant.configure("2") do |config|
# ... other configuration config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end

可以上传目录到虚拟机。复制时,宿主机上的文件夹将替换文件夹作为新文件夹并将其放在虚拟机上。注意,如果希望在虚拟机上使用相同的文件夹名称,请确保目标路径(destination )与主机上的文件夹名称相同。

Vagrant.configure("2") do |config|
# ... other configuration config.vm.provision "file", source: "~/path/to/host/folder", destination: "$HOME/remote/newfolder"
end

在将 ~/path/to/host/folder 复制到虚拟机之前:

    folder
├── script.sh
├── otherfolder
│ └── hello.sh
├── goodbye.sh
├── hello.sh
└── woot.sh 1 directory, 5 files

~/path/to/host/folder 复制到虚拟机中的 $HOME/remote/newfolder 之后:

    newfolder
├── script.sh
├── otherfolder
│ └── hello.sh
├── goodbye.sh
├── hello.sh
└── woot.sh 1 directory, 5 files

注意,与同步文件夹不同,上传的文件或目录不会保持同步。对于上面的例子,如果对本地 ~/.gitconfig 进行更改,它们将不会立即反映在上传到虚拟机的副本中。

由 file provisioner 上传的文件以 SSH 或 PowerShell 用户身份完成。这很重要,因为这些用户通常无法提升权限。如果想将文件上传到需要特权的位置,我们建议将它们上传到临时位置,然后使用 shell provisioner 将它们移动到位。

选项

file provisioner 只有两个选项,都是必须的:

  • source (string) - 要上传的文件或目录的本地路径。
  • destination (string) - 虚拟机中用于接收上传文件的远端路径。文件或目录通过 SCP 之上的 SSH 上传,因此路径必须对用户可写。SSH 用户可以通过运行 vagrant ssh-config 来决定,默认是“vagrant”。

警告

虽然 file provisioner 确实支持尾部斜杠或“全局”,但由于用于在主机和虚拟机之间复制文件和文件夹的底层工具的差异,这可能会导致一些令人困惑的结果。例如,如果源和目标的尾部斜线定义如下:

  config.vm.provision "file", source: "~/pathfolder", destination: "/remote/newlocation/"

你这是在告诉 vagrant 上传 ~/pathfolder/remote/newlocation 下面:

    newlocation
├── pathfolder
│ └── file.sh 1 directory, 2 files

此行为也可以通过下面的定义你的 file provisioner 来实现:

  config.vm.provision "file", source: "~/pathfolder", destination: "/remote/newlocation/pathfolder"

另一个例子是在主机上使用 globing 来抓取文件夹内的所有文件,但不是顶层文件夹本身:

  config.vm.provision "file", source: "~/otherfolder/.", destination: "/remote/otherlocation"

file provisioner 被定义为将 ~/otherfolder 下的所有文件包含到新位置 /remote/otherlocation。这个想法可以通过简单地让目标文件夹与源文件夹不同来实现:

  config.vm.provision "file", source: "/otherfolder", destination: "/remote/otherlocation"

Vagrant 手册之 Provisioning - file 配置程序的更多相关文章

  1. Vagrant 手册之 Provisioning - Shell 配置程序

    原文地址 Provisioner 命令:"shell" 示例: node.vm.provision "shell" do |s| s.inline = < ...

  2. Vagrant 手册之 Provisioning - File

    原文地址 Provisioner 名字:"file" Vagrant 的 file provisioner 允许将文件或目录从主机上传到客户机. File provisioning ...

  3. Vagrant 手册之 Provisioning - 基本用法

    原文地址 虽然 Vagrant 提供了用于配置虚拟机的多个选项,但是有标准用法,好多知识点对这个 provisioner 是通用的. 配置 首先,Vagrantfile 中配置的每个 provisio ...

  4. Vagrant 手册之 Provisioning - 概述

    原文地址 通过 Vagrant 中的 provisioner 配置程序,可以在使用 vagrant up 启动虚拟机时,在虚拟机上执行安装软件.更改配置等操作. box 通常是通用的,而每个项目总有自 ...

  5. Vagrant 手册之 Vagrantfile - 配置版本

    原文地址 配置版本是 Vagrant 1.1+(引入了大量新功能和配置选项) 能够与 Vagrant 1.0.x Vagrantfiles 保持向后兼容的机制. 现在运行 vagrant init 时 ...

  6. Vagrant 手册之 Vagrantfile - 机器设置 config.vm

    原文地址 配置的命名空间:config.vm config.vm 中的设置修改 Vagrant 管理的机器的配置. 1. 可用的设置项 config.vm.boot_timeout Vagrant 等 ...

  7. Vagrant 手册之网络 - 公共网络 public network

    原文地址 Vagrantfile 配置文件中公共网络的标识符:public_network,例如: config.vm.network "public_network" Vagra ...

  8. 配置程序成为Linux服务

    最近写了个程序需要随Linux启动时自动运行起来, 查了一些方法后, 通过配置程序成为系统的服务实现了这个需求, 在此记录一下. 测试程序 #! /bin/sh while [ true ] do e ...

  9. SpringCloud系列三:SpringSecurity 安全访问(配置安全验证、服务消费端处理、无状态 Session 配置、定义公共安全配置程序类)

    1.概念:SpringSecurity 安全访问 2.具体内容 所有的 Rest 服务最终都是暴露在公网上的,也就是说如果你的 Rest 服务属于一些你自己公司的私人业务,这样的结果会直接 导致你信息 ...

随机推荐

  1. CentOS6 破解登录密码

    1.重启服务器,在倒数读秒的时候按任意键,就会出现如下界面 2.按e进入grub模式,选中kernel,然后按e进入内核编辑模式 3.进入内核编辑模式后,按空格+1回车(或按空格+single回车)退 ...

  2. spring-data-redis的使用/redis缓存

    1.导入依赖 <properties> <junit.version>4.12</junit.version> <spring.version>4.2. ...

  3. Atman开发实习生的笔试题

    坐标:山东 编程题(限时30分钟)如何判断一个字符串是否为合法的IP地址.要求:1. 不能使用正则表达式和自带的库函数.2. 列出全部测试用例,并给出原因.3. 把代码的后缀名改成txt后上传,不用压 ...

  4. Mysql8- Public Key Retrieval is not allowed

    在使用 MySQL 8.0 时重启应用后提示 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public ...

  5. js实现-小框框全选

    点击全选下面单独的肉也会全选,再次点击取消 一个一个点击肉,点完--全选也会被选上 HTML代码---CSS略 <table> <tr> <th> <inpu ...

  6. $_ENV输出为null的原因及解决办法

    有些朋友输出$_ENV是空的,可能原因是php.ini的variables_order值为"GPCS",也就是说系统在定义PHP预定义变量时的顺序是GET,POST,COOKIES ...

  7. Spark2.0集成Hive操作的相关配置与注意事项

    前言 已完成安装Apache Hive,具体安装步骤请参照,Linux基于Hadoop2.8.0集群安装配置Hive2.1.1及基础操作 补充说明 Hive中metastore(元数据存储)的三种方式 ...

  8. linux针对TCP和 UDP的调优

  9. pg_dump - 将一个PostgreSQL数据库抽出到一个脚本文件或者其它归档文件中

    SYNOPSIS pg_dump [ option...] [ dbname] DESCRIPTION 描述 pg_dump 是一个用于备份 PostgreSQL 数据库的工具.它甚至可以在数据库正在 ...

  10. ORM大结局

    1.添加记录: # 一对多的添加方式: #pub_obj=Publish.objects.filter(name="橙子出版社").first() # book=Book.obje ...