読者です 読者をやめる 読者になる 読者になる

Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Chef

Chef, Puppet, Ansible, Itamae。プロビジョニングツールの情勢調査

プロビジョニングツール(Chef, Puppet, Ansible, Itamae)の情勢調査をしてみます。 2016/01/13 時点での StackShare, Qiita, Stack Overflow, Stack Overflow(JP)を対象に調査してみます。 ※各リンク先は表示した時点の件数が表示されるので、この記事に記…

Chef | Role

概要 Role 詳細 RoleにはNode間にまたがる設定を保存する。 0〜n個のAttributesとrun listを設定可能です。 RoleはNodeで指定可能です。 フォーマット RubyのDSL、JSONの2パターンの記述方法を利用可能 参照 http://docs.opscode.com/essentials_roles.html …

Chef | Data Bag

概要 Data Bag 詳細 Data Bagはグローバルなドメインに属するデータを管理する。 代表的な例がユーザーデータです。 Attributeは各Resourceの属性情報を保存するが、その点が異なる。詳細な利用方法については下記記事参照 data bagで各cookbookに依存しない…

Chef | Attribute

概要 Attribute 詳細 Attributeについて。AttributeはノードやResourceの属性で、固定的ではないものを定義するもの。 例えば、インストール対象のバージョンや設定値など。 DataBagはユーザー等、ノードやResourceに縛られないものを定義する点で異なる。At…

Chef | definitionの利用により独自定義のresourceを作成する

概要 definitionの利用により独自定義のresourceを作成する 詳細 definitionの利用により独自定義のresourceを作成します。 tar resourceを定義してみる definitions/tar.rb # encoding: utf-8 define :tar, :extract => false, :compress_name => "sample.t…

Chef | resources | execute と script と bashの違いを知るためにオープンソースのコードリーディングをする

