Created
June 21, 2013 01:34
-
-
Save keokent/5828241 to your computer and use it in GitHub Desktop.
Nginx,MySQLの設定、起動のManifestを書いた
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
puppet manifestを書いていくどん | |
app002の/home/keoken/sample_app_puppet/sample_app_manifest.ppに | |
manifestを書いていく | |
もろもろのインストール | |
sample_app_manifest.pp | |
-------------------------------------------- | |
package { | |
[ | |
'zsh', | |
'emacs', | |
'nginx', | |
'mysql-server', | |
'mysql-devel', | |
'gcc', | |
'gcc-c++', | |
'make', | |
'openssl', | |
'openssl-devel', | |
'libxml2-devel', | |
'libxslt-devel', | |
]: | |
ensure => insta | |
-------------------------------------------- | |
puppet applyを実行してみる | |
[keoken@app002 sample_app_puppet]$ sudo puppet apply sample_app_manifest.pp | |
[sudo] password for keoken: | |
Notice: /Stage[main]//Package[make]/ensure: created | |
Notice: /Stage[main]//Package[gcc-c++]/ensure: created | |
Notice: /Stage[main]//Package[openssl-devel]/ensure: created | |
Notice: /Stage[main]//Package[nginx]/ensure: created | |
Notice: /Stage[main]//Package[libxslt-devel]/ensure: created | |
Notice: /Stage[main]//Package[mysql-server]/ensure: created | |
Notice: /Stage[main]//Package[mysql-devel]/ensure: created | |
Notice: /Stage[main]//Package[zsh]/ensure: created | |
Notice: Finished catalog run in 164.61 seconds | |
入ったっぽい | |
serverspecでテストしてみる | |
~/rails_projects/sample_app_puppet | |
% ASK_SUDO_PASSWORD=1 ASK_LOGIN_PASSWORD=1 bundle exec rspec spec/app002.keoken.pb | |
Enter sudo password: | |
User: | |
keoken | |
Enter login password: | |
FFFFFFF.FFF.FFF | |
・ | |
・ | |
・ | |
Finished in 9.25 seconds | |
15 examples, 13 failures | |
Failed examples: | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:4 # Group "appuser" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:5 # Group "appuser" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:11 # User "appuser" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:12 # User "appuser" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:13 # User "appuser" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:14 # User "appuser" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:18 # File "/home/appuser/sample_app/tmp/sockets/.unicorn.sock" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:26 # Service "nginx" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:27 # Service "nginx" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:31 # Port "80" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:39 # Service "mysqld" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:40 # Service "mysqld" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:44 # Port "3306" | |
appuserいないじゃないか、nginx動いてないぞとか言われてる | |
appuserを追加する | |
sample_app_manifest.pp | |
-------------------------------------------- | |
・ | |
・ | |
user { 'appuser': | |
ensure => present, | |
uid => 1000, | |
gid => appuser, | |
comment => 'appuser', | |
home => '/home/appuser', | |
managehome => ture, | |
shell => '/bin/bash' | |
} | |
group { 'appuser': | |
ensure => present, | |
gid => 1000, | |
} | |
-------------------------------------------- | |
実行する | |
[keoken@app002 sample_app_puppet]$ puppet apply sample_app_manifest.pp | |
Error: Could not prefetch package provider 'yum': The yum provider can only be used as root | |
Error: Could not find a suitable provider for group | |
Error: Could not find a suitable provider for user | |
Notice: Finished catalog run in 0.99 seconds sudoじゃなかったから怒られた | |
[keoken@app002 sample_app_puppet]$ emacs sample_app_manifest.pp | |
[keoken@app002 sample_app_puppet]$ sudo puppet apply sample_app_manifest.pp | |
[sudo] password for keoken: | |
Notice: /Stage[main]//Group[appuser]/ensure: created | |
Notice: /Stage[main]//User[appuser]/ensure: created | |
Notice: Finished catalog run in 0.83 seconds | |
ユーザとグループ作れたっぽい | |
serverspecでテストするどん | |
~/rails_projects/sample_app_puppet | |
% ASK_SUDO_PASSWORD=1 ASK_LOGIN_PASSWORD=1 bundle exec rspec spec/app002.keoken.pb | |
Enter sudo password: | |
User: | |
keoken | |
Enter login password: | |
......F.FFF.FFF | |
・ | |
・ | |
Finished in 7.25 seconds | |
15 examples, 7 failures 減った! | |
Failed examples: | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:18 # File "/home/appuser/sample_app/tmp/sockets/.unicorn.sock" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:26 # Service "nginx" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:27 # Service "nginx" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:31 # Port "80" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:39 # Service "mysqld" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:40 # Service "mysqld" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:44 # Port "3306" | |
設定ファイルとか書いて起動させていく | |
sample_app_manifest.pp | |
-------------------------------------------- | |
・ | |
・ | |
service { 'nginx': | |
enable => true, | |
ensure => running, | |
hasrestart => true, | |
require =>Package['nginx'], | |
} | |
file { '/etc/my.conf': | |
content => "character-set-server = utf8", | |
} | |
service { 'mysqld': | |
enable => true, | |
ensure => running, | |
hasrestart => true, | |
require => Package['mysql-server'], | |
} | |
-------------------------------------------- | |
puppet applyを実行する | |
[keoken@app002 sample_app_puppet]$ sudo puppet apply sample_app_manifest.pp | |
Notice: /Stage[main]//File[/etc/my.conf]/ensure: defined content as '{md5}8e571b6907a60df7fc66ffce39105e8d' | |
Notice: /Stage[main]//Service[nginx]/ensure: ensure changed 'stopped' to 'running' | |
Notice: /Stage[main]//Service[mysqld]/ensure: ensure changed 'stopped' to 'running' | |
Notice: Finished catalog run in 5.52 seconds できたっ | |
serverspecでテストするどん | |
~/rails_projects/sample_app_puppet | |
% ASK_SUDO_PASSWORD=1 ASK_LOGIN_PASSWORD=1 bundle exec rspec spec/app002.keoken.pb (git)-[master] | |
Enter sudo password: | |
User: | |
keoken | |
Enter login password: | |
......F........ | |
・ | |
・ | |
Finished in 6.84 seconds | |
15 examples, 1 failure | |
Failed examples: | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:18 # File "/home/appuser/sample_app/tmp/sockets/.unicorn.sock" | |
とりあえず、Nginx MySQLは起動している | |
serverspecのテスト内容が全然足りてない・・・ | |
manifest書きながらテスト内容を更新していく | |
テスト内容の更新 nginxの設定をテスト | |
describe file('/etc/nginx/nginx.conf') do | |
it { should contain 'user nginx nginx;' } | |
it { should contain 'server unix:/home/appuser/sample_app/tmp/sockets/.unicorn.sock fail_timeout=0;' } | |
it { should contain('root /home/appuser/sample_app/public;').from(/^\s+server {/).to(/^\s+location @app/) } | |
end | |
serverspecでテストするどん | |
~/rails_projects/sample_app_puppet | |
% ASK_SUDO_PASSWORD=1 ASK_LOGIN_PASSWORD=1 bundle exec rspec spec/app002.keoken.pb | |
......F....FFF.... | |
・ | |
・ | |
・ | |
Finished in 6.44 seconds | |
18 examples, 4 failures Fが多くなった | |
Failed examples: | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:18 # File "/home/appuser/sample_app/tmp/sockets/.unicorn.sock" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:35 # File "/etc/nginx/nginx.conf" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:36 # File "/etc/nginx/nginx.conf" | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:37 # File "/etc/nginx/nginx.conf" | |
nginx.confに関するテストが落ちた | |
sample_app_manifest.pp | |
-------------------------------------------- | |
・ | |
・ | |
file { '/etc/nginx/nginx.conf': | |
owner => 'root', | |
group => 'root', | |
mode => '0644', | |
content => template('nginx.conf'), | |
require => Package['nginx'], | |
notify => Service['nginx'], | |
} | |
-------------------------------------------- | |
Nginxの設定ファイルをテンプレートでロードする。 | |
テンプレートのnginx.confはapp001のものをそのまま持ってきた | |
[keoken@app002]~/sample_app_puppet% sudo puppet apply --templatedir=. sample_app_manifest.pp *--templatedir= でテンプレートファイルの位置を指定 今回はmanifestファイルと同じディレクトリ内なので「.」とする | |
Notice: /Stage[main]//File[/etc/nginx/nginx.conf]/content: content changed '{md5}d9dfc198c249bb4ac341198a752b9458' to '{md5}9db2b2f98436cb671d5670954d5c1141' | |
Notice: /Stage[main]//Service[nginx]: Triggered 'refresh' from 1 events | |
Notice: Finished catalog run in 4.24 seconds | |
serverspecでテストするどん | |
~/rails_projects/sample_app_puppet | |
% ASK_SUDO_PASSWORD=1 ASK_LOGIN_PASSWORD=1 bundle exec rspec spec/app002.keoken.pb | |
......F........... | |
・ | |
・ | |
Finished in 8.18 seconds 減った! | |
18 examples, 1 failure | |
Failed examples: | |
rspec ./spec/app002.keoken.pb/sample_app_spec.rb:18 # File "/home/appuser/sample_app/tmp/sockets/.unicorn.sock" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
テストが足らないって気がついてるのはよい感じ 🍣