Chef knif-solo Samba環境構築
chefでSamba環境を自動構築する方法を記載。
VagrantのProvisioner(プロビジョナー)を活用して環境構築を行う。
※本編は、以下のLAMP環境構築が済んでいることが前提となる。
1. Sambaユーザー用のパスワードを生成
* パスワードはshadow passwordの形式で設定する必要がある。
[openssl passwd -1 パスワード] の形式で入力する。
openssl passwd -1 smb_user
2. Sambaのクックブックを作成
* knife-soloを使ってSambaのクックブックを作成する。
chef generate cookbook site-cookbooks/samba
3. Sambaのレシピを作成
* site-cookbooks/samba/recipes/default.rbに以下内容を記述。
ーーーーーーーーーーーーーーーーーーーーーーーーー
package "samba" do
action :install
end
service "smb" do
action [ :enable, :start ]
supports :status => true, :restart => true, :reload => true
end
# Sambaユーザーの作成
user "smb_user" do
comment "smb_user"
home "/home/smb_user"
shell "/bin/bash"
password "シャドウパスワード"
manage_home true
action [:create, :manage]
end
# Sambaサーバーアクセス用ユーザに設定
# pdbedit は -t を指定すると標準入力からパスワードを読み込む
# パスワードは改行区切りで2回出力する
execute 'pdbedit_script' do
command 'echo -e "smb_user\nsmb_user" | pdbedit -a -t -u smb_user'
end
# ApacheのDocumentRootのユーザー権限をSambaユーザーでアクセスできるように、
# nobodyユーザーに変更しておく(※DocumentRootはセキュリティのため、適宜変更のこと!)
execute 'change_authority' do
command 'chown -R nobody:nobody /var/www/html'
end
template "smb.conf" do
path "/etc/samba/smb.conf"
owner "root"
group "root"
mode 0644
notifies :restart, 'service[smb]'
end
ーーーーーーーーーーーーーーーーーーーーーーーーー
4. Sambaのテンプレートを作成
* templatesディレクトを作成する
mkdir -p site-cookbooks/samba/templates/default
* site-cookbooks/samba/templates/default/smb.conf.erb に以下内容を記述。
ーーーーーーーーーーーーーーーーーーーーーーーーー
[global]
# Linux側日本語文字コード
unix charset = UTF-8
# Windows側日本語文字コード
dos charset = CP932
# Linux側日本語文字コード
display charset = UTF-8
workgroup = WORKGROUP
# ログイン時 ユーザー名 & パスワード の認証が必要
security = user
# 内部からのアクセスのみ許可
hosts allow = 192.168. 127.
# (プリンタ共有無効化)※Sambaでプリンタを共有しない場合
load printers = no
# (プリンタ共有無効化)※Sambaでプリンタを共有しない場合
disable spoolss = yes
[public]
comment = Public Stuff
path = /var/www/html
public = no
writable = yes
only guest = yes
ーーーーーーーーーーーーーーーーーーーーーーーーー
5. Berksfileにsambaを追記
* Berksfileに以下一文を追加しておく。
cookbook "samba", path: "./site-cookbooks/samba"
6. プロビジョニングを再実行
berks vendor ./cookbooks
7. Vagrantfileにsambaを追記
* sambaクックブックを実行するようにVagrantfileを編集する。
ーーーーーーーーーーーーーーーーーーーーーーーーー
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "opscode-centos-7.2"
config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.2_chef-provisionerless.box"
# IPアドレスの設定
config.vm.network :private_network, ip: "192.168.33.15"
# vagrant-omnibusの有効化
config.omnibus.chef_version = :latest
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["./cookbooks", "./site-cookbooks"]
chef.run_list = %w[
recipe[yum-epel]
recipe[apache]
recipe[php-env::php72]
recipe[mysql]
recipe[package]
recipe[samba]
]
end
end
ーーーーーーーーーーーーーーーーーーーーーーーーー
8. 仮想サーバの起動とプロビジョニングを実行
vagrant up --provision