【问题标题】:Vagrant Puppet using wget to fetch and extract .zip fileVagrant Puppet 使用 wget 获取和提取 .zip 文件
【发布时间】:2014-07-25 09:21:17
【问题描述】:

您好,我正在创建一个 Vagrant 设置,我需要获取一个 .zip 文件,该文件将放在 /vagrant/www 目录中。

我尝试这样做的方式是:

 exec { 'setup octobercms':
    command => "/bin/sh -c 'wget -P /vagrant/www https://github.com/octobercms/install/archive/master.zip'",
    timeout => 900,
    logoutput => true
}

当触发 vagrant up 时,我可以看到文件正在下载,但它没有出现在 /vagrant/www 目录中。该文件实际上与 vagrant 无关,但将用于安装 October CMS。

在使用 puppet 时,获取压缩文件并将其内容提取到目录中并删除压缩存档的最佳方法是什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: linux vagrant puppet


    【解决方案1】:

    exec 命令在 shell 的通用结构中运行,并且不遵守调用它的用户帐户的约束。试试:

    exec { 'setup octobercms':
        command => "cd /vagrant/www/; /bin/sh -c 'wget https://github.com/octobercms/install/archive/master.zip'",
        timeout => 900,
        logoutput => true
    }
    

    【讨论】:

    • 可能还需要去掉/bin/sh -c,使用wget的绝对路径如/usr/bin/wget 'github.com/octobercms/install/archive/master.zip'
    • 您好,我尝试了您的建议,但出现以下错误:err: /Stage[main]/Octobercms/Exec[setup octobercms]/returns: change from notrun to 0 failed: Could not find command 'cd'
    • 抱歉,我忘记了您需要使用 VAGRANT_CWD 来更改工作目录。见docs.vagrantup.com/v2/other/environmental-variables.html
    • cd 是一个内置的 shell,不会像那样工作。您可以尝试将provider => 'shell' 添加到您的exec。然后不再需要显式启动sh。就个人而言,我不会这样做,而是使用wget -O /vagrant/www/master.zip
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    相关资源
    最近更新 更多