0

我使用 PuPHPet 为 PHP 项目 ( https://puphpet.com/#create ) 创建了 Puppet 配置。我读过它使用 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 脚本来执行此操作,但希望有一种方法可以将其放入配置中。

4

2 回答 2

3

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

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

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

配置.yaml

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

puphpet/puppet/site.pp

if array_true($symlinks, 'install') {
  $symlinks['links'].each |$source, $target| {
    file { "$source":
      ensure => link,
      target => "$target",
    }
  }
}
于 2015-06-09T07:36:01.290 回答
1

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

于 2014-08-14T04:10:12.107 回答