Я создаю сборник пьес Ansible, в котором я хочу получить последнюю версию программного обеспечения. Для этого я использовал фильтр сортировки в Ansible. Это, однако, становится немного сложнее при использовании номеров версий, которые являются более сложными и на самом деле не являются числами, например 0.2.1
, 0.10.1
.
Вот что я сейчас делаю:
- name: Set version to compare
set_fact:
versions:
- "0.1.0"
- "0.1.5"
- "0.11.11"
- "0.9.11"
- "0.9.3"
- "0.10.2"
- "0.6.1"
- "0.6.0"
- "0.11.0"
- "0.6.5"
- name: Sorted list
debug:
msg: "{{ versions | sort }}"
- name: Show the latest element
debug:
msg: "{{ versions | sort | last }}"
Указанная выше книга воспроизведения работает до тех пор, пока номера версий остаются под номером 10 (например, 0.9.3, но не 0.10.2).
Показать проблему:
TASK [Set version to compare] ***************************************************************************************************************
ok: [localhost]
TASK [Sorted list] **************************************************************************************************************************
ok: [localhost] => {
"msg": [
"0.1.0",
"0.1.5",
"0.10.2",
"0.11.0",
"0.11.11",
"0.6.0",
"0.6.1",
"0.6.5",
"0.9.11",
"0.9.3"
]
}
TASK [Show the latest element] **************************************************************************************************************
ok: [localhost] => {
"msg": "0.9.3"
}
В данном примере значение желаемого значения равно 0.11.11
Кто-нибудь знает хороший способ сортировки сложных номеров версий в Ansible?
Любая помощь будет оценена. Спасибо.