debugging Ansible拒绝使用debug打印变量,即使它明显存在

qmelpv7a  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(152)

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中存在的?
编辑:更新了错别字,忘记包括我做的子整型变量。

fae0ux8s

fae0ux8s1#

基于include任务的详细日志

ok: [10.200.2.12] => changed=false
  ansible_facts:
    settings:
      custint: ens224

看起来settings.yaml中的变量名称有拼写错误,并且缺少下划线。例如custintcust_int

zkure5ic

zkure5ic2#

我想明白了。我忘了包括我创建的一个变量,它被称为cust_sub_int

cust_int: 'ens224'
cust_sub_int: '{{ cust_int }}.{{ cust }}`

问题是cust_sub_int,连接是错误的,所以它使剧本失败,错误不清楚。我仍然不知道如何连接这两个,但我会为此创建一个新的职位。

相关问题