0

我最近才知道 puppet,我正在尝试在 vagrant 配置时安装 laravel,以便在我登录/ssh 到 vagrant 时一切都已设置好(可以运行 laravel)。但是我卡住了,它返回成功执行但是在我执行 vagrant ssh 之后,laravel 命令不可用。

php5、php5-cli等composer等依赖在这部分代码之前已经安装好了。

class laravel {

    Exec {
        path => "/bin:/sbin:/usr/bin:/usr/sbin",
    }

    exec { "install-laravel" :
        command     => "/usr/local/bin/composer global require 'laravel/installer'",
        require     => [Package["php5-cli", "php5-dev"], Exec["install-composer", "set-composer-as-global"]],
        cwd         => "/home/vagrant/",
        environment => ["COMPOSER_HOME=/home/vagrant"],
        user        => root, 
        group       => root,
    }

    exec { "add-laravel-command" :
        command     => "mkdir /usr/local/bin/laravel",
        environment => ["LARAVEL_HOME=/home/vagrant"],
        onlyif      => "test -d /usr/local/bin/composer",
        require     => Exec["install-laravel"],
        user        => root, 
    }

    exec { "set-laravel-as-globall" :
        command     => "mv /home/vagrant/.composer/vendor/bin /usr/local/bin/laravel",
        onlyif      => "test -d /.composer/vendor/bin",
        require     => Exec["add-laravel-command"],
        user        => root, 
    }
}

输出

==> default: Notice: /Stage[main]/Laravel/Exec[install-laravel]/returns: executed successfully
==> default: Debug: /Stage[main]/Laravel/Exec[install-laravel]: The container Class[Laravel] will propagate my refresh event
==> default: Debug: Exec[add-laravel-command](provider=posix): Executing check 'test -d /usr/local/bin/composer'
==> default: Debug: Executing 'test -d /usr/local/bin/composer'
==> default: Debug: Exec[set-laravel-as-globall](provider=posix): Executing check 'test -d /.composer/vendor/bin'
==> default: Debug: Executing 'test -d /.composer/vendor/bin'
==> default: Debug: Class[Laravel]: The container Stage[main] will propagate my refresh event

任何帮助将非常感激。谢谢

4

1 回答 1

0

在下创建一个文件并用以下内容puppet/modules/laravel/files命名它composer.json

{                                            
    "require": {                             
        "laravel/installer": "^1.3"          
    }                                        
}

Laravel init.pp 文件

class laravel {

    Exec {
        path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin",
        user => root,
        group => root,
    }

    file { "/usr/local/bin/laravel-devtools" :
        ensure  => directory,
        owner   => root,
        group   => root,
    }

    file { "/usr/local/bin/laravel-devtools/composer.json" :
        source  => "puppet:///modules/laravel/composer.json",
        require => File["/usr/local/bin/laravel-devtools"],
        owner   => root,
        group   => root,
    }

    exec { "install-laravel" :
        command     => "sudo composer require 'laravel/installer'",
        onlyif      => "test -f /usr/local/bin/composer",
        require     => [
            Package["nginx","php5-cli", "php5-dev", "php5-mysql"], 
            File["/usr/local/bin/laravel-devtools", "/usr/local/bin/laravel-devtools"],
        ],
        environment => ["COMPOSER_HOME=/home/vagrant"],
        cwd         => "/usr/local/bin/laravel-devtools", 
        user        => root, 
        group       => root,
    }

    exec { "set-laravel-as-global" :
        command => "sudo ln -s /usr/local/bin/laravel-devtools/vendor/laravel/installer/laravel /usr/local/bin/laravel",
        require => [
            File["/usr/local/bin/laravel-devtools", "/usr/local/bin/laravel-devtools/composer.json"],
            Exec["install-laravel"],
        ],
    }

}

确保composer在提供期间首先安装。

于 2016-08-23T00:05:17.630 回答