我知道 chef.io 不支持 Arch Linux,但是有没有办法使用 knife bootstrap 来引导 Arch Linux 节点?
我尝试在 Debian 机器上使用相同的命令,但出现错误:
knife bootstrap 10.2.128.80 --ssh-identity-file ~/.ssh/id_rsa --connection-user myUser -N webserver --environment staging --bootstrap-version 18 -y --sudo
Connecting to 10.2.128.80 using ssh
Connecting to 10.2.128.80 using ssh
DEBUG: [SSH] [email protected] cmd = cmd.exe /c ver
DEBUG: [SSH] [email protected] cmd = Get-WmiObject Win32_OperatingSystem | Select Caption,Version | ConvertTo-Json
DEBUG: [SSH] [email protected] cmd = uname -s
DEBUG: [SSH] [email protected] cmd = uname -m
DEBUG: [SSH] [email protected] cmd = test -f /etc/debian_version
DEBUG: [SSH] [email protected] cmd = test -f /etc/os-release && cat /etc/os-release
DEBUG: [SSH] [email protected] cmd = show version
DEBUG: [SSH] [email protected] cmd = test -f /etc/lsb-release && cat /etc/lsb-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/oracle-release && cat /etc/oracle-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/enterprise-release && cat /etc/enterprise-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/parallels-release && cat /etc/parallels-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/system-release && cat /etc/system-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/redhat-release && cat /etc/redhat-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/SuSE-release && cat /etc/SuSE-release
DEBUG: [SSH] [email protected] cmd = test -f /etc/arch-release
DEBUG: [SSH] [email protected] cmd = uname -r
DEBUG: [SSH] [email protected] cmd = sh -c '(sudo echo) < /dev/null'
DEBUG: [SSH] [email protected] cmd = sudo echo '[SSH] Established'
WARNING: Performing legacy client registration with the validation key at /home/myUser/.chef/org-validator.pem...
WARNING: Remove the key file or remove the 'validation_key' configuration option from your config.rb (knife.rb) to use more secure user credentials for client registration.
TRACE: Looking for bootstrap template in /opt/chef-workstation/embedded/lib/ruby/gems/3.1.0/gems/knife-18.2.7/lib/chef/knife/bootstrap/templates
TRACE: Found bootstrap template: /opt/chef-workstation/embedded/lib/ruby/gems/3.1.0/gems/knife-18.2.7/lib/chef/knife/bootstrap/templates/chef-full.erb
Bootstrapping 10.2.128.80
DEBUG: [SSH] [email protected] cmd = sudo sh /tmp/chef_T472LE/bootstrap.sh
[10.2.128.80] -----> Installing Chef Omnibus (stable/18)
downloading https://omnitruck.chef.io/chef/install.sh
to file /tmp/install.sh.32304/install.sh
[10.2.128.80] trying wget...
[10.2.128.80] "arch" "rolling" x86_64
[10.2.128.80] Getting information for chef stable 18 for "arch"...
[10.2.128.80] downloading https://omnitruck.chef.io/stable/chef/metadata?v=18&p="arch"&pv="rolling"&m=x86_64
to file /tmp/install.sh.32308/metadata.txt
[10.2.128.80] trying wget...
[10.2.128.80] ERROR 404
[10.2.128.80] Omnitruck artifact does not exist for version 18 on platform "arch"
Either this means:
- We do not support "arch"
- We do not have an artifact for 18
[10.2.128.80] This is often the latter case due to running a prerelease or RC version of Chef
or a gem version which was only pushed to rubygems and not omnitruck.
You may be able to set your knife[:bootstrap_version] to the most recent stable
release of Chef to fix this problem (or the most recent stable major version number).
In order to test the version parameter, adventurous users may take the Metadata URL
[10.2.128.80] below and modify the '&v=<number>' parameter until you successfully get a URL that
does not 404 (e.g. via curl or wget). You should be able to use '&v=11' or '&v=12'
[10.2.128.80] successfully.
[10.2.128.80] If you cannot fix this problem by setting the bootstrap_version, it probably means
that "arch" is not supported.
[10.2.128.80]
Metadata URL: https://omnitruck.chef.io/stable/chef/metadata?v=18&p="arch"&pv="rolling"&m=x86_64
[10.2.128.80] Starting the first Chef Infra Client Client run...
[10.2.128.80] /tmp/chef_T472LE/bootstrap.sh: line 364: chef-client: command not found
ERROR: The following error occurred on 10.2.128.80:
ERROR: -----> Installing Chef Omnibus (stable/18)
downloading https://omnitruck.chef.io/chef/install.sh
to file /tmp/install.sh.32304/install.sh
trying wget...
"arch" "rolling" x86_64
Getting information for chef stable 18 for "arch"...
downloading https://omnitruck.chef.io/stable/chef/metadata?v=18&p="arch"&pv="rolling"&m=x86_64
to file /tmp/install.sh.32308/metadata.txt
trying wget...
ERROR 404
Omnitruck artifact does not exist for version 18 on platform "arch"
Either this means:
- We do not support "arch"
- We do not have an artifact for 18
This is often the latter case due to running a prerelease or RC version of Chef
or a gem version which was only pushed to rubygems and not omnitruck.
You may be able to set your knife[:bootstrap_version] to the most recent stable
release of Chef to fix this problem (or the most recent stable major version number).
In order to test the version parameter, adventurous users may take the Metadata URL
below and modify the '&v=<number>' parameter until you successfully get a URL that
does not 404 (e.g. via curl or wget). You should be able to use '&v=11' or '&v=12'
successfully.
If you cannot fix this problem by setting the bootstrap_version, it probably means
that "arch" is not supported.
Metadata URL: https://omnitruck.chef.io/stable/chef/metadata?v=18&p="arch"&pv="rolling"&m=x86_64
Starting the first Chef Infra Client Client run...
/tmp/chef_T472LE/bootstrap.sh: line 364: chef-client: command not found
DEBUG: [SSH] [email protected] cmd = sudo rm -f "/tmp/chef_T472LE/bootstrap.sh"
我理解,由于不支持 Arch Linux,它无法找到要下载的文件以下网址。
有什么方法可以诱使它认为它是受支持的操作系统?如果它可以下载 Debian 安装文件,那么其余安装是否仍然有效?
答案1
我已知道该怎么做了。
基本上,你所要做的就是安装该包chef-client
使用knife bootstrap --bootstrap-install-command
标志从 AUR
就我个人而言,在我的设置中,除了 root 之外没有其他用户,因此我使用这个脚本:
--bootstrap-install-command "curl -sSf https://repo.barata.pt/-/snippets/9/raw/master/bootstrap-arch.sh | sh"
我还没有测试过,但是如果你以未配置密码的 sudo 用户身份连接到机器,那么类似这样的操作应该可以工作:
pacman --noconfirm -S wget base-devel
cd /tmp
wget --no-verbose https://aur.archlinux.org/cgit/aur.git/snapshot/chef-client.tar.gz
tar -xvf chef-client.tar.gz
cd chef-client
makepkg -si --noconfirm
cd ..
rm -rf chef-clien*
全面披露,chef-client
AUR 软件包目前由我维护