Is this a bug or is there something wrong with my usage? Thank you.
config template: full
source: latest
os: rocky9
macos: 13.1
error:
TASK [minio : building minio params]
fatal: [10.10.10.10]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'minio_seq'. 'dict object' has no attribute 'minio_seq'\n\nThe error appears to be in '/home/vagrant/pigsty/roles/minio/tasks/main.yml': line 25, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: building minio params\n ^ here\n"}
minio task yaml
---
#--------------------------------------------------------------#
# Assert Minio Identity [minio-id]
#--------------------------------------------------------------#
- name: minio identity
tags: [ always, minio-id ]
block:
- name: assert minio identity
assert:
that:
- minio_cluster is defined and minio_cluster != ''
- minio_seq is defined and minio_seq|int >= 0
fail_msg: variable 'minio_cluster' & 'minio_seq' are required for minio playbook
- name: get minio cluster info
connection: local
set_fact:
minio_meta: "{{ hostvars|json_query(cluster_query) }}"
minio_nodename: "{{ minio_node|replace('${minio_cluster}', minio_cluster)|replace('${minio_seq}', minio_seq|string) }}"
minio_data_dirs: >-
{% set minio_multidriver = minio_data | regex_search('{(\d+)...(\d+)}') %}{% if minio_multidriver and minio_multidriver != '' %}{% set minio_driver_min = (minio_data | regex_findall('{(\d+)...(\d+)}'))[0][0]|int %}{% set minio_driver_max = (minio_data | regex_findall('{(\d+)...(\d+)}'))[0][1]|int %}{% for i in range(minio_driver_min, minio_driver_max+1) %}{% if not loop.first %},{% endif %}{{ minio_data | regex_replace('{(\d+)...(\d+)}', i|string) }}{% endfor %}{% else %}{{ minio_data }}{% endif %}
vars: { cluster_query: "[@.*][0][?minio_cluster=='{{ minio_cluster }}']" }
- name: building minio params
connection: local
set_fact:
minio_cluster_size={{ minio_meta | json_query("[].inventory_hostname") | unique | length }}
minio_cluster_members={{ minio_meta | json_query("[].inventory_hostname") | unique | sort }}
minio_seq_min={{ minio_meta | json_query('min([].minio_seq)') | int }}
minio_seq_max={{ minio_meta | json_query('max([].minio_seq)') | int }}
minio_seq_range={% raw %}{{% endraw %}{{ minio_meta | json_query('min([].minio_seq)') | int }}...{{ minio_meta | json_query('max([].minio_seq)') | int }}{% raw %}}{% endraw %}
minio_member="{% for host in minio_meta %}{% if not loop.first %},{% endif %}{{ host.inventory_hostname }} {{ minio_node|replace('${minio_cluster}', host.minio_cluster)|replace('${minio_seq}', host.minio_seq|string) }}{% endfor %}"
# {% if not loop.first %},{% endif %}{{ host.inventory_hostname }}
- name: calculate minio volumes
connection: local
set_fact:
minio_node_pattern: "{{ minio_node|replace('${minio_cluster}', minio_cluster)|replace('${minio_seq}',minio_seq_range) }}"
minio_volumes: "{% if minio_cluster_size|int > 1 %}https://{{ minio_node|replace('${minio_cluster}', minio_cluster)|replace('${minio_seq}',minio_seq_range) }}:{{ minio_port|default(9000) }}{% endif %}{{ minio_data }}"
- name: print minio identity
debug:
msg: "{{ minio_nodename }}: {{ minio_volumes }}"
#--------------------------------------------------------------#
# Create Minio OS user & Group [minio_os_user]
#--------------------------------------------------------------#
- name: create minio user group
tags: minio_os_user
block:
- name: create minio os group
group: name=minio state=present
- name: create minio os user
user: name={{ minio_user }} group=minio
#--------------------------------------------------------------#
# Install Minio [minio_install]
#--------------------------------------------------------------#
- name: install minio
tags: minio_install
package: name={{ item }} state=present
with_items: [ minio, mcli ]
#--------------------------------------------------------------#
# Purge Minio Directories [minio_clean]
#--------------------------------------------------------------#
- name: clean minio data dir
tags: minio_clean
when: minio_clean|bool
block:
- name: stop minio service
systemd: name=minio state=stopped enabled=no daemon_reload=yes
#- name: remove minio data dir
# file: path={{ item }} state=absent
# with_items: "{{ minio_data_dirs.split(',') }}"
#--------------------------------------------------------------#
# Create Minio Directories [minio_dir]
#--------------------------------------------------------------#
- name: create minio directories
tags: minio_dir
block:
- name: create minio data directories
file:
path: "{{ item }}"
state: directory
owner: "{{ minio_user }}"
group: minio
mode: 0770
with_items: "{{ minio_data_dirs.split(',') }}"
- name: create minio conf dir
file: path=/etc/minio state=directory owner={{ minio_user }} group=minio mode=0755
#--------------------------------------------------------------#
# Config Minio [minio_config]
#--------------------------------------------------------------#
- import_tasks: config.yml
tags: minio_config
vars: { minio_instance: "{{ minio_cluster }}-{{ minio_seq }}" }
#--------------------------------------------------------------#
# Launch Minio [minio_launch]
#--------------------------------------------------------------#
- name: launch minio server
tags: minio_launch
block:
- name: launch minio server service
systemd: name=minio state=restarted enabled=yes daemon_reload=yes
- name: wait for minio server online
wait_for: host=127.0.0.1 port={{ minio_port }} state=started timeout=10
#--------------------------------------------------------------#
# Register Minio [minio_register]
#--------------------------------------------------------------#
- name: register minio as prometheus target
tags: [ minio_register, register_prometheus ]
ignore_errors: true
delegate_to: '{{ item }}'
with_items: '{{ groups["infra"] }}'
copy:
dest: /etc/prometheus/targets/minio/{{ minio_cluster }}-{{ minio_seq }}.yml
owner: prometheus
content: |
# {{ minio_cluster }}-{{ minio_seq }} @ {{ inventory_hostname }}
- labels: { ip: {{ inventory_hostname }} , ins: {{ minio_cluster }}-{{ minio_seq }} , cls: {{ minio_cluster }} }
targets: [ {{ inventory_hostname }}:{{ minio_port }} ]
#--------------------------------------------------------------#
# Provision Minio [minio_provision]
#--------------------------------------------------------------#
- import_tasks: provision.yml
tags: minio_provision
...
Is this a bug or is there something wrong with my usage? Thank you. config template: full source: latest os: rocky9 macos: 13.1 error:
minio task yaml