千家信息网

Linux系统如何安装chef

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍Linux系统如何安装chef,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!chef是一个服务器自动化构建工具。 是一个系统集成框架,为整个架构提供配置管理功能
千家信息网最后更新 2026年11月02日Linux系统如何安装chef

这篇文章主要介绍Linux系统如何安装chef,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

chef是一个服务器自动化构建工具。 是一个系统集成框架,为整个架构提供配置管理功能。

Chef简介:

  • Chef是,由Ruby开发的服务器的构成管理工具

  • 通过Chef编写代码来管理服务器,而不是运行命令。

  • Chef与应用程序、数据库、LDAP目录等紧密集成。

  • 轻松地配置需要了解整个基础设施的应用程序

Linux系统安装Chef具体解决方案

下载 ChefDK

ChefDK是Chef Development Kit的缩写,它几乎用于所有的平台,包括基于Debian发行版、Ubuntu、RedHat、CentOS、Mac OS X和Windows。当前ChefDK的稳定版本是0.11.2,对于基于RHEL的系统,它可用于版本 6 和 7(如: CentOS 6 和 CentOS 7),RPM版本只有64位版本。

使用以下命令下载ChefDK 在CentOS 7上

 cd ~ wget https://packages.chef.io/stable/el/7/chefdk-0.11.2-1.el7.x86_64.rpm

在CentOS 6上

 cd ~ wget https://packages.chef.io/stable/el/6/chefdk-0.11.2-1.el6.x86_64.rpm

安装 ChefDK

使用RPM安装刚刚下载的ChefDK

 # rpm -ivh chefdk-0.11.2-1.el7.x86_64.rpm Preparing...                          ################################# [100%] Updating / installing...    1:chefdk-0.11.2-1.el7              ################################# [100%] Thank you for installing Chef Development Kit!

ChefDK默认安装到/opt/chefdk目录下,如下所示

 # ls -l /opt/chefdk/ drwxr-xr-x. 2 root root  4096 Mar  3 13:50 bin drwxr-xr-x. 7 root root    62 Mar  3 13:50 embedded -rw-r--r--. 1 root root 13249 Feb 22 14:26 version-manifest.json -rw-r--r--. 1 root root  8233 Feb 22 14:26 version-manifest.txt

验证ChefDK的安装

执行chef verify,验证所有来自ChefDK的不同组件,确保他们都工作正常,没有任何问题

 # chef verify Running verification for component 'berkshelf' Running verification for component 'test-kitchen' Running verification for component 'tk-policyfile-provisioner' Running verification for component 'chef-client' Running verification for component 'chef-dk' Running verification for component 'chef-provisioning' Running verification for component 'chefspec' Running verification for component 'generated-cookbooks-pass-chefspec' Running verification for component 'rubocop' Running verification for component 'fauxhai' Running verification for component 'knife-spork' Running verification for component 'kitchen-vagrant' Running verification for component 'package installation' Running verification for component 'openssl' Running verification for component 'inspec' ....... --------------------------------------------- Verification of component 'test-kitchen' succeeded. Verification of component 'chef-dk' succeeded. Verification of component 'chefspec' succeeded. Verification of component 'rubocop' succeeded. Verification of component 'knife-spork' succeeded. Verification of component 'openssl' succeeded. Verification of component 'berkshelf' succeeded. Verification of component 'chef-client' succeeded. Verification of component 'fauxhai' succeeded. Verification of component 'inspec' succeeded. Verification of component 'tk-policyfile-provisioner' succeeded. Verification of component 'kitchen-vagrant' succeeded. Verification of component 'chef-provisioning' succeeded. Verification of component 'package installation' succeeded. Verification of component 'generated-cookbooks-pass-chefspec' succeeded.

下面是chef verify失败的案例。注意:Ruby在Chef中是必须的,它被嵌入在了ChefDK中。

 # chef verify .. /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout.rb:289:in `invalid!': Expected process to exit with [0], but received '1' (Mixlib::ShellOut::ShellCommandFailed) ---- Begin output of /usr/bin/ohai -v ---- STDOUT: STDERR: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'chef-config' (= 12.8.0) - did find: [chef-config-12.7.2] (Gem::LoadError)

以上错误信息显示:"Could not find ‘chef-config’ (= 12.8.0) – did find: [chef-config-12.7.2] (Gem::LoadError)",在安装的ChefDK中chef-config的版本是12.7.2的旧版本,在手动安装chef-confg 12.8.0版本后再执行chef verify,显示验证成功。

验证ChefDK版本

执行 chef -version命令,显示ChefDK的版本号以及所有附带组件

 # chef --version Chef Development Kit Version: 0.11.2 chef-client version: 12.7.2 berks version: 4.2.0 kitchen version: 1.5.0

设置Chef 环境变量

设置Chef相关的环境变量,如:GEM_ROOT GEM_HOME GEM_PATH。

 export GEM_ROOT="/opt/chefdk/embedded/lib/ruby/gems/2.1.0" export GEM_HOME="/root/.chefdk/gem/ruby/2.1.0" export GEM_PATH="/root/.chefdk/gem/ruby/2.1.0:/opt/chefdk/embedded/lib/ruby/gems/2.1.0"

此外,如果你的系统上已经安装了ruby,你需要更新与ruby相关的PATH变量,如下所示

 export PATH="/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

显示所有Chef设置的环境变量。

 chef shell-init bash

想要快速设置这些环境变量,可以将其添加到bash_profile文件中,如下所示。

 echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile

访问Chef的Firewalld规则

