Назад | Перейти на главную страницу

Ansible цикл с json и with_items для массива?

Я пытаюсь настроить некоторые роли elasticsearch, используя api с ansible, и когда я запускаю свой код, я, кажется, получаю это ниже, а не ожидаемый

Неверные "индексы": [{"имена": ["докер-, logstash-, .kibana "]," привилегии ": [" читать view_index_metadata "],

ожидаемый результат, когда я просматриваю роль

    "indices" : [
  {
    "names" : [
      "docker*",
      "springxd-*",
      "logstash-*"
    ],

Я использую доступный цикл

  - name: Setup Special kibana Roles for Spaces which are later mapped to LDAP
uri:
  url: "https://{{ ansible_fqdn }}:9200/_xpack/security/role/{{ item.role_name }}"
  method: PUT
  user: '{{ vault_elastic_user }}'
  password: '{{ vault_elastic_pass }}'
  body: '{ "indices": [ { "names": [ "{{ item.index_names }}" ], "privileges": [ "{{ item.privileges }}" ], "field_security" : { "grant" : [ "*" ] } } ] }'
  body_format: json
  validate_certs: no
  headers:
    Content-Type: "application/json"
with_items:
  - { role_name: app_components_role, index_names: 'docker-*, logstash-*, .kibana, springxd-*', privileges: 'read, view_index_metadata' }

Есть идеи, как добиться правильного результата?

заранее спасибо

Если ваше значение здесь, в вашем 'index_names' нет кавычек. Ansible не собирается волшебным образом добавлять их, по крайней мере, когда вы просто используете index_names в качестве строки.

with_items:
  - { role_name: app_components_role, index_names: 'docker-*, logstash-*, .kibana, springxd-*', privileges: 'read, view_index_metadata' }

Может быть, отрегулируйте свой предмет, чтобы он выглядел так?

with_items:
  - { role_name: app_components_role, index_names: '"docker-*", "logstash-*", ".kibana", "springxd-*"', privileges: '"read", "view_index_metadata"' }

Или, может быть, это, если вы тоже хотите сделать его более читабельным.

with_items:
  - role_name: app_components_role
    index_names: '"docker-*", "logstash-*", ".kibana", "springxd-*"'
    privileges: '"read", "view_index_metadata"'

Или, если вы хотите использовать еще лучшую читаемость, возможно, настройте что-то подобное.

uri:
  ...
  body: |
    { "indices": [ 
      { "names": {{ item.index_names | to_json }},
        "privileges": {{ item.privileges | to_json }}, 
        "field_security" : { "grant" : [ "*" ] }
      } ]
    }
  ...
with_items:
  - role_name: app_components_role
    index_names:
    - docker-*
    - logstash-*
    - .kibana
    - springxd-*
    privileges:
    - read
    - view_index_metadata