从远程计算机复制VAR的main.yaml文件时,角色VAR部分出现Ansible playbook错误

从远程计算机复制VAR的main.yaml文件时,角色VAR部分出现Ansible playbook错误,yaml,jinja2,ansible,ansible-playbook,Yaml,Jinja2,Ansible,Ansible Playbook,我正在尝试使用角色执行ansible剧本。我有一些变量,我在vars部分的main.yaml中定义了这些变量。我正在从另一台远程机器复制这些变量(main.yaml)。 我的问题是,我的playbook第一次抛出错误,即使它复制了我的vars部分中的main.yaml文件。当我第二次跑步时,它能很好地执行剧本。据我所知,这是第一次,虽然文件被复制了,但它没有读取,因为它在playbook运行之前不存在。有没有一种方法可以让我第一次成功地运行它而不出错 图像角色将给出角色和子文件的清晰概念 sit

我正在尝试使用角色执行ansible剧本。我有一些变量,我在vars部分的main.yaml中定义了这些变量。我正在从另一台远程机器复制这些变量(main.yaml)。 我的问题是,我的playbook第一次抛出错误,即使它复制了我的vars部分中的main.yaml文件。当我第二次跑步时,它能很好地执行剧本。据我所知,这是第一次,虽然文件被复制了,但它没有读取,因为它在playbook运行之前不存在。有没有一种方法可以让我第一次成功地运行它而不出错

图像角色将给出角色和子文件的清晰概念

site.yaml

---
- name: Testing the Mini project
  hosts: all
  roles:
  - test
---
- name: Converting Mysql to CSV file
  command: mysqldump -u root -padmin -T/tmp charan test --fields-terminated-by=,
  when: inventory_hostname == "ravi"

- name: Converting CSV file to yaml format
  shell: python /tmp/test.py > /tmp/main.yaml
  when: inventory_hostname == "ravi"

- name:Copying yaml file from remote node to vars
  shell: sshpass -p admin scp -r root@192.168.56.101:/tmp/main.yaml /etc/ansible/Test/roles/vars/main.yaml
  when: inventory_hostname == "charan"

- name:Install Application as per the table
  apt: name={{ item.Application }} state=present
  when: inventory_hostname == {{ item.Username }} 
  with_items: user_app
任务/main.yaml

---
- name: Testing the Mini project
  hosts: all
  roles:
  - test
---
- name: Converting Mysql to CSV file
  command: mysqldump -u root -padmin -T/tmp charan test --fields-terminated-by=,
  when: inventory_hostname == "ravi"

- name: Converting CSV file to yaml format
  shell: python /tmp/test.py > /tmp/main.yaml
  when: inventory_hostname == "ravi"

- name:Copying yaml file from remote node to vars
  shell: sshpass -p admin scp -r root@192.168.56.101:/tmp/main.yaml /etc/ansible/Test/roles/vars/main.yaml
  when: inventory_hostname == "charan"

- name:Install Application as per the table
  apt: name={{ item.Application }} state=present
  when: inventory_hostname == {{ item.Username }} 
  with_items: user_app
/vars/main.yaml这将从远程计算机复制

---
user_app:
- {Username: '"ravi"' , Application: curl}
- {Username: '"charan"' , Application: git}

请看下面的图片。它可以满足你的需要。在apt任务中引用变量之前,您需要在任务中明确包含
/vars/main.yaml

您能给我们看一下您的剧本(特别是引发错误的任务)吗?我附上了错误消息的屏幕截图,请检查一下。我们真的需要看看你剧本中的相关部分,才能准确地看到你在做什么。光是堆栈跟踪是不够的。嗨,Bruce,我也这样做了,使用了include,但它还是第一次没有执行命令。当我第二次运行剧本时,变化正在发生。