Fork me on GitHub

役立ちぬ開発史、それはただのブログ

覚えておくといい、ブログの時代は終わる。いつかその内、きっとたぶん…

Chef-DK:'knife Solo Bootstrap', or 'Prepare'でwgetの404エラー

| Comments

Chef-DKを使えるようにしたら、早速エラーって、行き詰まり、やたら時間を喰ってしまったので、その解決策を記録。色々と調べても、中々ヒットしなくて、探すのに手間取りました。
ちなみに、Chef-DK ver 0.1.0を対象としています。versionが上がれば、この問題は、解決するかもしれません。

Chef-Soloのバージョンの問題

結論から言うと、Chef-Soloのバージョンが問題みたいです。chef-solo -vを行って、以下が返ってくるはずです。

1
Chef: 11.14.0.alpha.1

このバージョンが、bootstrapやprepareでwgetをさせないようにしているみたいです。 なので、以下のKnife-Soloコマンドをやると、

1
knife solo bootstrap <IPアドレス or ホスト名>

この記事では、Vagrantfileでprivate networkを192.168.33.10に設定してあるので、<IPアドレス or ホスト名>には、root@192.168.33.10を使用しています。 そうすると、何故かパスワードを求められたました。調べてみると、Vagrantのrootのパスワードは、vagrantらしいです。
パスワードを入力すると、以下のように、エラーやらパスワードの嵐です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Bootstrapping Chef...
Enter the password for root@192.168.33.10:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15934  100 15934    0     0   5879      0  0:00:02  0:00:02 --:--:-- 32853
Downloading Chef 11.14.0.alpha.1 for el...
downloading https://www.opscode.com/chef/metadata?v=11.14.0.alpha.1&prerelease=false&nightlies=false&p=el&pv=6&m=x8664
  to file /tmp/install.sh.2287/metadata.txt
trying wget...
trying curl...
ERROR 404
Unable to retrieve a valid package!
Please file a bug report at http://tickets.opscode.com
Project: Chef
Component: Packages
Label: Omnibus
Version: 11.14.0.alpha.1

Please detail your operating system type, version and any other relevant details
Metadata URL: https://www.opscode.com/chef/metadata?v=11.14.0.alpha.1&prerelease=false&nightlies=false&p=el&pv=6&m=x8664

DEBUG OUTPUT FOLLOWS:

STDERR from wget:

--2014-06-08 00:40:19--  https://www.opscode.com/chef/metadata?v=11.14.0.alpha.1&prerelease=false&nightlies=false&p=el&pv=6&m=x8664
www.opscode.com をDNSに問いあわせています... 184.106.28.90
www.opscode.com|184.106.28.90|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2014-06-08 00:40:20 エラー 404: Not Found。

Running Chef on 192.168.33.10...
Installing Berkshelf cookbooks to 'cookbooks'...
DEPRECATED: Your Berksfile contains a site location pointing to the Opscode Community Site (site :opscode). Site locations have been replaced by the source location. Change this to: 'source "https://api.berkshelf.com"' to remove this warning. For more information visit https://github.com/berkshelf/berkshelf/wiki/deprecated-locations
Resolving cookbook dependencies...
Uploading the kitchen...
Enter the password for root@192.168.33.10:
root@192.168.33.10's password:
WARNING: Local cookbookpath '/YOURE_PATH/cookbooks' does not exist
root@192.168.33.10's password:
root@192.168.33.10's password:
root@192.168.33.10's password:
root@192.168.33.10's password:
root@192.168.33.10's password:
root@192.168.33.10's password:
Generating solo config...
root@192.168.33.10's password:
Running Chef...
sudo: chef-solo: コマンドが見つかりません
ERROR: RuntimeError: chef-solo failed. See output above.

確認のために、以下のコマンドでprepareも試してみると、

1
knife solo prepare <IPアドレス or ホスト名>

以下のように、同じエラーが出てきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Bootstrapping Chef...
Enter the password for root@192.168.33.10:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15934  100 15934    0     0   7507      0  0:00:02  0:00:02 --:--:-- 50907
Downloading Chef 11.14.0.alpha.1 for el...
downloading https://www.opscode.com/chef/metadata?v=11.14.0.alpha.1&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64
  to file /tmp/install.sh.2646/metadata.txt
trying wget...
trying curl...
ERROR 404
Unable to retrieve a valid package!
Please file a bug report at http://tickets.opscode.com
Project: Chef
Component: Packages
Label: Omnibus
Version: 11.14.0.alpha.1

Please detail your operating system type, version and any other relevant details
Metadata URL: https://www.opscode.com/chef/metadata?v=11.14.0.alpha.1&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64

DEBUG OUTPUT FOLLOWS:

STDERR from wget:

--2014-06-08 00:50:20--  https://www.opscode.com/chef/metadata?v=11.14.0.alpha.1&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64
www.opscode.com をDNSに問いあわせています... 184.106.28.91
www.opscode.com|184.106.28.91|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2014-06-08 00:50:21 エラー 404: Not Found。

う〜ん、弱りましたね。

エラーの回避・解決策

このエラーの回避・解決策としては、Chef-Soloのバージョンをwgetできるものに下げることです。knife soloコマンドを実行するときに、オプションで、Chef-Soloのバージョンを指定します。

1
2
knife solo bootstrap <IPアドレス or ホスト名> --bootstrap-version 11.12.0
knife solo prepare <IPアドレス or ホスト名> --bootstrap-version 11.12.0

こうすれば、無事に実行することができます。

'cookbooks' does not existの問題

今のところ、特に影響は受けていないのですが、knife solo bootstrapknife solo cookをすると、以下のように、

1
WARNING: Local cookbook_path '/YOURE_PATH/cookbooks' does not exist

cookbooksがないと返ってきます。以下のコマンドで、

1
knife solo init .

ちゃんと作ったはずなのですが、knife solo bootstrapknife solo cookを実行するの中で、cookbooksを消してしまうみたいです。コレに関しては、謎のままです。なので、無くなってしまったら、knife solo init .をまた実行して、作成しています。しかし、根本的に解決をしたいものです。

参考サイト

Vagrant の VirtualBox 用 Base Box ファイルを手動で作ってみる
Chefのknife solo prepareで404

Comments