这是我们必须调试的简单vars文件
<!DOCTYPE html>
<html>
<body>
<h2>Please choose a seat to book</h2>
<form action="/action_page.php" method="post">
<input type="checkbox" name="vehicle" id="A1" value="$100">$100<br>
<input type="checkbox" name="vehicle" id="A2" value="$65"> $65<br>
<input type="checkbox" name="vehicle" id="A3" value="$55"> $55<br>
<input type="checkbox" name="vehicle" id="A4" value="$50"> $50<br>
<p id="demo">
Selected Seat(s)
<br>
<br>
Total: USD <input type="submit" value="Reserve Now">
</form>
</p>
<script>
document.getElementById("A1").addEventListener("click", displayCheck);
function displayCheck() {
document.getElementById("demo").innerHTML = ;
}
</script>
</body>
</html>
./roles/test/vars/{{ ansible_distribution|lower }}/apt-packages.yml
这是一个简单的调试任务
packages:
required:
- htop
# - aptitude
package:
htop:
allow_unauthenticated: no
autoclean: no
autoremove: no
cache_valid_time: 0
# default_release:
force: no
force_apt_get: no
install_recommends: yes
only_upgrade: no
purge: no
state: latest
update_cache: yes
upgrade: no
./roles/test/tasks/main.yml
- name: "Register variable"
include_vars:
#dir: vars/ubuntu
file: "vars/{{ ansible_distribution|lower }}/apt-packages.yml"
name: apt_install
- name: "This a test"
apt:
name: "{{item}}"
cache_valid_time: "{{ apt_install.package[item].cache_valid_time }}"
state: "{{ apt_install.package[item].state }}"
update_cache: "{{ apt_install.package[item].update_cache }}"
with_items: "{{ apt_install.packages.required }}"
./roles/test-playbook.yml
使用下面的答案stackoverflow.com/questions/29276198,我们试图遍历项目并获取与项目相关的值。
任务在各个项目中循环良好,但是无法使用- name: "playbook test"
hosts: localhost
roles:
- role: test
become: true
become_user: root
become_method: sudo
语法或我们测试过的任何其他语法来检索相关变量。
我们总是有相同的错误
致命:[localhost]:失败! => { “ msg”:“该任务包含一个带有未定义变量的选项。错误是:dict对象没有元素[u'htop']
但是直接调用变量有效
[item]
获取变量的当前循环值并在另一个变量内使用它来检索相关值...(在同一任务内)的正确语法是什么?
到目前为止,我们一直在无止境地转转!
亲切问候
答案 0 :(得分:0)
使用loop / loop_control
代替with_items
可以完全正常工作
- name: "This a test"
apt:
name: "{{item}}"
cache_valid_time: "{{ apt_install.package[item].cache_valid_time }}"
state: "{{ apt_install.package[item].state }}"
update_cache: "{{ apt_install.package[item].update_cache }}"
loop: "{{ apt_install.packages.required|flatten(levels=1) }}"
loop_control:
index_var: index
因此,我们可以为每个软件包和每个发行版定义不同的设置。 现在,我也可以将每个包的设置导出到不同的var文件中。
学习很困难:)