среда, 10 декабря 2014 г.

Апгрейд debian до testing с помощью ansible

К сожалению, идеального софта не бывает. Менеджер пакетов APT — не исключение.

Наткнулся на то, что при обновлении с debian 7.5  и 7.7 до сегодняшнего среза testing apt-get full-upgrade не справляется то с некоторыми циклами зависимостей, то с отдельными пакетами, то почему то с man-db и падает в процессе.



В некоторых, особо запущенных случаях, требуется затем трижды запускать цикл apt-get install -f , и затем опять full-upgrade.

Печально, но большой трагедии нет. Хоть один раз запускать хоть три. Главное что?
Главное что бы работала машина а не человек.

Для этого в ansible у нас есть ignore-errors.

Ляпаем  вот такой вот workaround в процессе:
- name: update                
  apt: update_cache=yes
- name: upgrade               
  apt: upgrade=full           
  ignore_errors: yes          
- name: install -f            
  command: apt-get -y install -f 
  ignore_errors: yes          
- name: upgrade second try    
  apt: upgrade=full           
  ignore_errors: yes          
- name: install -f second try 
  command: apt-get -y install -f 
  ignore_errors: yes          
- name: upgrade third try     
  apt: upgrade=full   
И оно теперь отлично обновляется.
В случае же, если срез testing изменится. и ошибка пропадет - мы ничего не потеряли.

Второй и последующий запуски просто не меняют состояния.

Целиком playbook на github