打印多行以提高预配 Vagrantfile 的可读性



我使用 printf 来设置我的 Nginx 设置,它工作正常,但阅读和更改很尴尬; 有没有更好的方法来提高可读性?

config.vm.provision "shell", inline: <<-SHELL
    sudo rm /etc/nginx/sites-enabled/default
    sudo printf '%sn' 'server {' 'root /home/vagrant/web;' 'index index.php index.html index.htm;' 'location / {' 'try_files $uri $uri/ /index.php?$args ;' '}' 'location ~ .php$ {' 'fastcgi_split_path_info ^(.+.php)(/.+)$;' 'fastcgi_pass unix:/var/run/php5-fpm.sock;' 'fastcgi_index index.php;' 'include fastcgi_params;' '}' '}' >> /etc/nginx/sites-enabled/default
    sudo service nginx start
SHELL

假设您的来宾计算机上有 Bash,您可以尝试在此处使用嵌套 bash 文档。不能保证可以与Vagrantfile一起使用,但无论如何都值得一试。

config.vm.provision "shell", inline: <<-SHELL
    sudo /bin/bash << 'SCRIPT'
        rm /etc/nginx/sites-enabled/default;
        cat << 'EOF' >> /etc/nginx/sites-enabled/default
            %sn
            server {
                root /home/vagrant/web;
                index index.php index.html index.htm;
                location / {
                    try_files $uri $uri/ /index.php?$args ;
                }
                location ~ .php$ {
                    fastcgi_split_path_info ^(.+.php)(/.+)$;
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
                }
            }
EOF
        service nginx start
SCRIPT
SHELL

请注意,EOF、SCRIPT 和 SHELL 必须放在行的开头。这些单词前面不得有任何制表符或空格。

最新更新