Puphpet: Custom Fragment including file path and not file contents

Created on 14 Feb 2017  路  2Comments  路  Source: puphpet/puphpet

I've added a bunch of custom fragment files to this particular VM and the Apache config that is produced just has the file path inserted and not the contents of the file. This only seems to be appear within the Directory Blocks though. As such, we get the following errors:

```==> machine1: Feb 14 13:58:09 machine1 systemd[1]: Starting The Apache HTTP Server...
==> machine1: Feb 14 13:58:09 machine1 apachectl[18238]: AH00526: Syntax error on line 19 of /etc/apache2/sites-enabled/25-av_7mj7oaz48dk6.conf:
==> machine1: Feb 14 13:58:09 machine1 apachectl[18238]: Invalid command '/vagrant/puphpet/files/directives/main-directory.conf', perhaps misspelled or defined by a module not included in the server configuration
==> machine1: Feb 14 13:58:09 machine1 apachectl[18238]: Action 'start' failed.

The config that is produced looks like this:
```# ************************************
# Vhost template in module puppetlabs-apache
# Managed by Puppet
# ************************************

<VirtualHost *:80>
  ServerName project.dev

  ## Vhost docroot
  DocumentRoot "/var/www/project/html"

  ## Directories, there should at least be a declaration for /var/www/project/html

  <Directory "/var/www/project/html">
    Options FollowSymlinks
    AllowOverride None
    Require all granted
    DirectoryIndex index.php app.dev
    /vagrant/puphpet/files/directives/main-directory.conf
  </Directory>

  <Directory "/var/www/project/investments/public">
    Options FollowSymlinks
    AllowOverride None
    Require all granted
    DirectoryIndex index.php
    /vagrant/puphpet/files/directives/investments-directory.conf
  </Directory>

  <FilesMatch "\.php$">
    Require all granted
    SetHandler proxy:fcgi://127.0.0.1:9000

  </FilesMatch>

  ## Logging
  ErrorLog "/var/log/apache2/av_7mj7oaz48dk6_error.log"
  ServerSignature Off
  CustomLog "/var/log/apache2/av_7mj7oaz48dk6_access.log" combined 

  ## Server aliases
  ServerAlias www.project.dev
  SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

  ## Custom fragment
  Alias /investments /var/www/project/investments/public

# Restrict PHP to Specified Directories:
php_admin_value open_basedir "/home/www/project.dev:/tmp"
php_flag magic_quotes_gpc Off
</VirtualHost>

I've tried changing the filepath to an include statement and then the build process fails because its not a file. Also tried .txt, .conf and extensionless files but the result is always the same. My config is as below:

vagrantfile:
    target: local
    vm:
        provider:
            local:
                box: puphpet/ubuntu1604-x64
                box_url: puphpet/ubuntu1604-x64
                box_version: '0'
                chosen_virtualizer: virtualbox
                virtualizers:
                    virtualbox:
                        modifyvm:
                            natdnshostresolver1: false
                        showgui: 0
                    vmware:
                        numvcpus: 1
                    parallels:
                        linked_clone: 0
                        check_guest_tools: 0
                        update_guest_tools: 0
                machines:
                    vflm_n1bi7ymsbcbp:
                        id: machine1
                        hostname: machine1.puphpet
                        network:
                            private_network: 192.168.56.101
                            forwarded_port:
                                vflmnfp_da634adqlb3c:
                                    host: '6167'
                                    guest: '22'
                        memory: '512'
                        cpus: '1'
        provision:
            puppet:
                manifests_path: puphpet/puppet/manifests
                module_path:
                    - puphpet/puppet/modules
                    - puphpet/puppet/manifests
                options:
                    - '--verbose'
                    - '--hiera_config /vagrant/puphpet/puppet/hiera.yaml'
        synced_folder:
            vflsf_c5rj0bkas61e:
                source: ~/Projects
                target: /var/www
                sync_type: default
                smb:
                    smb_host: ''
                    smb_username: ''
                    smb_password: ''
                    mount_options:
                        dir_mode: '0775'
                        file_mode: '0664'
                rsync:
                    args:
                        - '--verbose'
                        - '--archive'
                        - '-z'
                    exclude:
                        - .vagrant/
                        - .git/
                    auto: 'true'
                owner: www-data
                group: www-data
        usable_port_range:
            start: 10200
            stop: 10500
        post_up_message: ''
    ssh:
        host: 'false'
        port: 'false'
        private_key_path: 'false'
        username: vagrant
        guest_port: 'false'
        keep_alive: '1'
        forward_agent: 'false'
        forward_x11: 'false'
        shell: 'bash -l'
        insert_key: 'false'
    vagrant:
        host: detect
    proxy:
        http: ''
        https: ''
        ftp: ''
        no_proxy: ''
