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…