Я знаю о ресурсы пакета, я борюсь, как мне найти точное имя пакета? Поскольку на разных узлах будут разные версии ОС, как написать рецепт удаления конкретного пакета для всех?
Как например NFS
Вам не нужно указывать точное имя пакета до уровня архитектуры, версии и исправления. Вам нужно только знать этот пакет название а основной менеджер пакетов позаботится обо всем остальном.
Поскольку у меня под рукой есть только CentOS 6, с которым можно поиграть:
rpm -qa | grep php # OR similar:
yum list installed |grep php
php-5.3.3-40.el6_6.x86_64
php-common-5.3.3-40.el6_6.x86_64
php-cli-5.3.3-40.el6_6.x86_64
php-pear-1.9.4-4.el6.noarch
php-pecl-apc-3.1.9-2.el6.x86_64
php-devel-5.3.3-40.el6_6.x86_64
перечислить все установленные пакеты и отфильтровать по php. Затем отобразите информацию о пакете с помощью yum info
yum info php-pecl-apc-3.1.9-2.el6.x86_64
Installed Packages
Name : php-pecl-apc
Arch : x86_64
Version : 3.1.9
Release : 2.el6
Size : 318 k
Repo : installed
From repo : base
Summary : APC caches and optimizes PHP intermediate code
URL : http://pecl.php.net/package/APC
License : PHP
Description : APC is a free, open, and robust framework for caching and optimizing PHP
: intermediate code.
а затем использовать его в Chef имя пакета php-pecl-apc
достаточно.
Имена пакетов по большей части одинаковы для разных выпусков.
Короче говоря, вам нужно потратить некоторое время на изучение соответствующего диспетчера пакетов, потому что удаление пакетов может не повлиять на другие установленные пакеты, которые требуют этого в качестве зависимости.
Типичный подход заключается в использовании оператора case для установки имени пакета в зависимости от платформы или семейства платформ. Из https://docs.chef.io/resource_package.html
package 'Install Apache' do
case node[:platform]
when 'redhat', 'centos'
package 'httpd'
when 'ubuntu', 'debian'
package 'apache2'
end
end