【问题标题】:Ansible playbook error in Roles vars section while copying the main.yaml file of vars from a remote machine从远程计算机复制 vars 的 main.yaml 文件时,角色 vars 部分中的 Ansible playbook 错误
【发布时间】:2015-10-08 16:46:15
【问题描述】:

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

图像角色将提供有关角色和子文件的清晰概念。 Roles

site.yaml

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

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

【问题讨论】:

  • 能否请您向我们展示您的剧本(尤其是引发错误的任务)
  • 我附上了错误信息的截图,请检查。
  • 我们确实需要查看您的剧本的相关部分,以准确了解您在做什么。仅堆栈跟踪是不够的。

标签: yaml jinja2 ansible ansible-playbook


【解决方案1】:

看看include_vars task。它可能会满足您的需求。看起来您需要在引用变量的 apt 任务之前明确地将 /vars/main.yaml 包含在任务中。

【讨论】:

  • 嗨布鲁斯,我也这样做了,使用包含,仍然是第一次它没有执行命令。当我第二次运行剧本时,变化正在发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
相关资源
最近更新 更多