Ich versuche, die MAC-Adresse für den aktuellen Host zu erhalten, damit ich den Wert in einer Aufgabe verwenden kann. Selbst nachdem ich die Dokumente gelesen habe, kann ich nicht verstehen, wie ich das machen soll. Ich habe versucht, die Struktur herauszufinden, indem ich die Werte ausblutete. Das Playbook, das die Rolle aufruft, sammelt Fakten.Abrufen der MAC-Adresse von Ansible-Fakten in der Rolle
Dies ist, was die Aufgabe hat:
- name: Get the MAC address
debug: msg="{{ hostvars[inventory_hostname] }}"
Dies erzeugt die folgenden (abgeschnitten):
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"
},
Aber wenn ich versuche zu verweisen:
- name: Insert the mac address into the customer license
debug: msg="{{ hostvars[inventory_hostname][ansible_default_ipv4] }}"
ich das bekommen Fehler, der aufreizend die Daten hat, die ich suche:
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"}
Was mache ich hier falsch?
Was ist der Vorteil von diesem direkt anstelle von '{{ansible_default_ipv4.macaddress}}' direkt. Es funktioniert (ab 2.2) – Moshohayeb