Ansible不会打印我的变量,即使它显然存在于调试中,我正在调用正确的设置文件以及。
以下是我的战术手册:
############### Cust VM ###############
- name: Perform changes on customer name space vm
hosts: custvm
gather_facts: no
roles:
- { role: cust_vm_create }
这是角色
- name: Include vars
include_vars:
file: ../../../settings.yaml
name: settings
- debug:
var: settings.cust_int
以下是设置文件
---
cust_int: 'ens224'
cust_sub_int: 'ens224.{{ cust_int }}'
这是清单
[custvm]
10.10.10.10
下面是group_var文件
cust: "0"
ansible_user: 'username'
ansbile_ssh_pass: 'vaultpasswordused'
ansbile_become_pass: 'vaultpasswordused'
下面是我运行的命令:
ansible-playbook -i ./src/ansible/inventory.ini -e cust=20 ./src/ansible/customers_create.yaml --ask-vault-pass -T 40 -vvv --limit custvm
这是输出
ansible-playbook 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/me/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0]
Using /etc/ansible/ansible.cfg as config file
Vault password:
host_list declined parsing /home/me/ansible/inventory.ini as it did not pass its verify_file() method
script declined parsing /home/me/src/ansible/inventory.ini as it did not pass its verify_file() method
auto declined parsing /home/me/src/ansible/inventory.ini as it did not pass its verify_file() method
yaml declined parsing /home/me/src/ansible/inventory.ini as it did not pass its verify_file() method
Parsed /home/me/src/ansible/inventory.ini inventory source with ini plugin
PLAYBOOK: customers_create.yaml ****************************************************************************************
2 plays in ./src/ansible/customers_create.yaml
PLAY [Perform changes on customer name space vm] ***********************************************************************
META: ran handlers
TASK [cust_vm_create : Include vars] ***********************************************************************************
task path: /home/me/src/ansible/roles/cust_vm_create/tasks/main.yaml:1
ok: [10.10.10.10] => changed=false
ansible_facts:
settings:
cust_int: ens224
ansible_included_var_files:
- /home/me/src/ansible/roles/cust_vm_create/tasks/../../../settings.yaml
TASK [cust_vm_create : debug] ******************************************************************************************
task path: /home/me/src/ansible/roles/cust_vm_create/tasks/main.yaml:6
ok: [10.10.10.10] =>
settings.cust_int: 'VARIABLE IS NOT DEFINED!: ''cust_int'' is undefined'
META: ran handlers
META: ran handlers
PLAY [Perform changes on customer edge router] *************************************************************************
skipping: no hosts matched
PLAY RECAP *************************************************************************************************************
10.10.10.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
我也尝试了所有的调试语法:
- debug:
msg: {{ settings.cust_int }}
- debug:
var: cust_int
- debug:
msg: {{ settings.cust_int }}
- debug:
msg: "{{ settings.cust_int }}"
- debug: msg="{{ settings.cust_int }}"
- debug: msg="{{ cust_int }}"
为什么不管我怎么尝试,ansible都不打印变量,尽管它显然是从debug中存在的?
编辑:更新了错别字,忘记包括我做的子整型变量。
2条答案
按热度按时间fae0ux8s1#
基于include任务的详细日志
看起来
settings.yaml
中的变量名称有拼写错误,并且缺少下划线。例如custint
与cust_int
。zkure5ic2#
我想明白了。我忘了包括我创建的一个变量,它被称为
cust_sub_int
问题是
cust_sub_int
,连接是错误的,所以它使剧本失败,错误不清楚。我仍然不知道如何连接这两个,但我会为此创建一个新的职位。