Неделю назад я посмотрел на Обновление к композитору 2 на пару машин. Процесс не так просто, как я надеялся, или как то, что было задокументировано. После этого я беспокоился об обновлении его для моей неспособной конфигурации. В конце конструкции, если что-то не совсем работает, я теряю способность развернуть приложение в соответствующие среды.
Моя неблагоприятная роль перед композитором Версия 2 была следующей:
--- - name: Check if composer exists stat: path: /usr/local/bin/composer register: composer_file - name: Download Composer get_url: url: https://getcomposer.org/installer dest: /root/composer-setup.php when: composer_file.stat.isreg is not defined or not composer_file.stat.isreg - name: Add composer command: php /root/composer-setup.php --install-dir=/usr/local/bin --filename=composer when: composer_file.stat.isreg is not defined or not composer_file.stat.isreg
По сути, это проверка, существует ли композитор. Если это не загрузите его установить его. Любой, кто знаком с Anisible и Composer, поймет, что это не гарантирует, что все версии композитора одинаковы. Это может привести к некоторому интересному поведению (и является безумной плохой практикой).
Та же роль может быть легко модифицирована для обеспечения того, чтобы одинаковую версию композитора используется на каждом сервере
--- - name: Check if composer exists stat: path: /usr/local/bin/composer checksum_algorithm: sha256 register: composer_file - name: Download Composer get_url: url: https://getcomposer.org/installer dest: /root/composer-setup.php when: > composer_file.stat.isreg is not defined or not composer_file.stat.isreg or composer_file.stat.checksum != 'c3b2bc477429c923c69f7f9b137e06b2a93c6a1e192d40ffad1741ee5d54760d' - name: Add composer command: php /root/composer-setup.php --version=2.0.4 --install-dir=/usr/local/bin --filename=composer when: > composer_file.stat.isreg is not defined or not composer_file.stat.isreg or composer_file.stat.checksum != 'c3b2bc477429c923c69f7f9b137e06b2a93c6a1e192d40ffad1741ee5d54760d'
Поскольку проект Composer предоставляет контрольную сумму для версии на Скачать страницу , это простой случай указания версии для установки и проверки используемой версии соответствует ожидаемой контрольной сумме. Если это не так, установите конкретную версию.
Время развертывания
С серверами обновляются последней версией композитора, пришло время проверить задачу развертывания. Все хорошо и хорошо, имея последний выпуск продукта там, но если это не будет работать, когда вам это нужно, это не хорошо. Установите запуск задачи, нагрузки успеха, а затем …
TASK [Install/update requirements from composer.json] *************************
Ничего, кроме этого. Может быть, есть много много. Через несколько минут … все еще ничего. В конечном итоге время процесса. Раньше это работало нормально, это не сейчас. Композитор там (я проверил). Это правильная версия (я проверял снова). Будет ли он работать вручную? Нет!
Отказ от ответственности: Плохое тренировочное предупреждение! Серверы находятся в Digitalocean, и по умолчанию учетная запись пользователя root. Поэтому Anbible подключается как root, и не делает никаких работ Sudo для повышения привилегий. Всегда была плохая практика для запуска композитора в качестве корня. Но Composer 2.0 ждет явного ввода, чтобы подтвердить, что вы хотите запустить как root.
К счастью, вокруг этого есть способ. На самом деле, два, если вы рассчитываете создание нового пользователя и не запустите как root
Отказ Композитор красиво предоставляет --Но взаимодействия
Флаг, который можно пропустить. Задача для установки сейчас:
Заключение
Обновление композитора на Anisible было на самом деле проще, чем когда я сделал это на моей местной машине. Любые проблемы, которые я наткнулся, были просто вплоть до моей плохих практик, а не проблема с самой композитором. Даже тогда есть пути вокруг него.
Я буду катить изменение в композитору 2 из всех моих серверов, но также добавляю проблему технического долга, чтобы прекратить использование корня.
Оригинал: «https://dev.to/_garybell/upgrading-to-composer-2-using-ansible-bog»