包含具有指定变量的任务 (Ansible)
Including a task with specified variables (Ansible)
我刚开始学习ansible。我已经设置了一个测试存储库 here.
我正在尝试包含一个任务,并将消息作为变量传递给任务,该消息应该 'printed'。我的剧本 (site.yml) 的结构如下:
- name: default playbook
tasks:
- { include: tasks/timestamp.yml, themsg='starting tasks' }
而tasks/timestamp.yml
是:
---
- debug: msg="{{ themsg }} ' @ ' {{ ansible_date_time['time'] }}."
当我 运行 使用 ansible-playbook site.yml
时,我得到错误:
TASK: [debug msg="{{ themsg }} 'current time:' {{ ansible_date_time['time'] }}."] *** fatal: [localhost] => One or more undefined variables: 'themsg' is undefined
我一直在使用 official documentation 作为参考,看起来这应该可行。有什么建议吗?
您正在做一些稍微不寻常的事情(包括任务,而不是使用剧本中的角色)并且遇到了一些常见的语法错误。
您找到了正确的文档;它给出了包含任务文件的以下内容:
- include: wordpress.yml wp_user=timmy
- { include: wordpress.yml, wp_user: timmy, ssh_keys: [ 'keys/one.txt', 'keys/two.txt' ] }
很遗憾,您将这些组合在一起:
- { include: tasks/timestamp.yml, themsg='starting tasks' }
这是摆脱困境的方法。这些都可以工作:
- { include: tasks/timestamp.yml, themsg: 'starting tasks' }
- include: tasks/timestamp.yml themsg='starting tasks'
在第一个示例中,我将 =
更改为冒号。在第二个示例中,我删除了大括号并删除了逗号。
将 "task include" 升级为 "role include" 真的很容易。将 tasks/timestamp.yml
移动到 roles/timestamp/tasks/main.yml
,然后将其作为角色而不是任务包括在内:
roles:
- { role: timestamp, themsg: "starting tasks" }
你会因此获得一些理智 - 一些可移植性、先决条件和处理程序的挂钩等。
我刚开始学习ansible。我已经设置了一个测试存储库 here.
我正在尝试包含一个任务,并将消息作为变量传递给任务,该消息应该 'printed'。我的剧本 (site.yml) 的结构如下:
- name: default playbook
tasks:
- { include: tasks/timestamp.yml, themsg='starting tasks' }
而tasks/timestamp.yml
是:
---
- debug: msg="{{ themsg }} ' @ ' {{ ansible_date_time['time'] }}."
当我 运行 使用 ansible-playbook site.yml
时,我得到错误:
TASK: [debug msg="{{ themsg }} 'current time:' {{ ansible_date_time['time'] }}."] *** fatal: [localhost] => One or more undefined variables: 'themsg' is undefined
我一直在使用 official documentation 作为参考,看起来这应该可行。有什么建议吗?
您正在做一些稍微不寻常的事情(包括任务,而不是使用剧本中的角色)并且遇到了一些常见的语法错误。
您找到了正确的文档;它给出了包含任务文件的以下内容:
- include: wordpress.yml wp_user=timmy
- { include: wordpress.yml, wp_user: timmy, ssh_keys: [ 'keys/one.txt', 'keys/two.txt' ] }
很遗憾,您将这些组合在一起:
- { include: tasks/timestamp.yml, themsg='starting tasks' }
这是摆脱困境的方法。这些都可以工作:
- { include: tasks/timestamp.yml, themsg: 'starting tasks' }
- include: tasks/timestamp.yml themsg='starting tasks'
在第一个示例中,我将 =
更改为冒号。在第二个示例中,我删除了大括号并删除了逗号。
将 "task include" 升级为 "role include" 真的很容易。将 tasks/timestamp.yml
移动到 roles/timestamp/tasks/main.yml
,然后将其作为角色而不是任务包括在内:
roles:
- { role: timestamp, themsg: "starting tasks" }
你会因此获得一些理智 - 一些可移植性、先决条件和处理程序的挂钩等。