为了访问Chef服务器上的Chef Manage GUI,添加以下firewalld规则,开放Chef服务器上的相应端口。

 firewall-cmd --direct  --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \  --dport 443 -j ACCEPT  firewall-cmd --direct  --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \  --dport 80 -j ACCEPT  firewall-cmd --direct  --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \  --dport 9683 -j ACCEPT  firewall-cmd --reload

从Chef Manage GUI下载Starter Kit

登录到Chef Manage GUI,单击"Administration"选项,从列表中选择"organization"。此例中,"organization"为"example",选中organization之后,点击左侧菜单中的"Starter Kit"。

按下"Download(下载)"按钮之后,会跳出一个警告信息,按下"Proceed",它会将chef-starter.zip文件下载到本地机器。

解压缩 Starter Kit

将chef-starter.zip文件传输到Chef工作站并解压到root的home目录下

 # cd ~ # unzip chef-starter.zip Archive:  chef-starter.zip    creating: chef-repo/cookbooks/    creating: chef-repo/cookbooks/starter/    creating: chef-repo/cookbooks/starter/templates/    creating: chef-repo/cookbooks/starter/templates/default/   inflating: chef-repo/cookbooks/starter/templates/default/sample.erb      creating: chef-repo/cookbooks/starter/files/    creating: chef-repo/cookbooks/starter/files/default/   inflating: chef-repo/cookbooks/starter/files/default/sample.txt      creating: chef-repo/cookbooks/starter/recipes/   inflating: chef-repo/cookbooks/starter/recipes/default.rb      creating: chef-repo/cookbooks/starter/attributes/   inflating: chef-repo/cookbooks/starter/attributes/default.rb     inflating: chef-repo/cookbooks/starter/metadata.rb     inflating: chef-repo/cookbooks/chefignore     inflating: chef-repo/README.md       inflating: chef-repo/.gitignore        creating: chef-repo/.chef/    creating: chef-repo/roles/   inflating: chef-repo/.chef/knife.rb     inflating: chef-repo/roles/starter.rb     inflating: chef-repo/.chef/ramesh.pem     inflating: chef-repo/.chef/example-validator.pem

如果你手动创建了chef-repo文件夹,那你就需要手动创建上述的子目录,复制knife.rb文件、organization-validator.pem文件(如:example-validator.pem)、username.pem文件(如:ramesh.pem)到上面显示的目录中。

Chef服务器的SSL证书

在这个阶段如果执行knife client list会得到以下错误信息

 # cd ~/chef-repo # knife client list ERROR: SSL Validation failure connecting to host: centos.example.com - SSL_connect returned=1 errno=0 state=error: certificate verify failed ERROR: Could not establish a secure connection to the server. Use `knife ssl check` to troubleshoot your SSL configuration. If your Chef Server uses a self-signed certificate, you can use `knife ssl fetch` to make knife trust the server's certificates.  Original Exception: OpenSSL::SSL::SSLError: SSL Error connecting to https://centos.example.com/organizations/example/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed

证书验证失败,因为我们没有从Chef服务器下载SSL证书,此时可以执行以下"knife ssl fetch"。

 # cd ~/chef-repo # knife ssl fetch WARNING: Certificates from centos.example.com will be fetched and placed in your trusted_cert directory (/root/chef-repo/.chef/trusted_certs).  Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading.

证书将会下载到以下truster_certs目录中

 # ls -l /root/chef-repo/.chef/trusted_certs -rw-r--r--. 1 root root 1379 Mar 20 20:17 centos_example_com.crt  # cat /root/chef-repo/.chef/trusted_certs/centos_example_com.crt -----BEGIN CERTIFICATE----- MIIDzDCCArSgAwIBAgIBADANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJVUzEQ MA4GA1UECgwHWW91Q29ycDETMBEGA1UECwwKT3BlcmF0aW9uczEbMBkGA1UEAwwS ZXJhdGlvbnMxGzAZBgNVBAMMEmNlbnRvcy5leGFtcGxlLmNvbTCCASIwDQYJKoZI .. .. WLyr2ORLMcck/OGsubabO/koMNTqhl2JJPECNiDJh06MeZ/2+BOwGZSpXDbw+vFE NJAsLfsTzihGWZ58einMFA== -----END CERTIFICATE-----

Chef工作站的最终确认

如果Chef工作站工作正常,当你执行"knife client list"时,它会显示所有连接工作站的客户端。由于我们刚刚安装它,因此只能看到刚刚我们创建的组织(organization)

 # cd ~/chef-repo  # knife client list example-validator

如果你现有的Chef工作站机器上已经有5个服务器连接到它了,你会看到以下信息

 # knife client list example-validator node1 node2 node3 node4 node5

以上是"Linux系统如何安装chef"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

版本 服务器 服务 文件 工作 系统 变量 工作站 目录 验证 信息 环境 证书 命令 手动 管理 内容 工具 应用程序 机器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网公司装修 互联网为科技 互联网公司 科技公司 互联网金融 科技金融 金融科技和互联网金融 科技大学互联网专业好不好 哈尔滨秒房互联网科技有限公司 深圳国际航运科技和互联网 常德市电业局互联网科技部 宁夏科技产业互联网案例 厦门比较好的科技互联网公司 崇明区互联网教育科技诚信经营 和信科技工业互联网 移动互联网年度科技创新 健康食品互联网创新科技园项目 互联网时代的科技公司 上海互联网科技公司ppt 神州科技互联网有限公司 上海万顺科技互联网有限公司招聘 科技互联网专业务虚会材料 上海卓越科技互联网 互联网品科技 浩特互联网科技 极限挑战互联网科技 新华互联网科技校企合作 互联网科技有哪些公司 保险科技服务互联网营销体系 银行科技岗属于互联网吗 北京天晋互联网科技有限公司 米泉互联网科技专业怎么样
0