Chef ClientだけでNginxをインストールして起動するまでの最小限の流れ
Chef DKのインストールはしない。
当然 chef generate
や knife cookbook create
も使わない。
Chef ClientだけでNginxをインストールして起動までやる。
今回はAmazon Linux 2のEC2インスタンスを用意した。
まずはChef Clientのインストール。
$ sudo yum update -y $ wget https://packages.chef.io/files/stable/chef/13.7.16/el/7/chef-13.7.16-1.el7.x86_64.rpm $ sudo rpm -ivh chef-13.7.16-1.el7.x86_64.rpm $ chef-client --version $ rm chef-13.7.16-1.el7.x86_64.rpm
Chef Clientのインストールが終わったらRecipeを手動で作っていく。
先にディレクトリを準備。
$ mkdir chef-example-repository $ cd chef-example-repository $ mkdir -p cookbooks/nginx/recipes $ mkdir roles
Roleの作成。
$ vim roles/web.json
こんな感じで記述。
{ "run_list": [ "recipe[nginx]" ] }
Recipeの作成。
$ vim cookbooks/nginx/recipes/default.rb
Amazon Linux 2は最初の状態だとNginxがyumでインストールできない。
なので、ここでは bash
リソースを使って code
に直接コマンドを書く。
bash 'install nginx' do code 'sudo amazon-linux-extras install nginx1.12' not_if { File.exists?("/usr/sbin/nginx") } end bash 'start nginx' do code <<-EOC sudo systemctl start nginx.service sudo systemctl enable nginx.service EOC end
作成できたら --why-run
で実行内容を確認して、問題なければ実行。
$ chef-client -z -j roles/web.json --why-run $ chef-client -z -j roles/web.json
Nginxの起動を確認できればOK。
$ systemctl status nginx.service
$ systemctl is-enabled nginx.service