phpvagrantpuppetpuphpet

PuPHPet build error - invalid option: --manifestdir


I am giving PuPHPet a go, so created an archive using all the basic options.
When trying vagrant up I get the error:

==> machine1: Error: Could not parse application options: invalid option: --manifestdir

A little bit of investigation points to the problem being with puppet V5 not longer supports manifest_dir option.
The suggested fix is to update the config to use environments and set environment and environments_path in config.

Can anyone throw some light on where in the config.yaml these need to be set?
Also where in the PuPHPet directory structure the environment folder needs to live?

The config.yaml that I am using;

vagrantfile:
    target: local
    vm:
        provider:
            local:
                box: bento/ubuntu-16.04
                box_url: 'false'
                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_k8bgkk2q1t9z:
                        id: machine1
                        hostname: machine1.puphpet
                        network:
                            private_network: 192.168.56.101
                            forwarded_port:
                                vflmnfp_yru3n3tlfqio:
                                    host: '9419'
                                    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_lvspa9n8sfn3:
                owner: www-data
                group: www-data
                source: ./
                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'
        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:
        - bash-completion
        - htop
        - vim
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: {  }
resolv:
    install: '1'
    nameservers:
        - 8.8.8.8
        - 8.8.4.4
    domainname: ''
    searchpath: {  }
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_9iotkb0epf2c:
            server_name: awesome.dev
            server_aliases:
                - www.awesome.dev
            www_root: /var/www/awesome
            listen_port: '80'
            client_max_body_size: 1m
            ssl: '0'
            locations:
                nxvl_jjk47mtl0r5o:
                    www_root: /var/www/awesome/web
                    location: /
                    autoindex: 'off'
                    internal: 'false'
                    index_files:
                        - index.html
                        - index.php
                        - app.php
                    try_files:
                        - $uri
                        - $uri/
                        - /index.php$is_args$args
                        - /app.php$is_args$args
                    fastcgi: ''
                    fastcgi_index: ''
                    fastcgi_split_path: ''
                    proxy: ''
                    proxy_redirect: ''
                nxvl_8j0icnvn334t:
                    www_root: /var/www/awesome/web
                    location: '~ ^/(app_dev|config)\.php(/|$)'
                    autoindex: 'off'
                    internal: 'false'
                    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_fan1klxugnqt:
                    www_root: /var/www/awesome/web
                    location: '~ ^/index\.php(/|$)'
                    autoindex: 'off'
                    internal: 'false'
                    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: ''
                nxvl_5grri35wy80b:
                    www_root: /var/www/awesome/web
                    location: '~ ^/app\.php(/|$)'
                    autoindex: 'off'
                    internal: 'false'
                    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: ''
    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_2bg7c7vda1pb:
            servername: awesome.dev
            serveraliases:
                - www.awesome.dev
            docroot: /var/www/awesome/web
            port: '80'
            setenvif:
                - 'Authorization "(.*)" HTTP_AUTHORIZATION=$1'
            custom_fragment: ''
            ssl: '0'
            ssl_cert: LETSENCRYPT
            ssl_key: LETSENCRYPT
            ssl_chain: LETSENCRYPT
            ssl_certs_dir: LETSENCRYPT
            ssl_protocol: ''
            ssl_cipher: ''
            directories:
                avd_ayxmp8ol7nqw:
                    path: /var/www/awesome/web
                    directoryindex: 'index.php app.dev'
                    options:
                        - Indexes
                        - FollowSymlinks
                        - MultiViews
                    allow_override:
                        - All
                    require:
                        - 'all granted'
                    custom_fragment: ''
                    provider: directory
            files_match:
                avfm_5mduocupch06:
                    path: (app_dev|config)\.php$
                    sethandler: 'proxy:fcgi://127.0.0.1:9000'
                    setenv:
                        - 'APP_ENV dev'
                    custom_fragment: ''
                    provider: filesmatch
                avfm_h7xbhb0zqsoq:
                    path: app\.php$
                    sethandler: 'proxy:fcgi://127.0.0.1:9000'
                    setenv:
                        - 'APP_ENV prod'
                    custom_fragment: ''
                    provider: filesmatch
                avfm_bgd9dcbawlo8:
                    path: \.php$
                    sethandler: 'proxy:fcgi://127.0.0.1:9000'
                    custom_fragment: ''
                    provider: filesmatch
letsencrypt:
    install: '1'
    settings:
        email: ''
        webserver_service: ''
    domains: {  }
php:
    install: '1'
    settings:
        version: '7.2'
    modules:
        php:
            - cli
            - intl
            - xml
        pear: {  }
        pecl: {  }
    ini:
        display_errors: 'On'
        error_reporting: '-1'
        session.save_path: /var/lib/php/session
        date.timezone: UTC
    fpm_ini:
        error_log: /var/log/php-fpm.log
    fpm_pools:
        phpfp_kk90qv3if70v:
            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: v1.1.0
drush:
    install: '0'
    version: 8.0.5
ruby:
    install: '1'
    versions:
        rv_45pl5r1olefv:
            default: '1'
            bundler: '1'
            version: '2.4'
            gems:
                - deep_merge@1.2.1
                - activesupport@5.1.4
                - vine@0.4
python:
    install: '1'
    packages: {  }
    versions: {  }
nodejs:
    install: '0'
    settings:
        version: '6'
    npm_packages: {  }
mariadb:
    install: '0'
    settings:
        version: '10.1'
        root_password: '123'
        override_options: {  }
    users:
        mariadbnu_lxzy8vptfdcv:
            name: dbuser
            password: '123'
    databases:
        mariadbnd_vch18hn8fy7h:
            name: dbname
            sql: ''
    grants:
        mariadbng_dkhxul0k78c2:
            user: dbuser
            table: '*.*'
            privileges:
                - ALL
mysql:
    install: '1'
    settings:
        version: '5.7'
        root_password: '123'
        override_options: {  }
    users:
        mysqlnu_rew8wtlnfqjm:
            name: dbuser
            password: '123'
    databases:
        mysqlnd_xmr4nhv1e4ki:
            name: dbname
            sql: ''
    grants:
        mysqlng_eg463msh1guu:
            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: 3.6.2
    databases: {  }
redis:
    install: '0'
    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: 6.1.2
        java_install: true
    instances:
        esi_qgdjc41v6s8n:
            name: es-01
            jvm_options:
                - '-Xms2G'
                - '-Xmx2G'

Solution

  • Step 1:

    Open puphpet/vagrant/Vagrantfile-local

    Step 2:

    Find this line of code:

    puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}"
    

    Step 3:

    Insert these two lines of code before the line of code previously mentioned in step 2

    puppet.environment_path = "#{data['vm']['provision']['puppet']['environment_path']}"
    puppet.environment      = "#{data['vm']['provision']['puppet']['environment']}"
    

    It should look like this now:

    Vagrantfile-local


    Step 4:

    open puphpet/config.yaml

    Step 5:

    Find this line of code:

    manifests_path: puphpet/puppet/manifests
    

    Step 6:

    Insert these two lines of code before the line of code previously mentioned in step 5

    environment_path: puphpet/puppet/environments
    environment: development
    

    It should look like this now:

    enter image description here

    Step 7:

    Go to puphpet/puppet directory and create a new directory and name it environments and inside the environments directory, create another directory and name it development

    The structure should look like the one below: enter image description here

    And you're done!!!

    But make sure to run vagrant provision to load the new configuration.