Override Vagrant configuration settings locally (per-dev)

前端 未结 8 1478
说谎
说谎 2021-01-30 02:51

I\'d like the question to be answered in general, but to illustrate it, here\'s a use case:

I\'m using Vagrant for a simple LMAP project. I use standalone Puppet for pro

8条回答
  •  Happy的楠姐
    2021-01-30 03:37

    The Vagrantfile is just Ruby, so YAML is another option.

    For example, in the Vagrantfile I do this:

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    require 'yaml'
    
    settings = YAML.load_file 'vagrant.yml'
    db_ip_address = settings['db']['ip_address']
    api_ip_address = settings['api']['ip_address']
    
    Vagrant.configure("2") do |config|
      config.vm.box = "ffuenf/ubuntu-13.10-server-amd64"
      config.vm.box_url = "https://vagrantcloud.com/ffuenf/ubuntu-13.10-server-amd64/version/4/provider/virtualbox.box"
    
      config.vm.define "db" do |db|
        db.vm.synced_folder settings['db']['artifacts_dir']['host'], settings['db']['artifacts_dir']['guest']
        db.vm.network "private_network", ip: db_ip_address
        ... other stuff ...
      end
    
      config.vm.define "api" do |api|
        api.vm.synced_folder settings['api']['artifacts_dir']['host'], settings['api']['artifacts_dir']['guest']
        api.vm.network "private_network", ip: api_ip_address
        api.vm.network "forwarded_port", guest: settings['api']['forwarded_port']['guest'], host: settings['api']['forwarded_port']['host']
      end
    end
    

    Then I have a vagrant.yml file (I just made up the name; you can use whatever name you like) for the developer-specific configuration:

    db:
      ip_address: 192.168.4.14
      artifacts_dir:
        host: /Users/willie/myapp/db-scripts
        guest: /opt/myapp/db
    
    api:
      ip_address: 192.168.4.15
      forwarded_port:
        host: 9080
        guest: 8080
      artifacts_dir:
        host: /Users/willie/myapp/artifacts
        guest: /opt/myapp/api
    

提交回复
热议问题