server:
    install: '1'
    packages: {  }
users_groups:
    install: '1'
    groups: {  }
    users: {  }
locale:
    install: '1'
    settings:
        default_locale: en_US.UTF-8
        locales:
            - en_GB.UTF-8
            - en_US.UTF-8
        timezone: UTC
firewall:
    install: '1'
    rules: {  }
cron:
    install: '1'
    jobs: {  }
nginx:
    install: '0'
    settings:
        version: present
        default_vhost: 1
        proxy_buffers: '4 256k'
        proxy_buffer_size: 128k
        proxy_connect_timeout: 600s
        proxy_send_timeout: 600s
        proxy_read_timeout: 600s
        names_hash_bucket_size: 128
    upstreams: {  }
    vhosts:
        nxv_ba3o1hql8seg:
            server_name: awesome.dev
            server_aliases:
                - www.awesome.dev
            www_root: /var/www/awesome
            listen_port: '80'
            client_max_body_size: 1m
            ssl: '0'
            ssl_cert: ''
            ssl_key: ''
            ssl_port: '443'
            ssl_protocols: ''
            ssl_ciphers: ''
            rewrite_to_https: '1'
            spdy: '1'
            locations:
                nxvl_iy44rqq1sz7p:
                    www_root: /var/www/awesome/web
                    location: /
                    index_files:
                        - index.php
                    try_files:
                        - $uri
                        - $uri/
                        - /index.php$is_args$args
                        - /app.php$is_args$args
                    fastcgi: '127.0.0.1:9000'
                    fastcgi_index: index.php
                    fastcgi_split_path: '^(.+\.php)(/.*)$'
                    fast_cgi_params_extra:
                        - 'SCRIPT_FILENAME $document_root$fastcgi_script_name'
                    set:
                        - '$path_info $fastcgi_path_info'
                    proxy: ''
                    proxy_redirect: ''
                nxvl_t96qp50qac43:
                    www_root: /var/www/awesome/web
                    location: '~ ^/(app_dev|config)\.php(/|$)'
                    index_files:
                        - app_dev.php
                    try_files:
                        - $uri
                        - $uri/
                        - /app_dev.php$is_args$args
                    fastcgi: '127.0.0.1:9000'
                    fastcgi_index: app_dev.php
                    fastcgi_split_path: '^(.+\.php)(/.*)$'
                    fast_cgi_params_extra:
                        - 'SCRIPT_FILENAME $document_root$fastcgi_script_name'
                        - 'APP_ENV dev'
                    set:
                        - '$path_info $fastcgi_path_info'
                    proxy: ''
                    proxy_redirect: ''
                nxvl_tlp8rgaqlozh:
                    www_root: /var/www/awesome/web
                    location: '~ ^/app\.php(/|$)'
                    index_files:
                        - app.php
                    try_files:
                        - $uri
                        - $uri/
                        - /app.php$is_args$args
                    fastcgi: '127.0.0.1:9000'
                    fastcgi_index: app.php
                    fastcgi_split_path: '^(.+\.php)(/.*)$'
                    fast_cgi_params_extra:
                        - 'SCRIPT_FILENAME $document_root$fastcgi_script_name'
                        - 'APP_ENV prod'
                    set:
                        - '$path_info $fastcgi_path_info'
                    proxy: ''
                    proxy_redirect: ''
                nxvl_pcwrht49ot1b:
                    www_root: /var/www/awesome/web
                    location: '~ ^/index\.php(/|$)'
                    index_files:
                        - index.php
                    try_files:
                        - $uri
                        - $uri/
                        - /index.php$is_args$args
                    fastcgi: '127.0.0.1:9000'
                    fastcgi_index: index.php
                    fastcgi_split_path: '^(.+\.php)(/.*)$'
                    fast_cgi_params_extra:
                        - 'SCRIPT_FILENAME $document_root$fastcgi_script_name'
                    set:
                        - '$path_info $fastcgi_path_info'
                    proxy: ''
                    proxy_redirect: ''
    proxies: {  }
