Vagrant: مزود shell على noexec / tmp

تم إنشاؤها على ٦ فبراير ٢٠١٦  ·  3تعليقات  ·  مصدر: hashicorp/vagrant

يتم نسخ البرنامج النصي config.vm.provision إلى / tmp ، إذا تم تنفيذه على نظام ملفات noexec محمل ، فسأحصل على هذا الخطأ:

==> default: bash: line 2: /tmp/vagrant-shell: Permission denied

حل مقترح: تعامل مع نص الصدفة كمدخل لـ bash:

    bash /tmp/vagrant-shell

الملف المصدر: vagrant / plugins / Provers / shell / provideer.rb

التعليق الأكثر فائدة

في حال واجه أي شخص آخر هذا ، تحتاج إلى استخدام خيار upload_path لتوجيه النص إلى مكان آخر غير / tmp.

أستخدم شيئًا مثل هذا:

config.vm.provision "vagrant preflight", type: "shell",
    path: "scripts/preflight.sh",
    upload_path: '/opt/preflight.sh',
    args: "#{username}"

ال 3 كومينتر

مرحبا bbaassssiiee

شكرا لفتح قضية. للأسف لا يمكننا أن نفترض فقط باش. لحسن الحظ ، يتم سرد الحلول الموصى بها في المستندات: https://www.vagrantup.com/docs/provisioning/shell.html

لتشغيل برنامج نصي متاح بالفعل على الضيف ، يمكنك استخدام برنامج نصي مضمّن لاستدعاء البرنامج النصي البعيد على الضيف.

Vagrant.configure("2") do |config|
  config.vm.provision "shell",
    inline: "/bin/sh /path/to/the/script/already/on/the/guest.sh"
end

النمط الموصى به هو تحميل البرنامج النصي باستخدام مزود الملفات ثم تنفيذه يدويًا باستخدام المترجم الذي تريده. شكرا! :ابتسامة:

مرحبًا sethvargo ،
كيف يجب أن يعمل الحل الخاص بك؟ المشكلة هي كما يلي: إذا قمت بتحميل الملف باستخدام مزود الملفات ، فلن أتمكن من تحميله بحقوق التنفيذ من مضيف windows. لذلك لا يمكنني استخدام وظيفة مسار مزودي الصدفة لتنفيذ البرنامج النصي. من ناحية أخرى ، لا يمكنني استخدام المتغير المضمن الذي قدمته ، لأن هذا فقط أنشئ / tmp / vagrant-shell بالمحتوى "/ bin / sh /path/to/the/script/already/on/the/guest.sh "ويحاول تنفيذه. بالطبع يفشل التنفيذ ، لأن / tmp لا يزال noexec.
هل من الممكن بطريقة ما إخبار موفر الصدفة بأنه يجب عليه إنشاء ملف tmp في مسار محدد؟

يعتبر

راسكيل

في حال واجه أي شخص آخر هذا ، تحتاج إلى استخدام خيار upload_path لتوجيه النص إلى مكان آخر غير / tmp.

أستخدم شيئًا مثل هذا:

config.vm.provision "vagrant preflight", type: "shell",
    path: "scripts/preflight.sh",
    upload_path: '/opt/preflight.sh',
    args: "#{username}"
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات