如何卸载 chef-client 和整个 Chef 包

Posted

技术标签:

【中文标题】如何卸载 chef-client 和整个 Chef 包【英文标题】:How to uninstall chef-client and the whole Chef package 【发布时间】:2013-06-11 12:02:37 【问题描述】:

卸载 Chef-Client 是否与删除目录一样简单,并确保其不在 rc 文件中?有没有办法用knife卸载chef-client?

--2013-06-26_EDIT--

更新这个问题是说,如何在使用 1.) Omnibus 安装程序和 2.) 引导节点后从 OS X 和 Linux 中删除厨师及其所有其他部分?由于我试图在我的 Mac 上使用 Chef,并且安装了 RVM,chef 将无法工作,所以现在,我需要弄清楚如何删除 chef。

--2015-03-08 编辑-- 似乎 Opscode 已经发布了他们自己的卸载 ChefDK 的说明。就代理而言,这将是相同的方法,使用包管理器或添加/删除程序。http://docs.chef.io/install_dk.html#uninstall

【问题讨论】:

这取决于操作系统和您安装 chef 的方式。 RHEL 5,6 和 CentOS 6.4 用于我的个人家庭项目。我使用综合安装程序来安装 Chef,但由于我遇到的冲突,不得不从这些操作系统中删除 RVM 红宝石。 【参考方案1】:

如果您使用的是 debian/ubuntu(或带有 dpkg 的系统),只需检查软件包的状态:

dpkg --list | grep chef # or dpkg --status chef

然后清除(参见 man dpkg):

dpkg -P chef

【讨论】:

我不在我的电脑附近,但同样的rpm -qa | grep *chef* 工作,让我看看我需要删除什么?直到现在我才考虑到这一点。【参考方案2】:

为了帮助回答我自己的问题,我发现取决于您如何安装 Chef,取决于您如何卸载它。你可以这样做:

红帽/CentOS

rpm -qa *chef*
yum remove <package>

或者,如果您使用 ruby​​ gem 安装它:

gem uninstall chef-<version>

但是,对于使用 Omnibus 安装程序,没有 RPM 包,在我的 Mac OSX 10.6.8 上,我找不到任何关于它的信息。于是,我意识到chef是自成一体的,所以我只是删除了/opt/目录中的目录。一旦我这样做了,我就可以使用我的 RVM Ruby 了。

--2015-03-08-- Opscode 提供了他们自己的卸载 ChefDK 和代理的说明。http://docs.chef.io/install_dk.html#uninstall

【讨论】:

在 Mac OS X Mavericks 上进行了一些调试,install.sh“综合安装程序”创建了一个包含 chef--mac_os_x-10.7-x86_64.sh (10.7 atm) 的临时目录,该目录创建了另一个包含 makeselfinst 的临时目录 @987654328 @ 在里面。这是真的,删除/opt/chef 会删除它,但/usr/bin 中会有一些符号链接指向您可能还想删除的地方:chef-client, chef-solo, chef-apply, chef-shell, knife, shef &amp; ohai。 hth 我也使用上述命令,但也执行以下操作(在 CentOS 上):rm -rf /var/chef; rm -rf /etc/chef; rm -rf /opt/chef 然后刀节点删除 NODE_NAME,然后刀客户端删除 NODE_NAME。现在该节点应该已准备好在必要时重新安装 Chef。【参考方案3】:

我在试图弄清楚如何从云服务器(在本例中为 Ubuntu)中删除 chef 时遇到了这个问题。我用厨师来配置一台机器,但我想烘焙一个图像并且没有厨师。所以对于那些寻找类似的人

要删除以 omnibus 方式安装的 chef-client:

sudo rm -rf /opt/chef(大部分都在这里) sudo rm -rf /etc/chef(厨师客户的提示等) for P in /usr/bin/chef-*; do [ -e "$P" ] &amp;&amp; sudo rm -f "$P"; done(厨师命令链接) sudo rm -f /usr/bin/knife /usr/bin/ohai /usr/bin/chef(厨师命令的其他链接)

【讨论】:

使用 rpm / apt-get 删除 chef /omnibus 包。如果您只是删除文件,则下一次厨师引导或初始运行将失败,因为会发现已安装 rpms/debs。 @2mia 我在这个问题的答案中使用了dpkg -P chef,但这个问题仍然帮助我删除了其他文件。我的节点上还有/etc/chef/usr/bin/chef-*/usr/bin/knife /usr/bin/ohai /usr/bin/chef 文件。赞成。【参考方案4】:

以 root 用户身份执行以下一系列命令:

在 Ubuntu/Debian 上:

dpkg -P chef;
rm -rf /opt/chef /var/chef /etc/chef;
for P in /usr/bin/chef-*; do [ -e "$P" ] && sudo rm -f "$P"; done;
rm -rf /usr/bin/knife /usr/bin/ohai /usr/bin/chef;

这也是针对 Ubuntu 上 bootstrap 过程中出现的以下错误的解决方案[因为存在老版本的 chef-client]

错误:在 ubuntu 版本 14.04 上找不到 apt_update 的资源

在 RHEL/CentOS 上:

rm -rf /opt/chef; rm -rf /etc/chef; 
for P in /usr/bin/chef-*; do [ -e "$P" ] && sudo rm -f "$P"; done
rpm -qa | grep chef-server | xargs yum erase -y;
userdel -f chef_server; userdel -f opscode-pgsql; 
rm -rf /usr/bin/knife /usr/bin/ohai /usr/bin/chef /opt/chef-server/ /var/chef/ /var/opt/chef-server/ /var/log/chef-server/ /etc/chef /etc/chef-server/ /etc/chef /etc/chef-server/;

【讨论】:

以上是关于如何卸载 chef-client 和整个 Chef 包的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Cookbook InvalidInstanceIDNotFound 的 Chef EC2 EBS 卷

AWS Opsworks 将 data_bag 文件夹放在哪里?

执行 PSEXEC 时出错

如何使用 Apache ***lyn 和 Chef 安装 Jenkins

Chef - 如何在本地运行食谱

如何使用 Chef 12 分发 ssh 密钥