Ich schreibe verschiedene Playbooks für die Bereitstellung von Benutzern, Gruppen, Richtlinien usw. in AWS.Schlüsselwert von registrierter Variable in ansible abrufen
Im Moment versuche ich eine Aufgabe zu schreiben, die alle Zugriffsschlüssel von einem bestimmten AWS IAM-Konto entfernt. Um dies ordnungsgemäß mit dem iam-Modul in ansible zu tun, müssen Sie den AWS-Zugriffsschlüssel angeben, den Sie deaktivieren möchten.
Dieses Skript erstellt auch einen Benutzer vor der Hand (das Entfernen von Zugriffsschlüsseln soll sicherstellen, dass, wenn der Benutzer bereits erstellt wurde, keine vorherigen Zugriffsschlüssel vorhanden sind).
Der Ausgang der Erstellung eines Benutzers wird in eine Variable registriert wie
so- name: Create new user and add to IAM group for console
vars:
use_key: "{{ enable_access_keys }}"
iam:
iam_type: user
name: "{{ item }}"
state: present
aws_access_key: "{{ account_vars.aws_access_key }}"
aws_secret_key: "{{ account_vars.aws_secret_key }}"
password: "{{ iam_password }}"
update_password: on_create
with_items:
- "{{ iam_user_name_list }}"
when: not use_key
register: console_user
Der Ausgang des console_user var ist:
ok: [127.0.0.1] => {
"changed": false,
"msg": {
"changed": false,
"msg": "All items completed",
"results": [
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": false,
"groups": null,
"invocation": {
"module_args": {
"access_key_ids": null,
"access_key_state": null,
"aws_access_key": "removed",
"aws_secret_key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"ec2_url": null,
"groups": null,
"iam_type": "user",
"key_count": 1,
"name": "other-guy",
"new_name": null,
"new_path": null,
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"path": "/",
"profile": null,
"region": null,
"security_token": null,
"state": "present",
"trust_policy": null,
"trust_policy_filepath": null,
"update_password": "on_create",
"validate_certs": true
}
},
"item": "other-guy",
"keys": {
"Access key is here": "Active"
},
"user_name": "other-guy"
}
]
}
}
Meine Frage ist, wie kann ich den Zugriffsschlüssel erhalten das ist unter dem "Schlüssel" Wörterbuch zur Verfügung gestellt? Da das, wonach ich suche, der Schlüssel ist, nicht der Wert, bin ich mir nicht sicher, wie ich diesen Zugriffsschlüssel erhalten würde, damit ich ihn in der nächsten Aufgabe verwenden kann, um zu sagen, dass ich ihn entfernen möchte.
Vielen Dank im Voraus für jede Hilfe.
Vielen Dank! Genau das, was ich gesucht habe. Aus irgendeinem Grund mag Ansible die .keys nicht direkt auf der Variablen, weil es so zu denken scheint, als wollten wir keys() aufrufen (console_user.results [0] .keys gibt nur "builtin_function_or_method" -Objekt anstelle der KV-Paare im Dictionary zurück)). Ich musste am Ende die json Abfrage verwenden, aber das hat den Trick gemacht. – astrade