Я работаю над книгой, чтобы я мог автоматизировать добавление политик рейнджера для hdfs из файла json. Итак, я пытаюсь получить файл json с политиками RHD-файлов в ansible playbook, вот файл json:
{
"ranger_policies": [
{
"hdfs_policie": {
"policie": {
"name": "/lili R g_lab_test_pb1",
"path": "/lili",
"permissions": {
"groups": {
"name": "g_lab_test_pb1",
"accesses": [
"read"
]
}
}
}
}
},
{
"hdfs_policie": {
"policie": {
"name": "/lala RX g_lab_test_pb1",
"path": "lala",
"permissions": {
"groups": {
"name": "g_lab_test_pb1",
"accesses": [
"read",
"execute"
]
}
}
}
}
}
]
}
И это мой playbook файл:
- name: "ranger policie hdfs"
vars:
jsonVar: "{{ lookup('file', 'users.json') | from_json }}"
ranger_hdfs_policies:
state: present
admin_url: "https://{{RANGER_ADMIN_SERVER}}:6182"
admin_username: "admin"
admin_password: "{{RANGER_ADMIN_PASSWORD}}"
validate_certs: no
service_name: "{{CLUSTER_NAME}}_hadoop"
policies:
- name: "{{ list.ranger_policies.hdfs_policie.policie.name }}"
paths:
- "{{ list.ranger_policies.hdfs_policie.policie.path }}"
permissions:
- groups:
- "{{ list.ranger_policies.hdfs_policie.policie.permissions.groups.name }}"
accesses:
- "{{ list.ranger_policies.hdfs_policie.policie.permissions.groups.accesses }}"
delegate_admin: true
- users:
- "admin"
accesses:
- read
- write
- execute
delegate_admin: true
loop: "{{ jsonVar }}"
loop_control:
loop_var: list
tags:
- ranger_policies
к сожалению, я получаю эту ошибку, и я искал везде без какого-либо успеха:
фатально: [bphi4-ves001]: FAILED! => {"msg": "Неверные данные переданы в 'l oop', требуется список, вместо этого он получил: {'ranger_policies': [{'hdfs_poli cie': {'poli cie ': {' name ':' / lili R g_lab_test_pb1 ',' path ':' / lili ',' permissions ': {' groups ': {' name ':' g_lab_test_pb1 ',' accessances ': [ 'read']}}}}}, {'hdfs_poli cie': {'poli cie': {'name': '/ lala RX g_lab_test_pb1', 'path': 'lala ',' permissions ': {' groups ': {' name ':' g_lab_test_pb1 ',' acases ': [' read ',' execute ']}}}}}]}. Подсказка: если вы передали список / dict только одного элемента, попробуйте добавить wantlist = True к вашему поисковому вызову или используйте q / query вместо lookup. " }
Я также попытался добавить wantlist = True к своему поиску, затем я получил другую ошибку, которая говорит:
fatal: [bphi4-ves001]: FAILED! => {"msg": "Произошло необработанное исключение во время шаблонов '{{lookup (' file ',' users. json ', wantlist = True) | from_ json}}'. Ошибка, исходное сообщение : Произошла непредвиденная ошибка типа шаблона ({{lookup ('file', 'users. json', wantlist = True) | from_ json}}): объект JSON должен быть str, байтами или байтовым массивом, не "список" "}