Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Ansible中创建符号链接,表示:“;文件夹不为空,拒绝转换它";_Ansible_Ansible Playbook - Fatal编程技术网

无法在Ansible中创建符号链接,表示:“;文件夹不为空,拒绝转换它";

无法在Ansible中创建符号链接,表示:“;文件夹不为空,拒绝转换它";,ansible,ansible-playbook,Ansible,Ansible Playbook,错误: 失败!=>{“changed”:false,“failed”:true,“gid”:0,“group”:“root”,“mode”:“0755”,“msg”:“目录/var/www/html/simpleRepoTwo/simpleRepoThree/release-20161213-1927/不为空,拒绝转换”,“所有者”:“root”,“路径”:/var/www/html/simpleRepoTwo/simpleRepoThree/release-20161213-1927/,“大小

错误:

失败!=>{“changed”:false,“failed”:true,“gid”:0,“group”:“root”,“mode”:“0755”,“msg”:“目录/var/www/html/simpleRepoTwo/simpleRepoThree/release-20161213-1927/不为空,拒绝转换”,“所有者”:“root”,“路径”:/var/www/html/simpleRepoTwo/simpleRepoThree/release-20161213-1927/,“大小”:4096,“状态”:“directory”,“uid”:0}

我还尝试在/home/ubuntu/中使用不同的目录创建符号链接<代码>强制:是不起作用

这是密码

- name: Creating symlinks of Products
  file:
    src: /home/ubuntu/productName/
    dest: /var/www/html/simpleRepoTwo/simpleRepoThree/release-{{release_folder}}/
    state: link
    force: yes
我想在
simpleRepoTwo/simpleRepoThree/release-20161213-1927
中创建
productName的符号链接“/home/ubuntu/productName”到您的文件夹“/var/www/html/simpleRepoTwo/simpleRepoThree/release-{release\u folder}”,您必须在参数dest中设置“/home/ubuntu/productName”。不得使用最终的“/”

关于力参数,请在两种情况下使用它:

  • 源文件不存在(但稍后会出现)
  • 目标存在并且是一个文件(因此,我们需要取消“path”文件的链接,并创建指向“src”文件的符号链接来代替它)
使用此任务

- name: Creating symlinks of Products
  file:
    src: /var/www/html/simpleRepoTwo/simpleRepoThree/release-{{release_folder}}
    dest: /home/ubuntu/productName
    state: link
- name: Creating symlinks of Products
  file:
    src: "/var/www/html/simpleRepoTwo/simpleRepoThree/release-{{ release_folder }}/{{ item.src }}"
    dest: "/home/ubuntu/{{ item.dest }}"
    state: link
  with_items:
  - src: p1
    dest: p1
  - src: p2
    dest: p2
要循环项目,请使用此任务

- name: Creating symlinks of Products
  file:
    src: /var/www/html/simpleRepoTwo/simpleRepoThree/release-{{release_folder}}
    dest: /home/ubuntu/productName
    state: link
- name: Creating symlinks of Products
  file:
    src: "/var/www/html/simpleRepoTwo/simpleRepoThree/release-{{ release_folder }}/{{ item.src }}"
    dest: "/home/ubuntu/{{ item.dest }}"
    state: link
  with_items:
  - src: p1
    dest: p1
  - src: p2
    dest: p2

如果这是rails应用程序,rails会将.keep文件放在一些文件夹中。例如日志。这会导致文件夹不为空。清空文件夹,然后重试。

似乎没有办法满足您的要求

空目录可以“转换”为另一个目录中的符号链接。此“转换”需要删除原始目录并随后创建符号链接

但如果该目录不是空的,则删除该目录将使其所有内容完全不可用。Ansible说这是不可能的,因为错误信息中已经明确说明了这一点


当然,您可以创建两个任务,首先删除目录内容,然后将其“转换”为符号链接。

此外,如果您用
/
结束
dest:
参数值,Ansible将失败,但原因不同。Hello@Nelson G,符号链接已创建,但我再次尝试循环它,由于我们有大约8种产品,因此当用户键入ourwebsite.com/admin时,它将进入adminpanel。-名称:创建产品的符号链接文件:src:'/var/www/html/{item.src}}/'dest:'/var/www/html/simpleRepoTwo/simpleRepoThree/{release_folder}/{item.dest}'状态:链接到{u items:-{src:'simpleRepo',dest:'prodcuttone'}-{src:'simpleRepo',dest:'prodcutTwo'}-{src:'simpleRepo',dest:'prodcutThree'}-{src:'simpleRepo',dest:'prodcuttefour'}你好,Nelson和tecraf,我厌倦了使用循环创建符号链接,这两种语法都不起作用。要点如下:错误(漂亮的打印):失败:[54.85.157.222](item={u'dest':u'prodcutSix',u'src':u'simpleRepo'})=>{“failed”:true,“item”:{“dest”:“prodcutSix”,“src”:“simpleRepo”},“msg”:“链接时出错:[Errno 2]没有这样的文件或目录”,“路径”:/var/www/html/simpleRepoTwo/simpleRepoThree/20161214-1334/prodcutSix”,“state”:“缺席”}如果我每隔一段时间运行playbook,8个产品符号链接的创建并不均匀,有时它会抛出错误,有时它只是完美地创建了符号链接。但大多数时候它只是错误:error::(item={u'dest':u'prodcutTwo',u'src':u'simplerpo'}=>{“failed”:true,“item”:{“dest”:“prodcutTwo”,“src”:“simplerpo”},“msg”:”链接时出错:[Errno 2]没有这样的文件或目录,“路径”:/var/www/html/simpleRepoTwo/simpleRepoThree/20161214-1540/prodcutTwo,“状态”:“缺席”}