Wpis z mikrobloga

Zadam pytanie jeszcze raz bo wcześniej pytałem tylko pod #linux

Wymyśliłem sobie, że żeby ogarnąć lepiej ansible będę rozwiązywał wymyślone przez siebie problemy, które rozwiązywałem w bashu lub w pythonie.

Trafiłem na coś co nie do końca wiem jak ogarnąć. Mógłbym prosić o jakieś naprowadzenie? Chciałbym się dowiedzieć czy w ansible da się ogarnąć jakoś podejmowanie decyzji na podstawie kilku czynników?

Trochę nie wiem czy dobrze zadałem pytanie, więc opiszę uproszczoną wersję problemu.

Oto skrótowo jaki mam problem:

Mam dane wejściowe:
obiekty:
obiekt1:
cechaA: 4
cechaB: 100
cechaC:
- name: t1d1
size: 10
- name: t2d1
size: 100
obiekt2:
cechaA: 2
cechaB: 20
cechaC:
- name: t1d1
size: 50
- name: t1d2
size: 20
- name: t2d1
size: 200
obiekt3:
cechaA: 4
cechaB: 100
cechaC:
- name: t2d1
size: 100

oraz:
test:
A: 2
B: 20
C:
- name: t1
size: 10
- name: t1
size: 15
- name: t2
size: 20

Pastebin:
https://termbin.com/ca7b

Chciałbym dla "test" dobrać taki obiekt (najlepszy) z grupy "obiekty", żeby spełnić poniższe warunki:
* A <= cechaA
* B * 3 < cechaB
* Obiekt będzie miał największą cechaA ze wszystkich obiektow
* Obiekt będzie miał największą cechaB ze wszystkich obiektow
* suma wszystkich "size" * 2 w "C" gdzie name: t1 <= jeden z elementów t1dX w "cechaC"
* suma wszystkich "size" * 2 w "C" gdzie name: t1 <= jeden z elementów t2dX w "cechaC"
* Żeby wszystko działało dynamicznie tzn na wejściu może się pojawić nawet 100 "obiektów" z różnymi cechami.

Odnoszę wrażenie, że ansbile jest świetny do zbierania danych ale okropny do ich przetwarzania.

#ansible
  • 7
@Kryspin013: ansible jest do automatyzacji w pierwszej kolejności, masz ify, możesz porównywać i robić warunki ale takie zabawy to już podchodzi pod sadomaso ;) użyj czegoś co się nadaje do przetwarzania danych
@Kryspin013: robiłem coś takiego w ansible, schema była jeszcze bardziej zakręcona, bo liczyła z 10k linii. Tak czy siak kończy się stadem ifów lub jinji. Pytanie jest z gatunku: dlaczego chcesz to zrobić za pomocą ansible? Czy ten "processing" nie można zdelegować wcześniej do jakiegoś skryptu, który oceni i np, wygeneruje np. właściwy inventory? Na ten scenariusz masz tu przykład u mnie: https://devopsiarz.pl/kurs-ansible/deploy-apache-cassandra-klaster-w-docker-za-pomoca-ansible/#pseudo-dynamic-inventory-create-ansible-inventory-py
Pytanie jest z gatunku: dlaczego chcesz to zrobić za pomocą ansible?


@devopsiarz: Bo chcę żeby to siedziało na awx. Skrypt przed ansiblem odpada bo awx jest zbyt upośledzony na takie rzeczy. Z inventory to nie ma nic wspólnego - ja przetwarzam dane dla dalszej części playbooka a nie wybieram hosta np na którym mam uruchomić playbook.

ansible jest do automatyzacji w pierwszej kolejności, masz ify, możesz porównywać i robić warunki ale