Puppet / Vagrant: contenu de Apache VirtualHost corrompu

J’utilise un vagrant / marionnette pour configurer mon testmachine, je l’utilise pour configurer le virtualhost pour apache, mais quand je lance apache, j’obtiens une erreur, apparemment pour un espacement ou des caractères étranges:

/apache2 start * Starting web server apache2 Syntax error on line 4 of /etc/apache2/sites-enabled/my-ssl.localhost.conf: Invalid command '\xc2\xa0\xc2\xa0ServerName', perhaps misspelled or defined by a module not included in the server configuration Action 'start' failed. 

le fichier manifeste que j’ai écrit pour configurer le virtualhost ressemble à ceci

 file {'hostfile4': path => '/etc/apache2/sites-available/my-ssl.localhost.conf', ensure => present, content => "  DocumentRoot '/coding/mysite/htdocs/'  ServerName foa-ssl.localhost  ServerAlias foa-ssl.localhost  ErrorLog /var/log/apache2/error.log  CustomLog /var/log/apache2/access.log combined  RewriteLog /var/log/apache2/rewrite.log  RewriteLogLevel 0            AllowOverride All        Options All -Indexes        Order allow,deny        Allow from all        php_admin_value short_open_tag Off        AddType application/x-httpd-php .css .js                AllowOverride All        Options All -Indexes        Order allow,deny        Allow from all        php_admin_value short_open_tag Off        AddType application/x-httpd-php .css .js          Options +ExecCGI    SSLEngine on  SSLCertificateFile   /etc/ssl/certs/ssl-cert-snakeoil.pem ", } 

c2 a0 (dans le message d’erreur) est le code unicode pour le caractère spécial “espace non cassant”, cf. ici

Il semble que Apache n’aime pas ça du tout. Vous devez donc vous débarrasser de ces espaces insécables et utiliser des espaces normaux, même si cela semble identique dans votre éditeur.

Vous pouvez utiliser NotePad ++ et lui demander de convertir vos fichiers de marionnettes en “ANSI”, qui est un encodage plus sûr pour les fichiers de configuration.

Vous devez avoir nettoyé cela sans le savoir tout en déplaçant le contenu vers un fichier externe, mais l’utilisation d’un fichier externe n’est pas la solution, même si cela a fonctionné.

résolu en utilisant ceci:

 file { "/etc/apache2/sites-available/my-ssl.localhost.conf": mode => 440, owner => root, group => root, source => "/coding/puppetstuff/my-ssl.localhost.conf" } 

/coding/puppetstuff/foa-ssl.localhost.conf est dans un dossier partagé (le chemin est sur l’image)