首页 > 解决方案 > Ansible 节点无法访问我的主机系统中的文件

问题描述

我正在尝试通过 Ansible 角色将文件从我的主机 Mac 系统复制到 VM 上的 CentOS。

我创建了一个名为 Ansible Roles 的文件夹,在该文件夹下我使用了 ansible-galaxy 命令并创建了一个名为 tomcatdoccfg 的角色。helloworld.war 存在于根 Ansible Roles 文件夹中。

文件夹结构如下: 在此处输入图像描述

Mac 上的 Ansible tasks\main.yml 剧本如下:

- name: Copy war file to tmp
  copy:
    src: ⁨helloworld.war
    dest: /tmp/helloworld.war

用户 abhilashdk(我的默认 MAC 用户名)应该可以访问 helloworld.war 文件。CentOS VM 也有一个名为 abhilashdk 的用户。我已经配置了 ssh 密钥。这意味着我已经生成 ssh-keys -t rsa 并使用 ssh-copy-id 将密钥移动到 CentOS VM,并且我可以使用 ansible -i hosts node1 -m ping命令 ping 到 VM。我也可以使用 ansible 在我的 node1 机器上安装 docker。

我在根 Ansible Roles 文件夹中有一个 main.yml 文件,其内容如下:

---
- hosts: node1
  vars:
    webapp:
      app1:
        PORT: 8090
        NAME: webapp1
      app2:
        PORT: 8091
        NAME: webapp2
  become: true
  roles:
    - docinstall
    - tomcatdoccfg

现在,当我运行命令时,ansible-playbook -i hosts main.yml 我收到以下错误,将 war 文件复制到 tmp:

TASK [tomcatdoccfg : Copy war file to tmp] ************************************************************************************ An exception occurred during task execution. To see the full traceback, use -vvv. The error was: /Files/DevOps/Ansible/Ansible_roles/⁨helloworld.war fatal: [node1]: FAILED! => {"changed": false, "msg": "Could not find or access '⁨helloworld.war'\nSearched in:\n\t/Files/DevOps/Ansible/Ansible_roles/tomcatdoccfg/files/⁨helloworld.war\n\t/Files/DevOps/Ansible/Ansible_roles/tomcatdoccfg/⁨helloworld.war\n\t/Files/DevOps/Ansible/Ansible_roles/tomcatdoccfg/tasks/files/⁨helloworld.war\n\t/Files/DevOps/Ansible/Ansible_roles/tomcatdoccfg/tasks/⁨helloworld.war\n\t/Files/DevOps/Ansible/Ansible_roles/files/⁨helloworld.war\n\t/Files/DevOps/Ansible/Ansible_roles/⁨helloworld.war"}

我不明白我应该给 hellowrold.war 文件什么权限,以便我在 vm 上的 centos 能够通过 ansible playbook/roles 访问它。

谁能帮我解决这个问题。

提前致谢

标签: macoscentosansible

解决方案


添加为答案,因此我可以显示您在问题中附加的日志包括的非拉丁字符:

注意在helloworld.war. 日志

可能是 Ansible 在 FS 上找不到文件的原因。为了安全起见,我会删除整个main.yml并重写它。


推荐阅读