Всем привет!
Писал писал и написал скрипт для удаление устаревших модулей puppet
Сам скрипт вот тут https://github.com/patsevanton/delete-old-puppet-config/blob/master/SOURCES/d...
Но есть одна загвоздка
Puppet модули - а это обычные папки - могут быть однокорренными
Если Кратко, то задача сводится к следующему:
Допустим есть 2 модуля (4 папки по 2 версии)
супер_пупер_service_report__v2_3_23_6
супер_пупер_service_report__v2_3_23_7
и
супер_супер_service__v1_0_46
супер_супер_service__v1_0_47
Из-за того что эти директории однокорренные, то происходит некорректное удаление не того модуля (не той директории)
Необходимо удалить старую версию модуля.
Вот пример
echo "./service_report__v1_0_46" | sed s/"service"__v//g | cut -d "/" -f 2
service_report__v1_0_46
echo "./service_report__v1_0_46" | sed s/"service_report"__v//g | cut -d "/" -f 2
1_0_46
Вот примерный отчет по работе скрипта там в части где идет работа с однокоренными модулями (папками)
module_name: service
./service_report__latest
./service_report__v1_0_46
last_module: service.report..v1.0.46
1-2
last_module:
service.report..v1.0.46
current_module:
service.report..v1.0.46
./service__v1_0_61
1-1
last_module:
service.report..v1.0.46
current_module:
1.0.61
previous_last_module:
service.report..v1.0.46
1-1-1
last_module:
service.report..v1.0.46
current_module:
1.0.61
previous_last_module:
1.0.61
./service__latest
./service__alternative
1-2
last_module:
service..alternative
current_module:
service..alternative
----------------------------------
./service_report__latest
./service_report__v1_0_46
2-1
last_module:
service..alternative
current_module:
service.report..v1.0.46
previous_last_module:
1.0.61
2-1-2
last_module:
service..alternative
current_module:
service.report..v1.0.46
previous_last_module:
service.report..v1.0.46
./service__v1_0_61
2-1
last_module:
service..alternative
current_module:
1.0.61
previous_last_module:
service.report..v1.0.46
2-1-3
last_module:
service..alternative
current_module:
1.0.61
previous_last_module:
service.report..v1.0.46
Подготовка к удалению
Разрешение зависимостей
--> Проверка сценария
---> Package service.puppet-config.noarch 0:1.0.61-1 will be для удаления
--> Проверка зависимостей окончена
Либо можно проще спросить: как разграничить работу с однокорреными директориями(удаление, поиск)?