2016-10-24 6 views
0

現在のホストのMACアドレスを取得しようとしています。その値をタスクで使用できるようにしています。ドキュメントを読んだ後でさえ、私はこれを行う方法について私の頭を包んでいるようです。私は値をダンプして構造を理解しようとしています。役割を呼んでいる作戦は事実を集める。ロール内の可能なファクトからMACアドレスを取得する

これは、タスクが持っているものです。

- name: Get the MAC address 
    debug: msg="{{ hostvars[inventory_hostname] }}" 

これは、次の(切り捨て)を生成します。

ok: [steve.dev.v4-1-0] => { 
    "msg": { 
     "ansible_all_ipv4_addresses": [ 
      "10.1.3.144" 
     ], 
     "ansible_all_ipv6_addresses": [ 
      "fe80::250:56ff:fe8b:1051" 
     ], 
     "ansible_architecture": "x86_64", 
     "ansible_bios_date": "09/21/2015", 
     "ansible_bios_version": "6.00", 
     "ansible_check_mode": false, 
     "ansible_cmdline": { 
      "KEYBOARDTYPE": "pc", 
      "KEYTABLE": "us", 
      "LANG": "en_US.UTF-8", 
      "SYSFONT": "latarcyrheb-sun16", 
      "crashkernel": "[email protected]", 
      "quiet": true, 
      "rd_NO_DM": true, 
      "rd_NO_LUKS": true, 
      "rd_NO_LVM": true, 
      "rd_NO_MD": true, 
      "rhgb": true, 
      "ro": true, 
      "root": "UUID=408345fe-146b-4dec-b62c-31fe6d60b376" 
     }, 
     "ansible_date_time": { 
      "date": "2016-10-24", 
      "day": "24", 
      "epoch": "1477329455", 
      "hour": "10", 
      "iso8601": "2016-10-24T17:17:35Z", 
      "iso8601_basic": "20161024T101735509516", 
      "iso8601_basic_short": "20161024T101735", 
      "iso8601_micro": "2016-10-24T17:17:35.509824Z", 
      "minute": "17", 
      "month": "10", 
      "second": "35", 
      "time": "10:17:35", 
      "tz": "MST", 
      "tz_offset": "-0700", 
      "weekday": "Monday", 
      "weekday_number": "1", 
      "weeknumber": "43", 
      "year": "2016" 
     }, 
     "ansible_default_ipv4": { 
      "address": "10.1.3.144", 
      "alias": "eth1", 
      "broadcast": "10.1.3.255", 
      "gateway": "10.1.0.10", 
      "interface": "eth1", 
      "macaddress": "00:50:56:8b:10:51", 
      "mtu": 1500, 
      "netmask": "255.255.252.0", 
      "network": "10.1.0.0", 
      "type": "ether" 
     }, 

しかし、私は、参照してみてください:

- name: Insert the mac address into the customer license 
    debug: msg="{{ hostvars[inventory_hostname][ansible_default_ipv4] }}" 

私はこれを取得エラーは、私が探しているデータが怒っている:

fatal: [steve.dev.v4-1-0]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: dict object has no element {u'macaddress': u'00:50:56:8b:10:51', u'network': u'10.1.0.0', u'mtu': 1500, u'broadcast': u'10.1.3.255', u'alias': u'eth1', u'netmask': u'255.255.252.0', u'address': u'10.1.3.144', u'interface': u'eth1', u'type': u'ether', u'gateway': u'10.1.0.10'}\n\nThe error appears to have been in '/opt/deployment_data/playbooks/roles/eti_license/tasks/main.yml': line 13, 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- name: Insert the mac address into the customer license\n^here\n"} 

私はここで間違っていますか?

答えて

2

あなたの問題は、変数を渡している次のとおりです。

{{ hostvars[inventory_hostname][ansible_default_ipv4] }} 

あなたが代わりに行う必要があります。

{{ hostvars[inventory_hostname]["ansible_default_ipv4"] }} 

それとも、単に行うことができます:

を3210

または:

{{ ansible_default_ipv4.field }} 

理由は、辞書を使用しているとき、あなたはフィールド名を渡す必要があるということです。文字列(引用符)を渡すと、それは取得したいフィールドになります。文字列(引用符なし)を渡さないと、取得したいフィールドを含む変数になります。

関連する問題