apache:
    install: '1'
    settings:
        version: 2.4
        user: www-data
        group: www-data
        default_vhost: true
        manage_user: false
        manage_group: false
        sendfile: 0
    modules:
        - proxy_fcgi
        - rewrite
    vhosts:
        av_7mj7oaz48dk6:
            servername: project.dev
            serveraliases:
                - www.project.dev
            docroot: /var/www/project/html
            port: '80'
            setenvif:
                - 'Authorization "(.*)" HTTP_AUTHORIZATION=$1'
            custom_fragment: /vagrant/puphpet/files/directives/main-host.conf
            ssl: '0'
            ssl_cert: ''
            ssl_key: ''
            ssl_chain: ''
            ssl_certs_dir: ''
            ssl_protocol: ''
            ssl_cipher: ''
            directories:
                avd_9nklegbdiig6:
                    path: /var/www/project/html
                    directoryindex: 'index.php app.dev'
                    options:
                        - FollowSymlinks
                    allow_override:
                        - None
                    require:
                        - 'all granted'
                    custom_fragment: /vagrant/puphpet/files/directives/main-directory.conf
                    provider: directory
                avd_51pvqhtnu9bm:
                    path: /var/www/project/investments/public
                    directoryindex: index.php
                    options:
                        - FollowSymlinks
                    allow_override:
                        - None
                    require:
                        - 'all granted'
                    custom_fragment: /vagrant/puphpet/files/directives/investments-directory.conf
                    provider: directory
            files_match:
                avfm_fwygafw71e29:
                    path: \.php$
                    sethandler: 'proxy:fcgi://127.0.0.1:9000'
                    custom_fragment: ''
                    provider: filesmatch
        av_sb2vd0tn6v5p:
            servername: assets.project.dev
            docroot: /var/www/project/investments/assets
            port: '80'
            setenvif:
                - 'Authorization "(.*)" HTTP_AUTHORIZATION=$1'
            custom_fragment: /vagrant/puphpet/files/directives/assets.conf
            ssl: '0'
            ssl_cert: ''
            ssl_key: ''
            ssl_chain: ''
            ssl_certs_dir: ''
            ssl_protocol: ''
            ssl_cipher: ''
            directories:
                avd_fmfdhb1cq0wm:
                    path: /var/www/project/investments/assets
                    directoryindex: ''
                    options:
                        - Indexes
                    allow_override:
                        - None
                    require:
                        - 'all granted'
                    custom_fragment: ''
                    provider: directory
            files_match:
                avfm_ga9l2i7e6zum:
                    path: \.(ttf|otf|eot|woff|woff2)$
                    sethandler: ''
                    custom_fragment: ''
                    provider: filesmatch
        av_t8zrg1bc5a6p:
            servername: uploads.project.dev
            docroot: /var/www/project/investments/uploads
            port: '80'
            setenvif:
                - 'Authorization "(.*)" HTTP_AUTHORIZATION=$1'
            custom_fragment: ''
            ssl: '0'
            ssl_cert: ''
            ssl_key: ''
            ssl_chain: ''
            ssl_certs_dir: ''
            ssl_protocol: ''
            ssl_cipher: ''
            directories:
                avd_davzv2hfsgrt:
                    path: /var/www/project/investments/uploads
                    directoryindex: ''
                    options:
                        - Indexes
                    allow_override:
                        - None
                    require:
                        - 'all granted'
                    custom_fragment: ''
                    provider: directory
letsencrypt:
    install: '1'
    settings:
        email: [email protected]
    domains:
        led_eab0f55e9fgk:
            hosts:
                - project.dev
                - www.project.dev
php:
    install: '1'
    settings:
        version: '5.6'
    modules:
        php:
            - cli
            - intl
            - xml
        pear: {  }
        pecl: {  }
    ini:
        display_errors: 'On'
        error_reporting: '-1'
        session.save_path: /var/lib/php/session
        date.timezone: UTC
        short_open_tag: '1'
    fpm_ini:
        error_log: /var/log/php-fpm.log
    fpm_pools:
        phpfp_i0ppkc7x2zdo:
            ini:
                prefix: www
                listen: '127.0.0.1:9000'
                security.limit_extensions: .php
                user: www-user
                group: www-data
    composer: '1'
    composer_home: ''
xdebug:
    install: '0'
    settings:
        xdebug.default_enable: '1'
        xdebug.remote_autostart: '0'
        xdebug.remote_connect_back: '1'
        xdebug.remote_enable: '1'
        xdebug.remote_handler: dbgp
        xdebug.remote_port: '9000'
blackfire:
    install: '0'
    settings:
        server_id: ''
        server_token: ''
        agent:
            http_proxy: ''
            https_proxy: ''
            log_file: stderr
            log_level: '1'
        php:
            agent_timeout: '0.25'
            log_file: ''
            log_level: '1'
xhprof:
    install: '0'
wpcli:
    install: '0'
    version: v0.24.1
drush:
    install: '0'
    version: 8.0.5
ruby:
    install: '1'
    versions:
        rv_yremohn0yu19:
            default: '1'
            bundler: '1'
            version: 2.3.1
            gems:
                - [email protected]
                - [email protected]
                - [email protected]
python:
    install: '1'
    packages: {  }
    versions: {  }
nodejs:
    install: '0'
    settings:
        version: '6'
    npm_packages: {  }
hhvm:
    install: '0'
    composer: '1'
    composer_home: ''
    settings: {  }
    server_ini:
        hhvm.server.host: 127.0.0.1
        hhvm.server.port: '9000'
        hhvm.log.use_log_file: '1'
        hhvm.log.file: /var/log/hhvm/error.log
    php_ini:
        display_errors: 'On'
        error_reporting: '-1'
        date.timezone: UTC
mariadb:
    install: '1'
    settings:
        version: '10.1'
        root_password: '123'
        override_options: {  }
    users:
        mariadbnu_yjuqjjejp9sx:
            name: dbuser
            password: '123'
    databases:
        mariadbnd_g93vvidme123:
            name: project_invest
            sql: ''
    grants:
        mariadbng_g7q54ggqvzqz:
            user: dbuser
            table: '*.*'
            privileges:
                - ALL
mysql:
    install: '0'
    settings:
        version: '5.7'
        root_password: '123'
        override_options: {  }
    users:
        mysqlnu_w9xqa358r12p:
            name: dbuser
            password: '123'
    databases:
        mysqlnd_ts2sqepd0jqb:
            name: dbname
            sql: ''
    grants:
        mysqlng_7lvwjinmbuew:
            user: dbuser
            table: '*.*'
            privileges:
                - ALL
postgresql:
    install: '0'
    settings:
        global:
            encoding: UTF8
            version: '9.6'
        server:
            postgres_password: '123'
    databases: {  }
    users: {  }
    grants: {  }
mongodb:
    install: '0'
    settings:
        bind_ip: 127.0.0.1
        port: '27017'
    globals:
        version: 2.6.0
    databases: {  }
redis:
    install: '1'
    settings:
        port: '6379'
sqlite:
    install: '0'
    databases: {  }
mailhog:
    install: '0'
    settings:
        smtp_ip: 0.0.0.0
        smtp_port: 1025
        http_ip: 0.0.0.0
        http_port: '8025'
        path: /usr/local/bin/mailhog
beanstalkd:
    install: '0'
    settings:
        listenaddress: 0.0.0.0
        listenport: '11300'
        maxjobsize: '65535'
        maxconnections: '1024'
        binlogdir: /var/lib/beanstalkd/binlog
        binlogfsync: null
        binlogsize: '10485760'
    beanstalk_console: 0
rabbitmq:
    install: '0'
    settings:
        port: '5672'
    users: {  }
    vhosts: {  }
    plugins: {  }
elastic_search:
    install: '0'
    settings:
        version: 2.3.1
        java_install: true
    instances:
        esi_gwallr1o17u6:
            name: es-01
solr:
    install: '0'
    settings:
        version: 5.5.2
        port: '8984'

Most helpful comment

@adnnn I was getting an issue with this as well.

If you change your custom_fragment setting for the directory block from /path/to/file.conf to be Include /path/to/file.conf things should start working for you.

It does seem a little strange that for the vhost block it includes the contents but doesn't for the directory block, but this at least should be a temporary workaround

All 2 comments

@adnnn I was getting an issue with this as well.

If you change your custom_fragment setting for the directory block from /path/to/file.conf to be Include /path/to/file.conf things should start working for you.

It does seem a little strange that for the vhost block it includes the contents but doesn't for the directory block, but this at least should be a temporary workaround

I just created a pull request to fix this issue: https://github.com/puphpet/puppet-puphpet/pull/48

Was this page helpful?
0 / 5 - 0 ratings