概要 execute と script と bashの違いを知るためにオープンソースのコードリーディングをする 詳細 execute と script と bashの違いを知るためにオープンソースのコードリーディングをする ※他の言語系リソースもbash resourceと同様です(Csh, Ruby, Pytho…

Chef | 1つのcookbookで複数のrecipeを作成する場合

概要 1つのcookbookで複数のrecipeを作成する場合 詳細 例えばmysqlをインストールするレシピがあるとして、・default.rbのレシピには本体のインストール ・config.rbのレシピには設定情報のカスタマイズなどという風に分けておくと本体はインストールしたい…

Chef | resources | rubyで任意のスクリプトを実行

概要 rubyで任意のスクリプトを実行 詳細 rubyで任意のスクリプトを実行します。 ※冪統性の保証を自分で行う必要がある。 ruby "some name" do # options end 詳細については公式サイトリンクを参照。 http://docs.opscode.com/chef/resources.html#ruby サ…

Chef | run_list

概要 run_list 詳細 run_listについて 記述法 { "run_list" :[ "nginx", "mysql", "some" ] } nginx, mysql, someのデフォルトのレシピが実行されます。 { "run_list" :[ "nginx::default", "mysql", "some", "some::some_recipe" ] } nginx, mysql, someの…

Chef | User,Groupの作成

概要 User,Groupの作成 詳細 User,Groupの作成を実行します。 user "user name" do # options end group "group name" do # options end 詳細については公式サイトリンクを参照。 http://docs.opscode.com/chef/resources.html#user http://docs.opscode.com…

Chef | resources | Executeで任意のスクリプトをroot権限で実行

概要 Executeで任意のスクリプトをroot権限で実行 詳細 Executeで任意のスクリプトをroot権限で実行します。 ※他のリソースで可能なことは他のリソースで行うこと。 executeやbashコマンドは何でも出来る反面、冪統性の保証を自分で行う必要がある。 execute…

Chef | Subscribeで他のリソースをトリガーに任意のアクションを実行する

概要 Subscribeで他のリソースをトリガーに任意のアクションを実行する 詳細 Subscribeで他のリソースをトリガーに任意のアクションを実行します。 resource "some_resource" do # options subscribes :action, "target_resource" end 詳細については公式サ…

Chef | Notificationで他のリソースに対して任意のアクションをトリガーする

概要 Notificationで他のリソースに対して任意のアクションをトリガーする 詳細 Notificationで他のリソースに対して任意のアクションをトリガーします。 resource "some_resource" do # options notifies :action, "target_resource" end よく利用するシチ…

Chef | Ohaiでサーバー情報の収集

概要 Ohaiでサーバー情報の収集 詳細 Ohaiでサーバー情報の収集をする。OhaiはChefのnode情報収集用に作成されたgemですが、単独で利用可能です。 ・Chef内ではデータ収集を行い、nodeに情報を格納している。 node[:platform]等で取得して、レシピ内で利用可…

Chef | Resource | gem_packageでgemパッケージのインストール

概要 gem_packageでgemパッケージのインストール 詳細 gem_packageでgemパッケージのインストールをします。基本構文は gem_package "package_name" do # attributes end オプション等、詳細については公式サイトリンクを参照。 http://docs.opscode.com/che…

Chef | resources | Packageで環境に合わせたパッケージのインストール

概要 Packageで環境に合わせたパッケージのインストール 詳細 Packageで環境に合わせたパッケージのインストールをします。Packageは Redhat系ならyum Debian系ならapt-get など、プラットフォームに合わせてパッケージをインストールしてくれます。基本構文…

Chef | Templateで設定ファイルにNodeごとに異なる値を設定する

概要 Templateで設定ファイルにNodeごとに異なる値を設定する 詳細 Templateで設定ファイルにNodeごとに異なる値を設定します サンプル 仕様 ・vagrantで作成したUbuntu1204環境内でlocalhostへのプロビジョニング ・sublime_sunippetterのgemをインストール…

Chef | 冪等性(べきとうせい) idempotence

概要 冪等性(べきとうせい) idempotence 詳細 冪等性(べきとうせい) idempotenceとは何回行っても実行後の状態が変わらないこと。 Cookbookの作成時に重要な概念。例えば.bashrcなどへの設定時に単純にappendするようにrecipeを書いてしまうと冪等性を保てな…

Chef | cookbook | virtualbox向けcookbookの作成

概要 virtualbox向けcookbookの作成 詳細 virtualbox向けcookbookの作成をします。 VagrantからChefを使ってUbuntuにVirtualBoxをインストールします。 手順 # kitchenの作成 mkdir virtualbox cd virtualbox knife solo init . # Vagrantfile生成 vagrant i…

Chef | cookbook | vagrant向けcookbookの作成

概要 vagrant向けcookbookの作成 詳細 vagrant向けcookbookの作成をします。 VagrantからChefを使ってUbuntuにVagrantをインストールします。 手順 # kitchenの作成 mkdir vagrant cd vagrant knife solo init . # Vagrantfile生成 vagrant init # Vagrantfi…

Chef | cookbook | Ubuntu1204環境のdesktopのインストールをするcookbook

概要 Ubuntu1204環境のdesktopのインストールをするcookbook 詳細 Ubuntu1204環境のdesktopのインストールをするcookbookを作成します。 手順 # kitchenの作成 mkdir ubuntu_desktop_cookbook cd ubuntu_desktop_cookbook knife solo init . # Vagrantfile生…

Chef | cookbook | opscodeのphantomjs cookbookを利用してphantomjsをインストール + シンボリックリンクを作成

概要 opscodeのphantomjs cookbookを利用してphantomjsをインストール後に、シンボリックリンクを作成 詳細 opscodeのphantomjs cookbookを利用してphantomjsをインストール後に、シンボリックリンクを作成します。 http://community.opscode.com/cookbooks/…

Chef | cookbook | sudo権限付与用のcookbookの作成

概要 sudo権限付与用のcookbookの作成 詳細 sudo権限付与用のcookbookを作成します。 opscodeのsudo cookbookを利用します。 http://community.opscode.com/cookbooks/sudo 手順 # kitchenの作成 mkdir grant_sudo cd grant_sudo knife solo init . # Vagran…

Chef | resources | remote_fileで外部ロケーションからファイルを取得

概要 remote_fileで外部ロケーションからファイルを取得 詳細 remote_fileで外部ロケーションからファイルを取得します。 例 jenkins.war(1.509.4)をダウンロードする remote_file "/home/vagrant/jenkins.war" do source "http://updates.jenkins-ci.org/…

Chef | cookbook | sqlite向けcookbookの作成

概要 sqlite向けcookbookの作成 詳細 sqlite向けcookbookの作成をします。 手順 # kitchenの作成 mkdir sqlite cd sqlite knife solo init . # Vagrantfile生成 vagrant init # Vagrantfile編集 ※詳細は後述 vi Vagrantfile # cookbookのテンプレート生成 kn…

Chef | cookbook | mysql向けcookbookの作成

概要 mysql向けcookbookの作成 詳細 mysql向けcookbookの作成をします。 手順 # kitchenの作成 mkdir mysql cd mysql knife solo init . # Vagrantfile生成 vagrant init # Vagrantfile編集 ※詳細は後述 vi Vagrantfile # cookbookのテンプレート生成 knife …

Chef | resources | linkでリンクの作成

概要 linkでリンクの作成 詳細 linkでリンクの作成をします。 例 /usr/bin/bundleに/opt/rbenv/shims/bundleを参照するシンボリックリンクを作成 ※link_typeを省略するとシンボリックリンクになる link "/usr/bin/bundle" do to "/opt/rbenv/shims/bundle" e…

Chef | RiotGamesのrbenv cookbookを利用する際に、自分が所属しているネットワークでgitプロトコルが使えない場合

概要 RiotGamesのrbenv cookbookを利用する際に、自分が所属しているネットワークでgitプロトコルが使えない場合 詳細 RiotGamesのrbenv cookbookを利用する際に、自分が所属しているネットワークでgitプロトコルが使えない場合について。 社内のセキュリテ…

Chef | libraryでChefのロジックを再利用

概要 libraryでChefのロジックを再利用 詳細 libraryでChefのロジックを再利用します。・libraryはcookbookのlibraries/library_name.rbに作成することで、自動的に読み込まれ全てのレシピで利用可能になります。 ・ループ処理、ファイル処理、ヘルパー等、…

Chef | resources | bashでbashコマンドの実行

概要 bashでbashコマンドの実行 詳細 bashでbashコマンドの実行をします。 Chefで提供されている機能では出来ないことがある場合などに利用します。 例 .bash_profileにエイリアスを追記して再読込 home = "/home/user_name" bash "insert_line" do user "ro…

Chef | resources | gitでgitリポジトリの操作

概要 gitでgitリポジトリの操作 詳細 gitでgitリポジトリの操作をします。 例 GitHubからRbenvを/home/user_name/.rbenvに取得 git "/home/user_name/.rbenv" do # git protocolでもよい repository "https://github.com/sstephenson/rbenv.git" reference "…

Chef | timezoneの設定用cookbookの作成

概要 timezoneの設定用cookbookの作成 詳細 timezoneの設定のためのcookbookを作成します。 cookbook /files/default/timezone Asia/Tokyo /library/helper.rb class Chef class Recipe def execute_with_log(name, &block) log "start #{name}" block.call …

Chef | cookbook | Rbenv+Ruby2.0.0-p247+Bundler環境の作成

概要 Rbenv+Ruby2.0.0-p247+Bundler環境の作成 詳細 Rbenv+Ruby2.0.0-p247+Bundler環境の作成 手順 ※各種ファイルの詳細については後述 # Kitchenの作成 mkdir rbenv_ruby_berkshelf cd rbenv_ruby_berkshelf # Kitchen初期化 knife solo init . # Vagrantfi…

Chef | cookbook | jenkins-tomcat update(ver1.509.4) Cookbookの作成

概要 jenkins-tomcat update(ver1.509.4) Cookbookの作成 詳細 jenkins-tomcat update(ver1.509.4) Cookbookを作成します。 仕様 jenkins-tomcatの環境構築については下記に基づいて行っておく。 その上で後述の内容でjenkins_tomcat_update cookbookをsite-…

Chef | cookbook | jenkins-tomcat Cookbookの作成

概要 jenkins-tomcat Cookbookの作成 詳細 jenkins-tomcat Cookbookを作成します。 仕様 基本的には下記記事の手動セットアップをChef + Vagrantに置き換えただけです。jenkins-tomcatでTomcat+Jenkins環境を構築する http://d.hatena.ne.jp/tbpg/20131105/1…

Chef | resources | directoryでディレクトリ操作

概要 directoryでディレクトリ操作 詳細 directoryでディレクトリ操作をします。 例 ディレクトリの作成 /home/user_nameにhogeディレクトリをroot/rootで作成 directory /home/user_name/hoge do owner 'root' group 'root' action :create end ディレクト…

Chef | resources | serviceでサービスの操作

概要 serviceでサービスの操作 詳細 serviceでサービスを操作します。 例 サービスの起動 service "tomcat6" do action :start end サービスの停止 service "tomcat6" do action :stop end サービスの再起動 service "tomcat6" do action :restart end 参照 …

Chef | resources | fileでファイルの操作

概要 fileでファイルの操作 詳細 fileでファイルの操作をします。 ファイルの追加、削除、touch、権限の設定などが可能です。 例 ファイルの作成 file "/tmp/hoge.txt" do owner "root" group "root" mode "0755" action :create end ファイルの作成(ファイ…

Chef | cookbook作成のワークフロー

概要 cookbook作成のワークフロー 詳細 cookbook作成のワークフローについて。 現時点でのcookbook作成のワークフローをまとめます。 ※まだ10日程度前にさわり始めたばかりなので、いろいろ覚えたら改善していくと思います 前提 vagrantの利用 sahara,vagran…

Chef | cookbook_fileでファイルを配置

概要 cookbook_fileでファイルを配置 詳細 cookbook_fileでファイルを配置します。%kitchen%site-cookbooks/some_book/files/default 上記フォルダ配下においたファイルをレシピ内で指定することで 該当ファイルをVMにコピー出来ます。 手順 $ mkdir use_coo…

Chef | 自作CookbookをGitHubに公開し、berkshelfで再利用する

概要 自作CookbookをGitHubに公開し、berkshelfで再利用する 詳細 自作CookbookをGitHubに公開し、berkshelfで再利用します。下記記事で作成したbash_profileを設定するためのクックブックをGitHubに登録しました。 cookbook_fileでファイルを配置 http://d.…

Chef | data bagで各cookbookに依存しない変数を作成

概要 data bagで各cookbookに依存しない変数を作成 詳細 data bagで各cookbookに依存しない変数を作成します。 手順 $ mkdir data_bag $ cd data_bag $ vagrant init $ vi Vagrantfile # 編集内容は後述 # キッチン作成 $ knife solo init . Creating kitche…

Chef | Chefの特徴と構成

概要 Chefの特徴と構成 詳細 Chefの特徴と構成について 特徴 ・ITインフラストラクチャをコードで定義出来る ・環境がテスト可能になる ・環境がバージョン管理可能になる ・環境が再利用可能になる ・アジャイルなプロセスの一部になる ・CookbookやRecipe…

Vagrant | Jenkins環境をserverspecを利用したテストファーストで構築

概要 Jenkins環境を構築 詳細 Jenkins環境を構築します。 gitも一緒にインストールします。 設定手順 前提 利用plugin vagrant-berkshelf sahara vagrant-omnibusOS:Ubuntu1204 Servertest: serverspecChef Solo,Knife Soloを利用して作成します。 serversp…

Chef | Knife solo cookでターゲットサーバーでChefのCookbookを実行

概要 Knife solo cookでターゲットサーバーでChefのCookbookを実行 詳細 Knife solo cookでターゲットサーバーでChefのCookbookを実行します。コマンドは knife solo cook server_nameです。 これでレシピの内容を実行してサーバーの設定を行います。 参照 h…

Chef | Windows7環境にgem版のChefをインストール

概要 Windows7環境にgem版のChefをインストール 詳細 Windows7環境にgem版のChefをインストールを行います。 インストール手順 Chefのインストール gem install chef --no-ri --no-rdoc -v 11.6.0 動作確認 chef-solo -v 補足1 下記のエラーが出る場合はruby…

Vagrant | Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストールする(ホストはWindows7,ゲストはUbuntu1204,ProviderはVirtualBox)

概要 Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストール 詳細 Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストールします。 ホストはWindows7 ゲストはUbuntu1204 ProviderはVirtualBox 前提1 Ubuntu1204の仮想環境はvagrantにて…

Chef | Knife solo bootstrapでターゲットサーバーにChef SoloをインストールしてCookbookを実行

概要 Knife solo bootstrapでターゲットサーバーにChef SoloをインストールしてCookbookを実行 詳細 Knife solo bootstrapでターゲットサーバーにChef SoloをインストールしてCookbookを実行します。コマンドは knife solo bootstrap server_nameです。 これ…

Chef | Knife solo prepareでターゲットサーバーにChef Soloをインストール

概要 Knife solo prepareでターゲットサーバーにChef Soloをインストール 詳細 Knife solo prepareでターゲットサーバーにChef Soloをインストールします。 接続にはSSHを利用します。コマンドは knife solo prepare server_nameです。オプションについては…

Chef | Knife solo initでKitchenのテンプレートを生成

概要 Knife solo initでKitchenのテンプレートを生成 詳細 Knife solo initでKitchenのテンプレートを生成します。 KitchenはChefのレシピを書くためのリポジトリです。コマンドは knife solo init kitchen_nameです。すでにKitchenとなるフォルダが作成済み…