So legen Sie Passwörter/Geheimnisse im Ansible-Playbook offen

So legen Sie Passwörter/Geheimnisse im Ansible-Playbook offen

Ich habe ein einfaches Ansible-Playbook für

  1. Holen Sie sich eine Datenbankverbindungskonfiguration von einer RestAPI.
  2. Extrahieren Sie das Konfigurationsobjekt aus der Nutzlast.
  3. Verwenden des Konfigurations-JSON (als Anforderungstext), um eine PUT-Anforderung an eine andere RestAPI zu erstellen.

Im dritten Schritt stellte ich fest, dass die Kombination aus Benutzername und Passwort der Datenbank falsch ist. Später, als ich die Ausgaben ausdruckte, stellte ich fest, dass das Passwort durch eine Zeichenfolge namens „IN_NO_LOG_PARAMETER_ANGEGEBENER_WERT".

Nach einigem Googeln habe ich herausgefunden, dass es sich hierbei um ein Sicherheitsfeature von Ansible handelt. Leider habe ich keine Konfiguration oder ähnliches gefunden, um dieses Feature zu deaktivieren.Ist es möglich, diese Funktion zu deaktivieren? Oder gibt es eine andere Problemumgehung?

---
    - name: my-playbook
      gather_facts: no
      hosts: all
      vars_files:
        - secret
      tasks:
        - name: Fetch the config payload from the API
          uri: 
            url: "{{get_config}}"
            method: GET
            user: "{{username}}"
            password: "{{password}}"
            validate_certs: no
            return_content: yes
            status_code: 200
            body_format: json
          register: config
        - name: Extract the config object
          set_fact:  
            config_raw: "{{ config.json | json_query(jmesquery) }}"
          vars:
            jmesquery: '{{name}}.config'
        - name: print the config
          debug: 
            msg: "{{config_raw}}"
        - name: Creating object using config
          uri: 
            url: "{{create_ocject}}"
            method: PUT
            user: "{{username}}"
            password: "{{password}}"
            validate_certs: no
            body: "{{config_raw}}"
            body_format: json
            return_content: yes
            status_code: 200
            headers:
              Content-Type: "application/json"
          register: test_res
        - name: output value
          debug: 
            msg: "{{test_res.json}}"

Antwort1

Sie können no_log: Falsees einstellen ansible.cfg.

Als

Das Attribut „no_log“ hat jedoch keinen Einfluss auf die Debugausgabe. Seien Sie daher vorsichtig, wenn Sie Playbooks nicht in einer Produktionsumgebung debuggen.Ansible-Dokumentation

Die Geheimnisse sollten in der ausführlichen Ausgabe angezeigt werden. Fügen Sie sie einfach -vvvdem ansible-playbookBefehl hinzu.

verwandte Informationen