Как следует из сообщения об ошибке, а также указание документации :
Загрузка файлов провайдером файлов выполняется от имени пользователя SSH или PowerShell. Это важно, поскольку эти пользователи обычно не имеют повышенных привилегий самостоятельно. Если вы хотите загружать файлы в местоположения, для которых требуются повышенные привилегии, мы рекомендуем загрузить их во временные местоположения, а затем с помощью поставщика оболочки для их перемещения.
Таким образом, пользователь vagrant
(если не изменен) используется для поиска файла, но не может получить к нему доступ /etc/
.
Чтобы заставить его работать, вам нужно загрузить его во временное местоположение, а затем с помощью поставщика оболочки переместить его в целевой каталог:
config.vm.provision "file",
source: "./bolt.local.conf",
destination: "/tmp/bolt.local.conf"
config.vm.provision "shell",
inline: "mv /tmp/bolt.local.conf /etc/nginx/conf.d/bolt.local.conf"
Это работает, потому что параметр privileged
по умолчанию имеет значение true для инициаторов оболочки . Но немного сложнее иметь двух провайдеров, чтобы просто скопировать файл конфигурации.
Но учтите, что если файл уже находится в вашей общей папке, вы можете просто использовать поставщика оболочки для копирования его в каталог nginx, так что в итоге вы получите что-то вроде этого:
# This is the default and serve just as a reminder
config.vm.synced_folder ".", "/vagrant"
config.vm.provision "shell",
inline: "cp /vagrant/bolt.local.conf /etc/nginx/conf.d/bolt.local.conf"