设置符号链接错误-Ansible

设置符号链接错误-Ansible,ansible,ansible-playbook,symlink,Ansible,Ansible Playbook,Symlink,我试图设置一个从源到目标的符号链接,但继续点击 致命:[默认值]:失败!=>{“changed”:false,“failed”:true,“msg”:“链接时出错:[Errno 2]没有这样的文件或目录”,“path”:“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/sdk/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework

我试图设置一个从源到目标的符号链接,但继续点击

致命:[默认值]:失败!=>{“changed”:false,“failed”:true,“msg”:“链接时出错:[Errno 2]没有这样的文件或目录”,“path”:“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/sdk/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/Ruby-2.0.0/Ruby/config.h”,“state”:“缺席”}

观察到,它显示出状态缺失,即使状态作为链接给出

这是已执行的任务:

 - name: "Create ruby config.h symlink"
  file:
    src: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin15/ruby/config.h"
    dest: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/config.h"
    state: link
    force: yes 
  when: xcode_version != "8.0"
文件存在:

ls -l /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin15/ruby/config.h
-rw-r--r--  2 root  wheel  7805 Jan 31  2016 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin15/ruby/config.h
注:根据此处的讨论,包括作用力是-


感谢您的帮助

我不确定丢失的目录是否是问题的原因,但在创建指向该目录的链接之前,最好确保目标目录存在:

- name: Ensure that the directory exist
  file:
    path: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby"
    state: directory
    mode: 0755
    owner: root
    group: wheel

- name: "Create ruby config.h symlink"
  file:
  ...

我的回答可能无法回答OP问题,但它肯定会导致此问题,因此可能会解释另一个人遇到此问题的原因。我经常发现这样的错误可能是由链接名中的拖尾
/
引起的

例如,下面创建目录的任务将成功

- name: ensure foobar directory exists
  file: 
    state: directory
    path: '/tmp/foobar/'
    owner: 'foo'    
    group: 'bar'
    mode: 0777
但是,后续的链接创建任务(如果按以下方式编写)将导致您遇到的错误

- name: Establish link to foobar
  file:
    src: '/tmp/foobar/'
    dest: '/local/baz/'
    state: link
导致以下错误

致命:[默认值]:失败!=>{“更改”:false,“失败”:true,“msg”: 链接时出错:[Errno 2]没有这样的文件或目录,“路径”: "...", “状态”:“缺席”}

按照以下步骤删除
/
,可以解决此问题

- name: Establish link to foobar
  file:
    src: '/tmp/foobar/'
    dest: '/local/baz'
    state: link

您可以删除
force
并重试吗?最初尝试时没有强制,两种方式都是相同的错误。是的,遇到了与OP相同的错误,并且确实是尾随的“/”。谢谢结果:
拒绝从目录转换为