从远程计算机复制vars的main.yaml文件时,Roles vars部分中的Ansible playbook错误

时间:2015-10-08 16:46:15

标签: yaml jinja2 ansible ansible-playbook

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

图像角色将清楚地了解角色和子文件。 Roles

site.yaml

---
- name: Testing the Mini project
  hosts: all
  roles:
  - test

任务/ main.yaml

---
- 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}

1 个答案:

答案 0 :(得分:1)

看看include_vars task。它可能会做你需要的。在您引用变量的apt任务之前,您似乎需要在任务中明确地包含/vars/main.yaml