在Ansible中进行案例陈述的最佳方式是什么?
我正在尝试将脚本转换为Ansible以实现自动化。我一直在理解循环或“with_items”用例 原始bash脚本:在Ansible中进行案例陈述的最佳方式是什么?,ansible,yaml,Ansible,Yaml,我正在尝试将脚本转换为Ansible以实现自动化。我一直在理解循环或“with_items”用例 原始bash脚本: for i in apple banana orange; do case $i in apple) export var="var.1:apple1,var.2:apple2" ;; banana) export var="var.1:banana1,var.2:banana2,var.3:banana3" ;; orange) ex
for i in apple banana orange; do
case $i in
apple) export var="var.1:apple1,var.2:apple2" ;;
banana) export var="var.1:banana1,var.2:banana2,var.3:banana3" ;;
orange) export var="var.1:orange1" ;;
esac
echo "$i"
到目前为止,我所尝试的:
VARS file:
fruits:
- name: apple
var: "{{ item }}"
with_items:
- apple1
- apple2
- name: banana
var: "{{ item }}"
with_items:
- banana1
- banana2
- banana3
- name: orange
var: "{{ item }}"
with_items:
- orange1
产出:
The output from include_vars task:
{
"ansible_included_var_files": [
"/etc/ansible/roles/openssl/tasks/vars.yml"
],
"ansible_facts": {
"fruits": [
{
"var": "{{ item }}",
"name": "apple",
"with_items": [
"apple1",
"apple2"
]
},
{
"var": "{{ item }}",
"name": "banana",
"with_items": [
"banana1",
"banana2",
"banana3"
]
},
{
"var": "{{ item }}",
"name": "orange",
"with_items": [
"orange1"
]
}
]
},
"_ansible_no_log": false,
"changed": false
}
调试
我知道Yaml是空间敏感的,格式化很重要。我是写剧本的新手,任何指点都会有帮助
给出(节略)
可以参考字典中的条目。比如说
- debug:
var: fruits.banana
- debug:
var: fruits.apple.1
给予
debug task failed
{
"msg": "The task includes an option with an undefined variable. The error was: 'item' is undefined\n\nThe error appears to be in '/etc/ansible/roles/openssl/tasks/main.yml': line 262, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- debug:\n ^ here\n",
"_ansible_no_log": false
}
fruits:
apple:
- apple1
- apple2
banana:
- banana1
- banana2
- banana3
orange:
- orange1
- hosts: localhost
tasks:
- include_vars:
vars.yml
- debug:
msg: "{{ item.key }} {{ item.value }}"
loop: "{{ fruits|dict2items }}"
"msg": "orange [u'orange1']"
"msg": "apple [u'apple1', u'apple2']"
"msg": "banana [u'banana1', u'banana2', u'banana3']"
- debug:
var: fruits.banana
- debug:
var: fruits.apple.1
"fruits.banana": [
"banana1",
"banana2",
"banana3"
]
"fruits.apple.1": "apple2"