繁体   English   中英

如何使用动态变量查询ansible字典

[英]How to query ansible dictionary with dynamic variables

如何使用动态变量查询 Ansible 字典? 我想用ansible从dell的idrac读取序列号,然后根据序列号设置地址。 我的源代码:

---
- hosts: all
  name: set iDRAC Ipaddr
  gather_facts: False
  vars:
    svctag_test: xxx30S2
    network_configs:
     xxx30S2:
       ip: 192.168.192.86

  tasks:

    - name: get dell server service-tag
      raw: racadm getsvctag
      register: svctag

    - name: show svctag
      debug: 
      msg="{{ svctag }}"      
     
    - name: show network 
      debug: 
        msg="{{ network_configs[svctag_test].ip }}"
    - name: set idrac ip svctag to vars
      set_fact:
        SVCTAG: "{{ svctag.stdout_lines }}" 
    - name: show SVCTAG
      debug: 
        msg="{{ SVCTAG }}"   
         
    - name: show network 2
      debug: 
         msg="{{ network_configs[SVCTAG].ip }}"
         #msg="{{ network_configs[SVCTAG] }}"   
         #msg="{{ hostvars[inventory_hostname][network_configs][SVCTAG] }}"
    
      #msg="{{ lookup('vars', network_configs )[SVCTAG]}}" 
     - name: set dell server idrac ip form service-tag
       raw: racadm config -g cfgLanNetworking -o cfgNicIpAddress "{{ network_configs[SVCTAG].ip }}"      
      
- name: set idrac ip svctag to vars
  set_fact:
    SVCTAG: "{{ svctag.stdout_lines }}"

svctag.stdout_lines 是一个列表,而不是一个字符串。 尝试:

- name: set idrac ip svctag to vars
  set_fact:
    SVCTAG: "{{ svctag.stdout_lines[0] }}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM