{"id":4820,"date":"2014-12-08T09:30:59","date_gmt":"2014-12-08T00:30:59","guid":{"rendered":"http:\/\/www.vincentina.net\/?p=4820"},"modified":"2014-12-07T20:37:36","modified_gmt":"2014-12-07T11:37:36","slug":"docker-chef-%e3%81%a7%e6%a5%bd%e3%80%85%e7%92%b0%e5%a2%83%e4%bd%9c%e3%82%8a","status":"publish","type":"post","link":"https:\/\/www.vincentina.net\/?p=4820","title":{"rendered":"Docker + Chef \u3067\u697d\u3005\u74b0\u5883\u4f5c\u308a"},"content":{"rendered":"<p>\u590f\u9803\u306bDocker\u30b3\u30f3\u30c6\u30ca\u3068\u3044\u3046\u30d9\u30fc\u30bf\u7248\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u306f\u305a\u3067\u3059\u304c<br \/>\n\u305d\u308c\u3068\u306f\u9055\u3044\u3001Chef-solo\u3092\u30ad\u30c3\u30af\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n<p>\u305d\u3093\u306a\u7d20\u6674\u3089\u3057\u3044\u624b\u6cd5\u3092\u7d39\u4ecb\u3057\u3066\u3044\u305f\u53c2\u8003\u30b5\u30a4\u30c8\u3002<br \/>\n<a href=\"http:\/\/dev.classmethod.jp\/server-side\/docker-provisioning-use-chef\/\" target=\"_blank\">Docker\u30a4\u30e1\u30fc\u30b8\u3092chef-solo\u3067\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b <\/a>\uff5c Developers.IO:<\/p>\n<p>\u3053\u3046\u3044\u3046\u4e8b\u304c\u767a\u898b\uff06\u5b9f\u884c\u3067\u304d\u308b\u4eba\u304c\u3046\u3089\u3084\u307e\u3057\u3044\u3067\u3059\u305e\u3002<\/p>\n<p>\u307e\u305a\u6700\u521d\u306e\u76ee\u7684\u306fSinatra\u306e\u74b0\u5883\u3092\u3055\u304f\u3063\u3068\u4f5c\u3063\u3061\u3083\u3046\u4e8b\u3067\u3059\u3002\u524d\u56de\u306f\u624b\u4f5c\u696d\u3067\u4f5c\u3063\u3066\u9014\u4e2d\u3067Docker\u30b3\u30f3\u30c6\u30ca\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3066\u304a\u3051\u3070\u3044\u3064\u3067\u3082\u305d\u3053\u304b\u3089\u51fa\u6765\u308b\uff01\u3063\u3068\u304b\u8a00\u3063\u3066\u307e\u3057\u305f\u304c\u3001\u51fa\u6765\u4e0a\u304c\u3063\u3066\u304b\u3089\u8003\u3048\u308b\u3068\u3001\u3081\u3093\u3069\u304f\u3055\u3044\u3063\u3061\u3085\u3046\u306e\uff06\u7ba1\u7406\u304c\u5927\u5909\u3060\u3063\u3061\u3085\u3046\u306e\u3002<\/p>\n<p>Chef\u3067\u7ba1\u7406\u3057\u305f\u65b9\u304c\u3044\u3044\u3067\u3057\u3087\u3046\u3002\u3068\u3044\u3046\u306e\u3082\u6700\u8fd1\u30b3\u30fc\u30c9\u5316\u3092\u3061\u3087\u3053\u3063\u3068\u3084\u3063\u305f\u5f71\u97ff\u3082\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u3002<br \/>\n\u30b3\u30f3\u30c6\u30ca\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3066\u3044\u304f\u306e\u3082\u3044\u3064\u3067\u3082\u4f7f\u3044\u305f\u3044\u6642\u306b\u9b3c\u901f\u3067\u8d77\u52d5\u3067\u304d\u308b\u3068\u3044\u3046\u30e1\u30ea\u30c3\u30c8\u306f\u3042\u308b\u306b\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u4e2d\u306e\u69cb\u6210\u306f\u30cf\u30c3\u30ad\u30ea\u8a00\u3046\u3066\u6642\u9593\u306e\u7d4c\u904e\u3068\u3068\u3082\u306b\u5206\u304b\u308a\u307e\u305b\u3093\u306b\u306a\u3063\u3066\u3044\u304f\u3002<\/p>\n<p>\u3066\u306a\u308f\u3051\u3067\u3001\u3044\u308f\u3086\u308b\u30b3\u30fc\u30c9\u5316\u3092\u3084\u308b\u3063\u3061\u3085\u3046\u306e\u3002<\/p>\n<p>Redmine\u306eDockerfile\u3092\u904e\u53bb\u306b\u4f5c\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c<\/p>\n<h3 class=\"entry-title\"><a title=\"redmine\u306eDockerfile\u304c\u3084\u3063\u3068\u3067\u304d\u305f\" href=\"http:\/\/www.vincentina.net\/?p=4380\" target=\"_blank\">redmine\u306eDockerfile\u304c\u3084\u3063\u3068\u3067\u304d\u305f<\/a><\/h3>\n<p>Dockerfile\u3067\u9032\u3081\u3066\u3082\u3044\u3044\u3093\u3067\u3059\u304c\u3001\u307e\u3041\u904e\u53bb\u306e\u4e8b\u306f\u7f6e\u3044\u3068\u3044\u3066\u3053\u3053\u6570\u65e5\u306e\u6d41\u308c\u304b\u3089\u305b\u3063\u304b\u304f\u3060\u3057Ruby\u3067\u884c\u3053\u3046\u305c\u3068\u3002\u697d\u3057\u3044\u3057\u3002\u3068\u8a00\u3046\u3053\u3068\u3067\u3059\u3002<\/p>\n<p>\u307e\u305a\u306f\u539f\u7406\u3092\u77e5\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30ec\u30b7\u30d4\u306f\u5358\u306bApache\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3060\u3051\u306e\u3082\u306e\u3067\u3059\u3002<br \/>\nChef\u3092\u89e6\u308b\u306e\u306f\u3061\u3087\u3063\u3068\u4e45\u3057\u632f\u308a\u306a\u306e\u3067\u30ea\u30cf\u30d3\u30ea\u3082\u517c\u306d\u3066\u3067\u3059\u3002<br \/>\n\u30db\u30b9\u30c8\u30b5\u30fc\u30d0\u30fc\u306fruby gem chef knife-solo\u304c\u4f7f\u3048\u308b\u74b0\u5883\u3063\u3066\u4e8b\u3067\u6700\u521d\u306f\u7701\u7565\u3059\u308b\u306a\u308a\u3002<\/p>\n<p>\u30c4\u30ea\u30fc\u306f\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>$ tree<br \/>\n.<br \/>\n\u251c\u2500\u2500 Dockerfile<br \/>\n\u2514\u2500\u2500 chef-repo<br \/>\n\u251c\u2500\u2500 cookbooks<br \/>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 apache<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 CHANGELOG.md<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 README.md<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 attributes<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 definitions<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 files<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 default<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 libraries<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 metadata.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 providers<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 recipes<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 default.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 resources<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 templates<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 default<br \/>\n\u251c\u2500\u2500 data_bags<br \/>\n\u251c\u2500\u2500 environments<br \/>\n\u251c\u2500\u2500 nodes<br \/>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 docker.json<br \/>\n\u251c\u2500\u2500 roles<br \/>\n\u251c\u2500\u2500 site-cookbooks<br \/>\n\u2514\u2500\u2500 solo.rb<\/p>\n<p>\u624b\u629c\u304d\u3067\u306f\u306a\u304f\u3066\u3001\u3053\u3063\u3061\u306e\u65b9\u304c\u81ea\u5206\u3067\u3082\u3044\u3044\u3068\u601d\u3063\u305f\u306e\u3067\u3001\u4e00\u6c17\u306b\u30b3\u30de\u30f3\u30c9\u30aa\u30f3\u30ea\u30fc\uff08\u307b\u307c\uff09\u3067\u3044\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n$ mkdir chef-sinatra\r\n$ cd chef-sinatra\r\n$ rbenv global 2.1.5\r\n$ ruby -v\r\nruby 2.1.5p273 (2014-11-13 revision 48405) &#x5B;x86_64-linux]\r\n$ rbenv rehash\r\n$ gem -v\r\n2.2.2\r\n\r\n$ gem install chef --no-ri --no-rdoc\r\n$ knife configure\r\n$ gem install knife-solo --no-ri --no-rdoc\r\n\r\n\u30af\u30c3\u30af\u30d6\u30c3\u30af\u3092\u4f5c\u6210\u3057\u3088\u3046\u3002\r\n$ cd chef-repo\r\n\r\n\u30ea\u30dd\u30b8\u30c8\u30ea\u4f5c\u6210\r\n$ knife cookbook create apache\r\n$ vi cookbooks\/apache\/recipes\/default.rb\r\n$ cat chef-repo\/cookbooks\/apache\/recipes\/default.rb\r\n#\r\n# Cookbook Name:: apache\r\n# Recipe:: default\r\n#\r\n# Copyright 2014, YOUR_COMPANY_NAME\r\n#\r\n# All rights reserved - Do Not Redistribute\r\n#\r\npackage &quot;httpd&quot; do\r\n\u00a0 action :install\r\nend\r\n\r\nservice &quot;httpd&quot; do\r\n\u00a0 action &#x5B; :enable, :start ]\r\nend\r\n\r\n\u7d9a\u3044\u3066\u306fDockerfile\u4f5c\u6210\r\nchef-solo -o \u30ec\u30b7\u30d4\u540d \u3060\u3068\u4e0a\u624b\u304f\u3044\u304b\u306a\u304b\u3063\u305f\u306e\u306d\u3002\r\n\u7d50\u5c40\u306e\u3068\u3053solo.rb\u304c\u306a\u3044\u3088\uff1f\u3068\u805e\u304b\u308c\u308b\u306e\u3067\u3001\u53c2\u8003\u30b5\u30a4\u30c8\u3068\u307b\u307c\u540c\u3058\u611f\u3058\u306b\u306a\u308a\u307e\u3057\u305f\u3002\r\n\r\n$ cat Dockerfile\r\nFROM centos:centos6\r\nMAINTAINER takekentw\r\nENV HOME \/chef-repo\r\nADD chef-repo \/chef-repo\r\nRUN curl -L http:\/\/www.opscode.com\/chef\/install.sh | bash\r\nRUN cd ${HOME} &amp;&amp; chef-solo -c ${HOME}\/solo.rb -j ${HOME}\/nodes\/docker.json\r\n\r\n\u3067\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u308a\u307e\u3059\u3002\r\n$ sudo docker build -t centos:build .\r\nSending build context to Docker daemon 24.58 kB\r\nSending build context to Docker daemon\r\nStep 0 : FROM centos:centos6\r\n\u00a0---&gt; 25c5298b1a36\r\n\r\n\uff5e\uff5e\u3000\u4e2d\u7565\u3000\uff5e\uff5e\r\n\r\nThank you for installing Chef!\r\n\u00a0---&gt; ebd58aa8e77d\r\nRemoving intermediate container bd030c4e2254\r\nStep 5 : RUN cd ${HOME} &amp;&amp; chef-solo -c ${HOME}\/solo.rb -j ${HOME}\/nodes\/docker.json\r\n\u00a0---&gt; Running in 76e096bf5c8b\r\n&#x5B;2014-12-06T00:43:52+00:00] INFO: Forking chef instance to converge...\r\n&#x5B;2014-12-06T00:43:52+00:00] INFO: *** Chef 12.0.0 ***\r\n&#x5B;2014-12-06T00:44:06+00:00] INFO: service&#x5B;httpd] enabled\r\n\r\n\uff5e\uff5e\u3000\u4e2d\u7565\u3000\uff5e\uff5e\r\n\r\nRemoving intermediate container 76e096bf5c8b\r\nSuccessfully built 396e4e905e33\r\n\r\n\u51fa\u6765\u4e0a\u304c\u308a\u307e\u3057\u305f\u3002\r\n$ sudo docker images\r\nREPOSITORY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TAG\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VIRTUAL SIZE\r\ncentos\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 build\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 396e4e905e33\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 418.9 MB\r\n\r\n\u8d77\u52d5\u3057\u3066\u307f\u307e\u3059\u3002\r\n$ sudo docker run -it -p 80 --name chef_01 centos:build \/bin\/bash\r\nbash-4.1#\r\nbash-4.1# whoami\r\nroot\r\nbash-4.1# service httpd status\r\nhttpd dead but pid file exists\r\nbash-4.1# service httpd start\r\nStarting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.14 for ServerName\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#x5B;\u00a0 OK\u00a0 ]\r\n\r\n\u3053\u3053\u3067\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u30c7\u30bf\u30c3\u30c1\u3057\u307e\u3057\u305f\u3002&#x5B; Ctrl+p q ]\r\n$ sudo docker ps\r\nCONTAINER ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 COMMAND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORTS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NAMES\r\nad3082574949\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 centos:build\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;\/bin\/bash&quot;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 32 seconds ago\u00a0\u00a0\u00a0\u00a0\u00a0 Up 31 seconds\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.0.0.0:49154-&gt;80\/tcp\u00a0\u00a0\u00a0\u00a0 chef_01\r\n\r\n\u63a5\u7d9a\u30c6\u30b9\u30c8\u3002\r\n$ curl http:\/\/localhost:49154\r\n&lt;!DOCTYPE html PUBLIC &quot;-\/\/W3C\/\/DTD XHTML 1.1\/\/EN&quot; &quot;http:\/\/www.w3.org\/TR\/xhtml11\/DTD\/xhtml11.dtd&quot;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;head&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;title&gt;Apache HTTP Server Test Page powered by CentOS&lt;\/title&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=UTF-8&quot; \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;style type=&quot;text\/css&quot;&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u3046\u3080\u3046\u3080\u3002<\/p>\n<p>\u3067\u306f\u554f\u984c\u306a\u3055\u305d\u306a\u306e\u3067\u3001\u6614\u306b\u4f5c\u3063\u305fbase\u3082\u8a66\u3057\u3066\u307f\u3088\u3046\u3002\u3061\u306a\u307f\u306bbase\u30ec\u30b7\u30d4\u3068\u306ftakeken\u3068\u3044\u3046\u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210\u3068\u57fa\u672c\u7684\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3082\u306e\u3067\u3059\u3002<br \/>\n\u3084\u3063\u3066\u307f\u308b\u3068\u7d50\u69cb\u5fd8\u308c\u3066\u3044\u308b\u306e\u3067\u30ea\u30cf\u30d3\u30ea\u306f\u307e\u3060\u7d9a\u3051\u308b\u306e\u3067\u3059\u3002<\/p>\n<p>\u307b\u307c\u5fd8\u308c\u3066\u307e\u3057\u305f\u304c\u3001\u5916\u90e8\u306eCookbooks\u3092\u4f7f\u3046\u306e\u3067berkshelf\u3092\u5165\u308c\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066cookbooks\u3092\u751f\u6210\u3057\u3068\u304d\u307e\u3059\u3002<\/p>\n<p>$ gem install berkshelf<\/p>\n<p>\u3072\u306a\u5f62\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n$ knife solo init .<\/p>\n<p>\u3093\u3067\u3053\u308c\u3082\u5fd8\u308c\u304c\u3061\u306b\u306a\u308b\u3002<br \/>\n\u904e\u53bb\u306b\u8a66\u3057\u305f\u6642\u3068berks\u3067cookbooks\u3092\u53d6\u308a\u306b\u884c\u304f\u53d6\u5f97\u5148\u3082\u5909\u308f\u3063\u305f\u3088\u3046\u3060\u3002<\/p>\n<p>$ berks install<\/p>\n<p>\u4e2d\u8eab\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\u3002<br \/>\n\u904e\u53bb\u306b\u4f5c\u3063\u305f\u4f7f\u3044\u307e\u308f\u3057\u306a\u306e\u3067\u3059\u3051\u3069\u306d\u3002<\/p>\n<p>$ tree<br \/>\n.<br \/>\n\u251c\u2500\u2500 Dockerfile<br \/>\n\u2514\u2500\u2500 chef-repo<br \/>\n\u251c\u2500\u2500 Berksfile<br \/>\n\u251c\u2500\u2500 Berksfile.lock<br \/>\n\u251c\u2500\u2500 cookbooks<br \/>\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 selinux<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 CHANGELOG.md<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 README.md<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 attributes<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 default.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 libraries<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 selinux_service_helpers.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 metadata.json<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 providers<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 state.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 recipes<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 _common.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 default.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 disabled.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 enforcing.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 permissive.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 resources<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 state.rb<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 templates<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 default<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 sysconfig<br \/>\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 selinux.erb<br \/>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 yum<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 CHANGELOG.md<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 README.md<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 attributes<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 main.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 libraries<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 matchers.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 metadata.json<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 providers<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 globalconfig.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 repository.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 recipes<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 default.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 resources<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 globalconfig.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 repository.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 templates<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 default<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 main.erb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 repo.erb<br \/>\n\u251c\u2500\u2500 data_bags<br \/>\n\u251c\u2500\u2500 environments<br \/>\n\u251c\u2500\u2500 nodes<br \/>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 docker.json<br \/>\n\u251c\u2500\u2500 roles<br \/>\n\u251c\u2500\u2500 site-cookbooks<br \/>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 base<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 CHANGELOG.md<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 README.md<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 attributes<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 definitions<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 files<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 default<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 libraries<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 metadata.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 providers<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 recipes<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 default.rb<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 resources<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 templates<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 default<br \/>\n\u2502\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2514\u2500\u2500 sudoers.erb<br \/>\n\u2514\u2500\u2500 solo.rb<\/p>\n<pre class=\"brush: ruby; title: ; notranslate\" title=\"\">\r\n\r\nsite-cookbooks\/base\/templates\/default\/sudoers.erb\u306fsuduers\u30d5\u30a1\u30a4\u30eb\u307b\u307c\u305d\u306e\u307e\u307e\u3067wheel\u3092\u6709\u52b9\u306b\u3057\u305f\u7a0b\u5ea6\u3067\u3059\u3002\r\n\r\n$ cat site-cookbooks\/base\/recipes\/default.rb\r\n#\r\n# Cookbook Name:: base\r\n# Recipe:: default\r\n#\r\n# Copyright 2014, YOUR_COMPANY_NAME\r\n#\r\n# All rights reserved - Do Not Redistribute\r\n#\r\n# \u5916\u90e8cookbook\u3092\u5229\u7528\u3057\u3066epel\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\nyum_repository 'epel' do\r\ndescription 'Extra Packages for Enterprise Linux'\r\n#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 url 'http:\/\/ftp.riken.jp\/Linux\/fedora\/epel\/6\/x86_64\/epel-release-6-8.noarch.rpm'\r\n#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 gpgkey\u00a0 'http:\/\/ftp.riken.jp\/Linux\/fedora\/epel\/RPM-GPG-KEY-EPEL-6'\r\nmirrorlist 'http:\/\/mirrors.fedoraproject.org\/mirrorlist?repo=epel-6&amp;arch=$basearch'\r\ngpgkey 'http:\/\/dl.fedoraproject.org\/pub\/epel\/RPM-GPG-KEY-EPEL-6'\r\naction :create\r\nend\r\n# \u57fa\u672c\u7684\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n%w{ gcc make openssh-server kernel-devel zlib-devel openssl-devel readline-devel perl wget curl bind-utils git ntp openssh-clients rsync sysstat vim sudo }.each do |p|\r\npackage p do\r\naction :install\r\nend\r\nend\r\n# \u5916\u90e8cookbook\u3092\u5229\u7528\u3057\u3066selinux\u3092\u7121\u52b9\r\nselinux_state &quot;SELinux Disabled&quot; do\r\naction :disabled\r\nend\r\n\r\n# \u4f5c\u696d\u30e6\u30fc\u30b6\u30fc\u4f5c\u6210\r\nuser &quot;takeken&quot; do\r\ncomment &quot;takeken&quot;\r\nhome &quot;\/home\/takeken&quot;\r\nshell &quot;\/bin\/bash&quot;\r\npassword &quot;$1$Sdk6GWI3$8wCs\/GirgmAfyjEd3K8rp\/&quot;\r\nsupports :manage_home =&gt; true, :non_unique =&gt; false\r\naction &#x5B;:create, :manage]\r\nend\r\n#\r\ngroup &quot;wheel&quot; do\r\naction :modify\r\nmembers &#x5B; 'takeken' ]\r\nappend true\r\nend\r\n#\r\ntemplate &quot;sudoers&quot; do\r\nowner &quot;root&quot;\r\ngroup &quot;root&quot;\r\npath &quot;\/etc\/sudoers&quot;\r\nmode &quot;0440&quot;\r\nsource &quot;sudoers.erb&quot;\r\nend\r\n\r\n$ cat Berksfile\r\nsource &quot;https:\/\/supermarket.getchef.com&quot;\r\n\r\ncookbook 'yum'\r\ncookbook 'selinux'\r\n\r\n$ cat nodes\/docker.json\r\n{\r\n&quot;run_list&quot; : &#x5B;\r\n&quot;yum&quot;,\r\n&quot;recipe&#x5B;selinux::disabled]&quot;,\r\n&quot;recipe&#x5B;base]&quot;\r\n]\r\n}\r\n\r\n$ cat solo.rb\r\nfile_cache_path &quot;\/tmp\/chef-solo&quot;\r\ncookbook_path &#x5B;\r\n&quot;\/chef-repo\/site-cookbooks&quot;,\r\n&quot;\/chef-repo\/cookbooks&quot;\r\n]\r\n\r\n<\/pre>\n<p>\u3053\u306e\u304f\u3089\u3044\u304b\u3057\u3089\u306d\u3002<\/p>\n<p>\u3067\u306fbuild\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n$ sudo docker build -t base:base_03 .\r\nSending build context to Docker daemon\u00a0\u00a0 130 kB\r\nSending build context to Docker daemon\r\n---&gt; Running in 9013228dd96c\r\n&#x5B;2014-12-06T11:05:33+00:00] INFO: Forking chef instance to converge...\r\n&#x5B;2014-12-06T11:07:07+00:00] INFO: Report handlers complete\r\n---&gt; 916d8c4850fc\r\nRemoving intermediate container 9013228dd96c\r\nSuccessfully built 916d8c4850fc\r\n\r\n\u3060\u3044\u3076\u7aef\u6298\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u3060\u3044\u305f\u30442\u5206\u304f\u3089\u3044\u3067\u3059\u306a\u3002\r\n\r\n\u30c9\u30c3\u30ab\u30fc\uff3c(^o^)\r\n\r\n&#x5B;bash]\r\n\r\n$ sudo docker images\r\nREPOSITORY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TAG\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VIRTUAL SIZE\r\nbase\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 base_03\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cfc1865ce4c6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 797.9 MB\r\n\r\n&#x5B;root@aeb9ed08e4d3 ~]# id\r\nuid=0(root) gid=0(root) groups=0(root)\r\n&#x5B;root@aeb9ed08e4d3 ~]# ls -l \/home\r\ntotal 4\r\ndrwx------. 2 takeken takeken 4096 Dec\u00a0 6 11:07 takeken\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\u51fa\u6765\u4e0a\u304c\u308a\u307e\u3057\u305f\uff5e\u3002sshd\u3063\u3066\u30b3\u30f3\u30c6\u30ca\u3058\u3083\u3042\u3044\u3089\u306a\u3044\u306e\u3067\u307b\u3093\u3068\u306b\u305f\u3060\u306e\u30ea\u30cf\u30d3\u30ea\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3082\u3057ssh\u3092\u4f7f\u3046\u3068\u3057\u3066\u6ce8\u610f\u3059\u3079\u304d\u3068\u3053\u308d\u306fPassword\u8a31\u53ef\u3068\u3001PAM\u3092No\u306b\u3059\u308b\u3053\u3068\u3067\u3057\u305f\u3002<\/p>\n<p>\u4f5c\u3063\u3066\u307f\u305f\u611f\u60f3\u306f\u6b32\u3057\u3044\u74b0\u5883\u306b\u3088\u3063\u3066VirtualBox\u306a\u308aKVM\u306a\u308aDocker\u306a\u308a\u3092\u4f7f\u3044\u5206\u3051\u305f\u65b9\u304c\u6700\u7d42\u7684\u306a\u30b3\u30b9\u30c8\u306f\u30d9\u30b9\u30c8\u306a\u9078\u629e\u3092\u3059\u308b\u306e\u304c\u6700\u3082\u3088\u3055\u3052\u3067\u3059\u3002<\/p>\n<p>\u3067\u306f\u3053\u306e\u8fba\u3067\u3002<\/p>\n<p>\u6b21\u56de\u306bSinatra\u74b0\u5883\u304c\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u306f\u5206\u304b\u308a\u307e\u305b\u3093\u3002\u306a\u3093\u3068\u306a\u304fRuby\u3060\u3051\u3067\u4f55\u304b\u4f5c\u308d\u3046\u3068\u3057\u3066\u307f\u305f\u308a\u3057\u3066\u3044\u308b\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u4f55\u3092\u3084\u308b\u304b\u5206\u304b\u308a\u307e\u305b\u3093\u3002<\/p>\n<p>&nbsp;<\/p>\n<div class='wp_social_bookmarking_light'>        <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.vincentina.net\/?p=4820\" data-text=\"Docker + Chef \u3067\u697d\u3005\u74b0\u5883\u4f5c\u308a\" data-via=\"TakekenTw\" data-lang=\"ja\">Tweet<\/a><\/div><\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u590f\u9803\u306bDocker\u30b3\u30f3\u30c6\u30ca\u3068\u3044\u3046\u30d9\u30fc\u30bf\u7248\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u306f\u305a\u3067\u3059\u304c \u305d\u308c\u3068\u306f\u9055\u3044\u3001Chef-solo\u3092\u30ad\u30c3\u30af\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002 \u305d\u3093\u306a\u7d20\u6674\u3089\u3057\u3044\u624b\u6cd5\u3092\u7d39\u4ecb\u3057\u3066\u3044\u305f\u53c2\u8003\u30b5\u30a4\u30c8\u3002 Docker\u30a4\u30e1\u30fc\u30b8\u3092chef-solo\u3067\u30d7\u30ed\u30d3 &hellip; <a href=\"https:\/\/www.vincentina.net\/?p=4820\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;Docker + Chef \u3067\u697d\u3005\u74b0\u5883\u4f5c\u308a&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[106],"tags":[],"class_list":["post-4820","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts\/4820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4820"}],"version-history":[{"count":0,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts\/4820\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4820"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4820"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}