AfDev
AfDev

Reputation: 1242

Chef link error when trying to create symlink of two directories

I can't seem to get chef to create a symlink between two directories. I want to create a symlink between two different directories. (/var/log/nginx to /data/logs/nginx).

directory node[:nginx][:log_dir] do
  owner 'root'
  mode 00777
  action :create
 end

directory node[:nginx][:integration][:log_dir] do
  owner 'root'
  mode 00777
  action :create
end

link node[:nginx][:integration][:log_dir] do
  to node[:nginx][:log_dir]
end

I get the following error

Errno::EISDIR
Is a directory - var/log/nginx

link("var/log/nginx") do
  provider Chef::Provider::Link
  action :create
  retries 0
  retry_delay 2
  guard_interpreter :default
  to "/data/logs/nginx/"
  link_type :symbolic
  target_file "var/log/nginx"
  cookbook_name :nginx_integration
  recipe_name "default"
end

Upvotes: 3

Views: 5473

Answers (1)

StephenKing
StephenKing

Reputation: 37630

You must not create node[:nginx][:integration][:log_dir] as a directory, because then it can't be a symlink.

Just remove the declaration of directory[#{node[:nginx][:integration][:log_dir]}].

Upvotes: 5

Related Questions