Vagrant 为osx和win使用一个PUPPET配置

Vagrant 为osx和win使用一个PUPPET配置,vagrant,puphpet,Vagrant,Puphpet,PUPPET配置是否可以根据主机操作系统更改代码目录 我知道这可以用实际的流浪汉文件来完成,但我看不出如何从yaml中完成 我已尝试向yaml添加一个符合条件的字段: synced_folder: E6zs5ESFmosx: owner: '' group: '' source: '/Users/user/Development/www' target: /var/www

PUPPET配置是否可以根据主机操作系统更改代码目录

我知道这可以用实际的流浪汉文件来完成,但我看不出如何从yaml中完成

我已尝试向yaml添加一个符合条件的字段:

    synced_folder:
        E6zs5ESFmosx:
            owner: ''
            group: ''
            source: '/Users/user/Development/www'
            target: /var/www
            sync_type: osx
            rsync:
                auto: 'false'
        E6zs5ESFmwin:
            owner: ''
            group: ''
            source: 'I:\Development\www'
            target: /var/www
            sync_type: win
            rsync:
                auto: 'false'
然后更改流浪者文件以相应地切换:

elsif folder['sync_type'] == 'osx'
        config.vm.synced_folder '#{folder['source']}', "#{folder['target']}", id: "#{i}", type: 'nfs'
但这仍然给出了一个错误,即当试图在osx中漫游时,I:\Development\www不可用


解决这个问题的最佳方法是什么?只需从yaml中删除文件夹并在vagrant文件中手动定义它们?这意味着每次我使用puphpet生成一个新的配置时都需要做一些工作。还不错,但在我看来,应该有一种更简单的方法。

您可以从config-custom.yaml文件覆盖config.yaml中的设置。只需创建一个新文件并更改所需的块

使用deep_merge,因此您只需更改所需的块,而不包括要保留为默认值的块

除此之外,您还可以根据主机操作系统编辑该文件以包含更多配置文件