PuPHPet Vagrant创建符号链接

时间:2014-08-09 17:42:10

标签: php puppet puphpet hiera

我使用PuPHPet为PHP项目创建一个Puppet配置(https://puphpet.com/#create)。我已经读过它使用Hiera,但我真的不太熟悉Puppet / Hiera语法。

我想从同步文件夹创建一个符号链接到我的web根目录。我发现如何使用Puppet,但我不知道如何适应我的配置文件:

file { '/tmp/link-to-motd':
   ensure => 'link',
   target => '/etc/motd',
}

http://puppetcookbook.com/posts/creating-a-symlink.html

在Hiera有一些技巧吗?似乎Hiera使用YAML文件来配置所有内容。对不起,如果我完全遗漏了一些明显的东西。

例如我在config.yml

中有这个
vagrantfile-local:
    vm:
    ...
        synced_folder:
            0H4IdhbRXpVN:
                source: .
                target: /var/project
                sync_type: default
                rsync:
                    args:
                        - '--verbose'
                        - '--archive'
                        - '-z'
                    exclude:
                        - .vagrant/
                    auto: 'false'
...
apache:
    install: '1'
    settings:
        user: www-data
        group: www-data
        default_vhost: true
        manage_user: false
        manage_group: false
        sendfile: 0
    modules:
        - rewrite
    vhosts:
        RXTueD2ha3Pa:
            servername: mysite.dev
            docroot: /var/www/mysite
            port: '443'
            override:
                - All
            options:
                - Indexes
                - FollowSymLinks
                - MultiViews
            engine: php
            custom_fragment: ''
            ssl: '1'
            ssl_cert: ''
            ssl_key: ''
            ssl_chain: ''
            ssl_certs_dir: ''

我希望/ var / www / mysite成为/ var / project / web的符号链接。

我想我总是可以创建一个exec-once shell脚本来执行此操作,但希望有一种方法将其放入配置中。

2 个答案:

答案 0 :(得分:3)

我意识到这是一个旧线程,但这是在PuPHPet中添加对可配置符号链接的支持的更好方法。

将config.yaml下的代码附加到config.yaml文件的底部,然后对puphpet / puppet / site.pp执行相同操作

然后你可以在链接下添加/修改链接:在config.yaml中的格式为'source':'target'。我已经包含了一个示例,它将符号链接放在Vagrant的主目录中,名为public_html,指向/ var / www / html /.

config.yaml

symlinks:
    install: '1'
    links:
        '/home/vagrant/public_html': '/var/www/html/'

puphpet /木偶/ site.pp

if array_true($symlinks, 'install') {
  $symlinks['links'].each |$source, $target| {
    file { "$source":
      ensure => link,
      target => "$target",
    }
  }
}

答案 1 :(得分:1)

最简单的方法是创建一个超级简单的bash脚本并将其放入exec-once文件夹中,该文件夹将在初始$ vagrant up上运行一次。