有没有人尝试执行一个无人看pipe的厨师客户端安装 – 从节点本身安装厨师客户端?
文档中提供的信息不多。 另外,我不希望厨师独奏,但在节点上的厨师客户端。
从你的问题来看,你不知道你在做什么操作系统,以及你是在独立的还是在厨师的服务器环境中。
以下是独立安装chef-client的两个选项:
curl -L https://www.chef.io/chef/install.sh | sudo bash
或针对特定版本
curl -L https://www.chef.io/chef/install.sh | sudo bash -s -- -v 12.0.2
Ubuntu的例子:
wget https://opscode-omnibus-packages.s3.amazonaws.com/debian/6/x86_64/chef_12.5.1-1_amd64.deb sudo dpkg -i chef_12.5.1-1_amd64.deb
刀引导程序将在厨师服务器环境中的节点上安装厨师客户端。 Bootstrap使用omnibus安装程序,然后从服务器复制所需的客户端configuration。
knife bootstrap 123.45.6.789 -x username -P password --sudo
厨师客户端可以使用无人参与的引导进行安装。 这允许厨师客户端从本身安装,而不使用SSH。 例如,机器通常使用AWS Auto Scaling,AWS CloudFormation,Rackspace Auto Scale和PXE等环境创build。 在这种情况下,使用工具进行参与,像刀具引导或刀CLOUD_PLUGIN创build单机安装是不实际的,因为机器是自动创build的,有人不能总是手头来启动引导过程。
当厨师客户端使用无人参与引导程序安装时,请记住厨师客户端:
当厨师客户端使用无人参与引导程序安装时,通常将其构build到启动厨师客户端的映像中。 使用的图像types取决于将在其上进行无人参与引导的平台。
使用client.rb文件中的设置(chef_server_url,http_proxy等)来确保将configuration细节内置到无人参与的引导过程中。
节点的初始运行列表是使用主机系统上的JSON文件指定的。 将chef-client作为可执行文件运行时,使用-j选项告诉主客户端使用哪个JSON文件。 例如:
chef-client -j /etc/chef/file.json --environment _default
其中file.json类似于:
{ "resolver": { "nameservers": [ "10.0.0.1" ], "search":"int.example.com" }, "run_list": [ "recipe[resolver]" ] }
您可能还想与Chef签出Provision和Bootstrap AWS实例
我只是做了这个,不得不从一些不同的StackExchange问题和一些博客文章中find它们。 很多信息都是针对AWS的,但是我没有在那里部署。 下面简要总结一下需要什么。 我假设厨师客户端已经安装,你可以访问厨师服务器实例。
/ etc / chef中的client.rb包含以下字段:
node_name "my_node" chef_server_url "https://api.chef.io/organizations/my_org validation_client_name "my_org-validator"
(最低限度)这个数据在/ etc / chef中的first_run.json:
{"run_list":["role[base]"]}
一个将运行的启动脚本
chef-client -j /etc/chef/first_run.json > /tmp/chef_first_run.log
我configuration了所有这些并保存了磁盘映像。 现在,当运行该操作系统安装的设备启动时,它会自动向主厨服务器注册自己,并执行angular色“基本”的运行列表。 我使用了Ubuntu Server 16.04和Chef Client 12.3.0
编辑:以前这说first_run.json应该包含run-list 。 这已经更新到run_list每个反馈的评论。
我们在AWS上一直这样做 – 在这里查看厨师CloudInitconfiguration指令: http ://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-and-run-chef-recipes
厨师删除了他们的PPA前一段时间,所以你必须使用综合或gem方法 – 包不再有效。