Ansible节点无法访问主机系统中的文件

时间:2018-06-23 12:57:05

标签: macos centos ansible

我正试图通过Ansible角色将文件从Host Mac系统复制到VM上的CentOS。

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

文件夹结构如下: enter image description here

在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 file复制到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剧本/角色访问它。

有人可以帮我解决这个问题吗?

预先感谢

2 个答案:

答案 0 :(得分:0)

添加为答案,这样我就可以显示您在问题中附加的日志中包含的非拉丁字符:

helloworld.war之前注意。 log

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

答案 1 :(得分:-1)

ansible-playbook -i hosts main.yml --ask-sudo-passansible-playbook -i hosts main.yml --ask-pass 该参数会要求您输入用于操作手册的sudo密码