Décrivez le problème
Utilisation de votre playbook avec sasl_protocol pour brouiller. Si vous définissez un mot de passe utilisateur en coffre-fort, vous avez une exception dans cette tâche :
fatal : [XXXXXXX] : ÉCHEC ! => {"msg": "Une exception non gérée s'est produite lors de la création du modèle '{{ kafka_broker_combined_properties | combine(kafka_broker_custom_properties) }}'. [....] ne peut concaténer que str (pas \"AnsibleVaultEncryptedUnicode\") à str"}
Je pense que le problème est soulevé par la fonction combine_properties car dans la configuration par défaut, le mot de passe est une chaîne. Donc, si le mot de passe est un encodage de coffre-fort, myabe le corrige avec 'toString() python method' :
def combine_properties(self, properties_dict):
# Loops over master properties dictionary and combines sub elements if enabled
final_dict = {}
for prop in properties_dict:
if properties_dict[prop].get('enabled'):
final_dict.update(properties_dict[prop].get('properties'))
return final_dict
Reproduire
Configuration Toutes Vars :
sasl_protocol: scram
sasl_scram_users:
admin:
principal: "admin"
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
32313537636131333038303532613231653233343565303831396530393061643031303432303632
6537306234393563343861643834336430353930643062370a663563376131653664653430363963
62303339313937646635663032326266383439623736623462373632313934643261303634663732
3331643634623337610a616365613231346630656564616265656231633238313932333437363461
65626165666531656463353562323165376135653631316435653337366164653063
client:
principal: "client"
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
35653666663833386164616630353966363231633234633561663464653931393835653830303630
3263373337396137653637383332656539373766346438370a353164383737306535646234363065
66643863353439663064346564333062373265653036646137306531353336323931653931363032
3231373831366531640a323161386538333966646635353462623263346234306631383635646237
34613764663736346362616562623061333438613461616162386532373266393166
solution de contournement
Une solution de contournement existe , vous devez convertir la chaîne encodée du coffre-fort :
sasl_protocol: scram
sasl_admin_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
32313537636131333038303532613231653233343565303831396530393061643031303432303632
6537306234393563343861643834336430353930643062370a663563376131653664653430363963
62303339313937646635663032326266383439623736623462373632313934643261303634663732
3331643634623337610a616365613231346630656564616265656231633238313932333437363461
65626165666531656463353562323165376135653631316435653337366164653063
sasl_client_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
35653666663833386164616630353966363231633234633561663464653931393835653830303630
3263373337396137653637383332656539373766346438370a353164383737306535646234363065
66643863353439663064346564333062373265653036646137306531353336323931653931363032
3231373831366531640a323161386538333966646635353462623263346234306631383635646237
34613764663736346362616562623061333438613461616162386532373266393166
sasl_scram_users:
admin:
principal: "admin"
password: "{{sasl_admin_password|string}}"
client:
principal: "client"
password: "{{sasl_client_password|string}}"
@LGouellec La meilleure pratique Ansible suivante pourrait-elle être une solution de contournement valable pour vous : https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#keep -vaulted-variables-safely-visible, ou est-ce sans importance pour le problème?
Salut @erikgb ,
Oui, c'est une solution de contournement valide.
Ne pourrait-on pas gérer AnsibleVaultEncryptedUnicode dans la fonction combine_properties ?
Oui, c'est une solution de contournement valide.
C'est bien! ??
Ne pourrait-on pas gérer AnsibleVaultEncryptedUnicode dans la fonction combine_properties ?
Oui, je pense que cela pourrait être corrigé. Veuillez soumettre un PR pour résoudre ce problème, et nous pourrons l'examiner. Ce bogue sera mis dans notre backlog et traité au mieux comme décrit ici . Ou utilisez Confluent Support si vous êtes un client Confluent.
Résolu dans PR #640