Vagrant: noexec /tmp์˜ ์…ธ ์ œ๊ณต์ž

์— ๋งŒ๋“  2016๋…„ 02์›” 06์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: hashicorp/vagrant

config.vm.provision ์Šคํฌ๋ฆฝํŠธ๋Š” /tmp์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ noexec ๋งˆ์šดํŠธ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

์ œ์•ˆ๋œ ์†”๋ฃจ์…˜: ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ bash์— ๋Œ€ํ•œ ์ž…๋ ฅ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์‹ญ์‹œ์˜ค.

    bash /tmp/vagrant-shell

์†Œ์Šค ํŒŒ์ผ: vagrant/plugins/provisioners/shell/provisioner.rb

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด ๋ฌธ์ œ๋ฅผ ์ ‘ํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ upload_path ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ /tmp๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @bbaassssiiee

๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์šฐ๋ฆฌ๋Š” bash๋ฅผ ๊ฐ€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ๊ถŒ์žฅ๋˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ๋ฌธ์„œ์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 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 ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰ ๊ถŒํ•œ์œผ๋กœ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‰˜ ์ œ๊ณต์ž ๊ฒฝ๋กœ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— "/bin/sh /path/to/the/script/already/on/the/guest.sh" ๋‚ด์šฉ์œผ๋กœ /tmp/vagrant-shell์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ณต๋œ ์ธ๋ผ์ธ: ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. "ํ•˜๊ณ  ์‹คํ–‰์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  /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 ๋“ฑ๊ธ‰