knife-sole prepare を実行、エラー404 Not Found だとー
knife-solo prepareを実行した所、謎のエラーに遭遇した、 404だと?なにが404なんだ? どうやらchef-soloのバージョンが問題のようです
chef-soloのバージョンを確認すると以下でした
$ chef-solo -v
Chef: 12.0.0.alpha.2
上記が返ってきます、このバージョンが問題のようです knife-solo prepareを実行すると以下のようになりErrorが発生して先に進みません
$ knife solo prepare root@49.212.185.91
Bootstrapping Chef...
Enter the password for root@49.212.185.91:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16519 100 16519 0 0 15121 0 0:00:01 0:00:01 --:--:-- 32453
Downloading Chef 12.0.0.alpha.2 for el...
downloading https://www.opscode.com/chef/metadata?v=12.0.0.alpha.2&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64
to file /tmp/install.sh.1500/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: 12.0.0.alpha.2
Please detail your operating system type, version and any other relevant details
Metadata URL: https://www.opscode.com/chef/metadata?v=12.0.0.alpha.2&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64
\nDEBUG OUTPUT FOLLOWS:\n\nSTDERR from wget:\n\n--2014-10-21 11:10:36-- https://www.opscode.com/chef/metadata?v=12.0.0.alpha.2&prerelease=false&nightlie
s=false&p=el&pv=6&m=x86_64
www.opscode.com をDNSに問いあわせています... 184.106.28.90
www.opscode.com|184.106.28.90|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2014-10-21 11:10:37 エラー 404: Not Found。\n
上記のErrorの回避策についてはchefのバージョンを指定します
$ knife solo prepare root@[IP Address] --bootstrap-version 11.12.0
Bootstrapping Chef...
Enter the password for root@49.212.185.91:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16519 100 16519 0 0 15458 0 0:00:01 0:00:01 --:--:-- 33439
Downloading Chef 11.12.0 for el...
downloading https://www.opscode.com/chef/metadata?v=11.12.0&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64
to file /tmp/install.sh.1574/metadata.txt
trying wget...
url https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.0-1.el6.x86_64.rpm
md5 3e4fadc93e3080ec0b2ed811f36cb8bc
sha256 42a29433f83f03fdf75a06ff65c45f0bbdeb44593b45fc0ef1717fbdb7eb8756
downloaded metadata file looks valid...
downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.0-1.el6.x86_64.rpm
to file /tmp/install.sh.1574/chef-11.12.0-1.el6.x86_64.rpm
trying wget...
Comparing checksum with sha256sum...
Installing Chef 11.12.0
installing with rpm...
警告: /tmp/install.sh.1574/chef-11.12.0-1.el6.x86_64.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
準備中... ########################################### [100%]
1:chef ########################################### [100%]
Thank you for installing Chef!
これでOK、あせったYosemitenのせいかと思ってしまいましたが違うようですね
でわでわ
参考URL:
Chef-DK:'knife solo bootstrap', or 'prepare'でwgetの404エラー - 役立ちぬ開発史、それはただのブログ
ansible を使ってさくらVPSにLAMP環境を構築してみる その1
mac からansibleでさくらVPSを構築する 目的はさくらVPSでec-cubeを動かす
※なぜec-cubeなのかは気にしない気にしない
今まではサーバ構築にchefを使っていましたが、今回は対象のサーバに対してchefをinstall 出来ない可能性があるので前から試したかったansibleを使ってみる事にしました
ansible を mac に install する
http://docs.ansible.com/intro_installation.html#latest-releases-via-homebrew-mac-osx
公式にhomebrewで入れろと書いてかるので素直に従う
$ brew update
$ brew install ansible
上記でさくっと入りました
※homebrewの設定は語りません
ansible を試す
hostsファイルを作る
実行するサーバのIPを書く 今回はvagrantでサーバを起動しているのでhostsに192.168.33.10を記述
$ mkdir ec-cube $ cd ec-cube $ vagranit init centos6.5 $ vim hosts 192.168.33.10
ansibleを実行
鍵認証を設定していないので通常のパスワード認証を行う
ansible ホスト -i ホストリストファイル -m 実行モジュール -u ユーザ
--ask-pass --ask-sudo-pass はパスワード認証を行うときに必要
$ ansible 192.168.33.10 -i hosts -m ping -u vagrant --ask-pass --ask-sudo-pass
以下のerrorが発生、sshpassなるものを入れろと
192.168.33.10 | FAILED => to use the 'ssh' connection type with passwords, you must install the sshpass program
http://lalyos.github.io/blog/2013/09/30/install-sshpass-on-mac/
上のページを参考にhomebrewでinstall する
brew install https://raw.github.com/eugeneoden/homebrew/eca9de1/Library/Formula/sshpass.rb
もう一度ansibleを実行する
$ ansible 192.168.33.10 -i hosts -m ping -u vagrant --ask-pass --ask-sudo-pass SSH password: 192.168.33.10 | success >> { "changed": false, "ping": "pong" }
上記のように返ってくればOKです
httpdを入れてみる
以下を実行する
-m 実行モジュールはyumを指定 -s sudo -a name=[httpdを指定]
ansible 192.168.33.10 -i hosts -m yum -s -a name=httpd -u vagrant --ask-pass
しばらく待つ
SSH password: 192.168.33.10 | success >> { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: www.ftp.ne.jp\n * epel: ftp.iij.ad.jp\n * extras: www.ftp.ne.jp\n * updates: mirror.awanti.com\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.2.15-31.el6.centos will be installed\n--> Processing Dependency: httpd-tools = 2.2.15-31.el6.centos for package: httpd-2.2.15-31.el6.centos.x86_64\n--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-31.el6.centos.x86_64\n--> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-31.el6.centos.x86_64\n--> Running transaction check\n---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed\n---> Package httpd-tools.x86_64 0:2.2.15-31.el6.centos will be installed\n---> Package mailcap.noarch 0:2.1.31-2.el6 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n httpd x86_64 2.2.15-31.el6.centos updates 824 k\nInstalling for dependencies:\n apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k\n httpd-tools x86_64 2.2.15-31.el6.centos updates 73 k\n mailcap noarch 2.1.31-2.el6 base 27 k\n\nTransaction Summary\n================================================================================\nInstall 4 Package(s)\n\nTotal download size: 939 k\nInstalled size: 3.1 M\nDownloading Packages:\n--------------------------------------------------------------------------------\nTotal 48 kB/s | 939 kB 00:19 \nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 1/4 \n\r Installing : httpd-tools-2.2.15-31.el6.centos.x86_64 2/4 \n\r Installing : mailcap-2.1.31-2.el6.noarch 3/4 \n\r Installing : httpd-2.2.15-31.el6.centos.x86_64 4/4 \n\r Verifying : httpd-2.2.15-31.el6.centos.x86_64 1/4 \n\r Verifying : mailcap-2.1.31-2.el6.noarch 2/4 \n\r Verifying : httpd-tools-2.2.15-31.el6.centos.x86_64 3/4 \n\r Verifying : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 4/4 \n\nInstalled:\n httpd.x86_64 0:2.2.15-31.el6.centos \n\nDependency Installed:\n apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 \n httpd-tools.x86_64 0:2.2.15-31.el6.centos \n mailcap.noarch 0:2.1.31-2.el6 \n\nComplete!\n" ] }
実行結果が反映される
とりあえずここまで、次回はplaybookを作っていきます
使ってみた感想
今までサーバ構築に使っていたchef(chef-solo)に比べたら最初に用意するもの、学習すべき事がすくないと 感じました、chef-soloの実行にはknife-soloを使っていたのですが、それに相当する事が標準で出来るのも ありがたいなと感じました
2014年 マネジメントについて考えをまとめておく
マネジメントについての考え方をまとめておきます 以下の事を前提としています
- WEBを活用したビジネスを展開している
- マネジメントの対象はSE/PGと商品開発に関わるチーム
- 受託開発ではなく商品を自社で開発しビジネスを行っている会社でのマネジメント
基本的にはマネジメントをしたくないので、マネジメントをしなくても良いようにマネジメントを行って います
基本的には自主的に動いてほしいのです しかしベンチャーで働いているにもかかわらず自主的には動かない人がほとんどです(※僕が見てきた範囲での話ですが) たぶんこれが現実です
そういった中で日々行っているマネジメントでまずは大事にしている事を以下に書きます
- 強制しない事
- 環境を整える事
- アウトプットする事
- 続ける忍耐力
- マネージャーはホスト、PG/SEはお客様
- 八方美人になる
1. 強制しない事
強制的に従わせる事はものすごく簡単な事なんですね、でも自主的に動いてほしいという事と強制するという事は真逆 の行為です、まれに強制的にルールを作る事はありますが基本的には強制はしません
2. 環境を整える
良いツールがあるとします、あれ使いましょうよ!!ではなく聞くまえに環境を用意して試せる場所を用意してしまう ルールなんかの場合はひな形を用意して話し合いがし易い環境を前もって用意します
なにをやるにも一番めんどくさい最初の一歩となるものを用意してあげる事
3. アウトプットする事
アウトプットできる雰囲気を作る為に自分がアウトプットしまくる、強制しない事にも通ずる事ですが強制しない事を 前提にした場合、日々アウトプットしていく事でこうしたほうがいいよ的な事を小出しにして植え付けて行く
また技術的な事などは朝会の時にさり気なく小出しにしていっています
4. 続ける忍耐力
1 〜 3を続ける忍耐力は必要です、強制的にやったほうがましやけど少しづつ植え付けて行くことで文化が根付いていく と信じる心が必要かと思います
5. マネージャーはホスト、PG/SEはお客様
技術系のマネジメントの場合は実際に手を動かすPG/SEはお客様、マネージャーはホスト、いかに気持ちよくコードを 書いてもらえるかを考えて尽くしまくる事が大事
とにかく雑用を行わせない1つの事に集中してもらう環境をつくる
6. 八方美人になる
PG / SEにはクセの強い人が多いので空気を読んで個々に対応していく、自主的に動く事が苦手な人もいる 誰かに指示を出してもらう事でパフォーマンスを発揮する人のいる事を理解しておく事
1日の半分ぐらいがこういった作業で終わってしまいます、なやみは自分がどんどんコードを書けなくなっている事 と今の会社では僕が一番コードを書くのがうまいという事
※実際には大した腕ではないです、勉強会とかにいくといつも自分の腕のなさに愕然としてしまいます
マネジメントの方法については日々情報収集をして考え方を改めていこうと思っていますが今のところこんな感じで 考えています
でわであ
ruby on rails の1人勉強会を開催
第1回
今までは主にPHPを使って開発を行ってきました、巷でrailsについてよく聞いたり見たりするので 勉強も兼ねて前に購入したRuby on Rails チュートリアルを見ながら何か作ってみます
今日は環境構築です
僕はchefを使っているのでローカル環境にrubyの環境がありますので、rubyのinstallは今回書きません rubyはrbenvを使って構築しています
※ tmux とrbenvを併用している場合の注意点
tmux を起動してrubyのバージョンが切り替わって以内現象が発生しました、どうやらパスの問題らしいので 先にここを解決します zshを使っているので.zshrcに以下の記述を追加する
export PATH=$HOME/.rbenv/shims:$PATH
記述する場所が問題で、rubyのパスが書かれているより前に記述します これでtmuxを使ってもrbenvで切り替えたrubyが使えます
railsのinstall
Ruby on Rails チュートリアルに添って以下のコマンドを実行する
gem install rails --version 4.0.5
少し長いですが待ちます 完了したら、以下のコマンドでrailsのバージョンを確認
rails -v Rails 4.0.5
上記が表示されればinstallは完了です
初めてのprojectを作る
適当なディレクトリに移動して以下のコマンドを実行する
rails new [project name]
とりあえず起動してみる
rails new で出来たディレクトリに移動する
rails server => Booting WEBrick => Rails 4.0.5 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2014-06-17 07:52:51] INFO WEBrick 1.3.1 [2014-06-17 07:52:51] INFO ruby 2.0.0 (2013-05-14) [x86_64-darwin12.3.0] [2014-06-17 07:52:51] INFO WEBrick::HTTPServer#start: pid=3013 port=3000
localhostの3000番が起動するのでブラウザからアクセスする
次はこの環境をvagrant でさくっと扱えるようにしてみたいと思います
今日は時間が来たのでここまでです、ではでは
vagrant体験入門に参加しました
vagrant 体験入門に参加しました
ハンズオン形式の勉強会は初めて参加しましたがめっちゃ楽しいですね!!
もくもくと作業をしている場から講師をして頂いた新原さんを通じて会話が生まれて、横にすわっている 方との会話に繋がっていく様はすごくいい場やなーーっと思いました
もちろん会話がメインではないので質問や会話のあとはまたもくもく手を動かします
vargant 体験入門の内容自体は一応業務の開発環境で使っているので知ってる事の方が多かったですが 人にしゃべる事で自分が理解している事が理解できていなかった事に気付かされたり、また知らない事も ありました
知らなかった事
vagrant init box名を入れれる事
vagrant init [box名]
と指定してコマンドを実行するとVagrantfileに指定したbox名が記述されている、知りませんでした 毎回vagrant initしてvagrantfile開いて編集していました
新原さんも言ってましたが公式のdocumentを読みましょー、書いてましたTT
Provisioningにshellを使う
僕は今までProvisioningにchefを使っていました、ちょっとした開発環境を作るのでもchefを使って ました、apacheいれて少し確認したいなーって時にはかなりめんどくさいなーーって感じていました 勉強会でshellを使って見たらそのめんどくささは解消されました
いままで通りproductionの開発にはchefを使おうと思いますが、ちょっとしたものを構築する時はshell を使うように切り替えました
Provisioningにdockerが入った事
これはマジでと思いました、ホンマにDocumentを読もうと思った瞬間でもありますTT Docker本格的に触ってみるかーと思いました
まとめ
2014年にはいってなにかとバタバタして勉強会に来れなかったので、久しぶりに参加してすごく楽しかったです もう少し色々な方と話せればなーっと思いましたがそれは自分の課題ですね
ハンズオンの勉強会ははじてやったけどもくもく手を動かしてわからない所は質問して共有してまたもくもく手を 動かすっていう場所はすごく楽しかった
普段の会社では出来ない事なのでこれからも時間があればどんどんと参加しようと思います
ありがとう御座いました
Git 戻す系の処理を自分の理解の為にまとめてみた
先週Gitでファイルを巻き戻す時にどうするのかを聞かれてうまく説明できなかったので以下に自分がちゃんと 理解していないかを痛感したので自分の為にまとめてみる事にしました
※Gitのinstallや基本的な操作についてはふれません
Gitは以下の3つのファイルの状態を持っています
ワーキングツリー
現在のファイルの状態
インデックス
addした時点のファイルの状態
HEAD
commitした時点の状態
Gitが上記の3つのファイルの状態を持っている事をふまえて一連の流れを書きます
git init
適当なディレクトリを作成しそのディレクトリ内で以下のコマンドを発行する
$ git init
この時点のGitの状態
ファイルを作成する
$ vim index.html <!DOCTYPE HTML> <html lang="jp"> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html>
この時点のGitの状態
ファイルが作成されたのでワーキングツリーの位置が進みます
add する
$ git add index.html
この時点のGitの状態
インデックスの位置が進みます
commit する
$ git commit -m "first commit" [master (root-commit) 9d3f252] first commit 1 file changed, 9 insertions(+) create mode 100644 index.html
この時点のGitの状態
基本的にはpushしてリモートリポジトリに追加して一連の流れとしてはOKかと思います
次はファイルを巻き戻す方法を以下に書いていきたいと思います
修正しているファイルの修正箇所を取り消す
index.htmlを編集する
ワーキングツリーのファイルを修正したのワーキングツリーが1つ進む
修正している箇所を取り消す
ワーキングツリーを戻す
$ git checkout index.html
addを取り消す
index.htmlを修正、add(インデックスに登録する)
addを取り消す
addだけ取り消す
$ git reset HEAD
この状態になる
ワーキングツリーの変更も取り消す
$ git reset --hard HEAD
この状態になる
commit を取り消す
index.htmlを修正して、add, commitをする
commit を取り消す
commit だけを直前に戻す
$ git reset --soft HEAD^
この状態になる
commitとaddを直前に戻す
$ git reset HEAD^
ワーキングツリーも含めて直前に戻す
$ git reset --hard HEAD^
まとめ
HEAD, HEAD^
HEAD
最新のcommitの位置
HEAD^
一つ前のcommitの位置
※commit IDを指定して戻す事も可能
$ git reser [commit id]
--soft, option無し, --hard
--soft
HEADを操作する
option無し
HEAD, indexを操作する
--hard
HEAD, index, ワーキングツリーを操作する
だいぶ頭を整理できましたようするに
git reset [なにを戻すかを指定する] [どの位置まで戻すかを指定する]
って感じですか、間違ってたら教えて下さい
でわでわ
参考にした記事
vagrant1.5.1にアップデートしたらvagrantがうんともすんとも言わなくなったのを解決してみる
とりあえずなにもできない状態、vagrant up、initもできない唯一確認できたのは vagrant -vで確実にバージョン は上がっている事だけは確認できた
$ エラー内容
$ vagrant up
Vagrant failed to initialize at a very early stage:
The plugins failed to load properly. The error message given is
shown below.
undefined method `[]' for nil:NilClass
plugins がなんたらかんたら言うてるのでとりあえず以下のコマンドを実行
$ vagrant plugin
Vagrant is upgrading some internal state for the latest version.
Please do not quit Vagrant at this time. While upgrading, Vagrant
will need to copy all your boxes, so it will use a considerable
amount of disk space. After it is done upgrading, the temporary disk
space will be freed.
/Users/box406/.vagrant.d/gems/gems/vagrant-vbguest-0.9.0/lib/vagrant-vbguest/vagrant_compat.rb:8:in `<top (required)>': undefined method `[]' for nil:NilClass (NoMethodError)
from /Users/box406/.vagrant.d/gems/gems/vagrant-vbguest-0.9.0/lib/vagrant-vbguest.rb:11:in `require'
from /Users/box406/.vagrant.d/gems/gems/vagrant-vbguest-0.9.0/lib/vagrant-vbguest.rb:11:in `<top (required)>'
from /Users/box406/.vagrant.d/Vagrantfile:7:in `require'
from /Users/box406/.vagrant.d/Vagrantfile:7:in `block in <top (required)>'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/v2/loader.rb:37:in `call'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/v2/loader.rb:37:in `load'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/loader.rb:104:in `block (2 levels) in load'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/loader.rb:98:in `each'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/loader.rb:98:in `block in load'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/loader.rb:95:in `each'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/config/loader.rb:95:in `load'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/vagrantfile.rb:28:in `initialize'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/environment.rb:486:in `new'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/environment.rb:486:in `vagrantfile'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/environment.rb:317:in `host'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/environment.rb:168:in `block in action_runner'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/action/runner.rb:36:in `call'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/action/runner.rb:36:in `run'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/environment.rb:304:in `hook'
from /Applications/Vagrant/embedded/gems/gems/vagrant-1.5.1/lib/vagrant/environment.rb:148:in `initialize'
from /Applications/Vagrant/bin/../embedded/gems/gems/vagrant-1.5.1/bin/vagrant:149:in `new'
from /Applications/Vagrant/bin/../embedded/gems/gems/vagrant-1.5.1/bin/vagrant:149:in `<main>'
vagrant-vbguestのバージョンが古いのかなと思い以下のページを参考にしてpluginのアップデートを行った
参考ページ : Vagrant1.2.2から1.3.2にあげたらvagrant-vbguestが動作しない
$ アップデートの手順
グローバルのVagrantfileを編集
$ vim ~/.vagrant.d/Vagrantfile
以下をコメントアウトする
- require 'vagrant-vbguest' unless defined? config.vbguest - config.vbguest.auto_update = false + #require 'vagrant-vbguest' unless defined? config.vbguest + #config.vbguest.auto_update = false
pluginをアップデート
$ vagrant plugin update vagrant-vbguest
僕の場合は以下のpluginがアップデートされました
Updating plugins: vagrant-vbguest. This may take a few minutes... Updated 'sahara' to version '0.0.16'! Updated 'vagrant-vbguest' to version '0.10.0'!
グローバルのVagrantfileを編集
$ vim ~/.vagrant.d/Vagrantfile
以下をコメントアウトとる
- #require 'vagrant-vbguest' unless defined? config.vbguest - #config.vbguest.auto_update = false + require 'vagrant-vbguest' unless defined? config.vbguest + config.vbguest.auto_update = false
アップデート後はvagrant up, initともに正常に動作しています
しかしvagrantをアップデートするたびに絶対に一度動かなくなっているさくっとアップデートはできないものか・・・・
でもこれでvagrant shareが試せるぜーーーー
でわでわ