{"id":16881,"date":"2015-01-08T08:00:42","date_gmt":"2015-01-07T23:00:42","guid":{"rendered":"http:\/\/www.sssg.org\/blogs\/hiro345\/?p=16881"},"modified":"2015-01-05T21:28:32","modified_gmt":"2015-01-05T12:28:32","slug":"vagrant%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%80%81ansible-%e3%82%92%e4%bd%bf%e3%81%88%e3%82%8b%e7%92%b0%e5%a2%83%e3%82%92%e7%94%a8%e6%84%8f%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b","status":"publish","type":"post","link":"https:\/\/www.hiro345.net\/blogs\/hiro345\/archives\/16881.html","title":{"rendered":"Vagrant\u3092\u4f7f\u3063\u3066\u3001Ansible \u3092\u4f7f\u3048\u308b\u74b0\u5883\u3092\u7528\u610f\u3057\u3066\u307f\u308b"},"content":{"rendered":"<p>\u300c<a href=\"http:\/\/yteraoka.github.io\/ansible-tutorial\/\">Ansible \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb | Ansible Tutorial in Japanese<\/a>\u300d\u3092\u53c2\u8003\u306b\u3057\u3066\u3001Ansible\u3092\u4f7f\u3063\u3066\u307f\u3088\u3046\u3068\u3057\u305f\u3068\u3053\u308d\u3001\u306a\u304b\u306a\u304b\u3001\u6e96\u5099\u304c\u9762\u5012\u3067\u3059\u306d&#8230;\u3002\u6163\u308c\u308c\u3070\u3001\u305d\u308c\u307b\u3069\u3067\u3082\u306a\u3044\u3088\u3046\u306a\u306e\u3067\u3059\u304c\u3001\u8a66\u3059\u74b0\u5883\u3092\u7528\u610f\u3059\u308b\u307e\u3067\u6642\u9593\u304c\u304b\u304b\u3063\u3066\u307e\u3059\u3002<br \/>\n<!--more--><br \/>\nVirtualBox\u3068Vagrant\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3068\u3053\u308d\u306e\u8aac\u660e\u306f\u7701\u304d\u307e\u3059\u3002\u3053\u308c\u304b\u3089\u3001node1\u3068node2\u306eCentOS6\u30de\u30b7\u30f3\u3092\u7528\u610f\u3057\u307e\u3059\u3002node1\u306bansible\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001node2\u3078\u30c7\u30d7\u30ed\u30a4\u3092\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n$ mkdir ansible-tutorial\r\n$ cd ansible-tutorial\r\n$ vagrant init centos6 http:\/\/opscode-vm-bento.s3.amazonaws.com\/vagrant\/virtualbox\/opscode_centos-6.5_chef-provisionerless.box\r\n<\/pre>\n<p>Vagrantfile \u306f\u4fee\u6b63\u3057\u307e\u3059\u3002\u300cconfig.vm.box = &#8220;centos6&#8243;\u300d\u306f\u4e0b\u8a18\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n  config.vm.define :node1 do |node|\r\n    node.vm.box = &quot;centos6&quot;\r\n    node.vm.network :forwarded_port, guest: 22, host: 2001, id: &quot;ssh&quot;\r\n    node.vm.network :private_network, ip: &quot;192.168.33.11&quot;\r\n  end\r\n  config.vm.define :node2 do |node|\r\n    node.vm.box = &quot;centos6&quot;\r\n    node.vm.network :forwarded_port, guest: 22, host: 2002, id: &quot;ssh&quot;\r\n    node.vm.network :forwarded_port, guest: 80, host: 8000, id: &quot;http&quot;\r\n    node.vm.network :private_network, ip: &quot;192.168.33.12&quot;\r\n  end\r\n<\/pre>\n<p>\u307e\u305f\u3001\u6700\u5f8c\u306eend\u306e\u76f4\u524d\u306b\u4e0b\u8a18\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n  config.vm.provision &quot;shell&quot;,\r\n      inline: &quot;sudo yum -y update &amp;&amp; sudo yum -y install gcc make automake autoconf kernel-headers kernel-devel&quot;\r\n<\/pre>\n<p>Vagrantfile\u304c\u7528\u610f\u3067\u304d\u305f\u3089vagrant\u30de\u30b7\u30f3\u30922\u53f0\u7528\u610f\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u4e0b\u8a18\u30b9\u30af\u30ea\u30d7\u30c8 create_vm.sh \u3092\u7528\u610f\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002VirtualBox\u306eGuestAddition\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u8db3\u308a\u3066\u3044\u306a\u3044\u306e\u3067\u3001Vagrantfile\u306f\u4fee\u6b63\u3057\u3066provision\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u307e\u305f\u3001vagrant-vbguest\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u3046\u306e\u3067\u3001\u3053\u308c\u3082\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002kernel\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u6700\u65b0\u306b\u3059\u308b\u305f\u3081\u3001\u4e00\u5ea6 vagrant up \u3092\u3057\u3066\u304b\u3089\u3001halt\u3001up\u3068\u3057\u3066\u518d\u8d77\u52d5\u3092\u3057\u307e\u3059\u3002\u305d\u308c\u304b\u3089VirtualBox\u306eGuestAddition\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n#!\/bin\/sh\r\n\r\nvagrant plugin install vagrant-vbguest\r\nfor n in 1 2\r\ndo\r\n  vagrant up node${n}\r\n  vagrant halt node${n}\r\n  vagrant up node${n}\r\n  vagrant vbguest node${n} --do install\r\ndone\r\n<\/pre>\n<p>\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u3067node1\u3068node2\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u304c\u7528\u610f\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n$ sh create_vm.sh\r\n<\/pre>\n<p>node1\u3067ansible\u3092\u4f7f\u3046\u306e\u3067\u3001node1\u3078ssh\u30ed\u30b0\u30a4\u30f3\u3057\u3066epel\u3068ansible\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306ainstall_epel_ansible.sh\u3092Vagrantfile\u3068\u540c\u3058\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n#!\/bin\/sh\r\n\r\nyum -y install yum-priorities\r\nwget http:\/\/dl.fedoraproject.org\/pub\/epel\/6\/x86_64\/epel-release-6-8.noarch.rpm\r\nrpm -Uvh epel-release-6*.rpm\r\nyum -y install ansible\r\n<\/pre>\n<p>\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n$ vagrant ssh node1 -c &quot;sudo sh \/vagrant\/install_epel_ansible.sh&quot;\r\n<\/pre>\n<p>scp\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001vagrant ssh-config\u3092\u5b9f\u884c\u3057\u3066\u3001ssh_config\u30d5\u30a1\u30a4\u30eb\u3078\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n$ vagrant ssh-config node1 &gt; ssh_config\r\n$ vagrant ssh-config node2 &gt;&gt; ssh_config\r\n<\/pre>\n<p>node1\u3067\u52d5\u4f5c\u3055\u305b\u308bansible\u3067\u306f\u3001node1\u304b\u3089node2\u3078\u306eSSH\u304c\u5fc5\u8981\u306a\u306e\u3067\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u306a\u3057\u3067\u63a5\u7d9a\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3092\u3057\u307e\u3059\u3002ssh-keygen\u3067\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306a\u3057\u306e\u9375\u3092\u4f5c\u6210\u3057\u3001node1:.ssh\/id_rsa.pub\u3092node2:.ssh\/authorized_keys\u3078\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n$ vagrant ssh node1 -c &quot;ssh-keygen&quot;\r\n$ scp -F ssh_config node1:.ssh\/id_rsa.pub .\r\n$ scp -F ssh_config id_rsa.pub node2:\r\n$ vagrant ssh node2 -c &quot;cat id_rsa.pub &gt;&gt; .ssh\/authorized_keys&quot;\r\n<\/pre>\n<p>node1\u3078SSH\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3001ansible\u3067ping\u3092\u3059\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: true\">\r\n$ echo 192.168.33.12 &gt; hosts\r\n$ ansible -i hosts 192.168.33.12 -m ping\r\n [WARNING]: The version of gmp you have installed has a known issue regarding\r\ntiming vulnerabilities when used with pycrypto. If possible, you should update\r\nit (i.e. yum update gmp).\r\n\r\n192.168.33.12 | success &gt;&gt; {\r\n    &quot;changed&quot;: false, \r\n    &quot;ping&quot;: &quot;pong&quot;\r\n}\r\n$\r\n<\/pre>\n<p>\u3068\u308a\u3042\u3048\u305a\u3001\u3053\u3053\u307e\u3067\u3067\u304d\u308c\u3070\u3001\u3042\u3068\u306f ansible \u306e playbook \u3092\u52d5\u304b\u3057\u3066\u3001\u3044\u308d\u3044\u308d\u8a66\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u5931\u6557\u3057\u305f\u3089 node2 \u3060\u3051 destroy \u3057\u3066\u3001\u305d\u3061\u3089\u3060\u3051\u518d\u69cb\u7bc9\u3059\u308c\u3070\u3044\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n<p>Ansible, Vagrant, Chef \u306b\u3064\u3044\u3066\u306f\u6b21\u306e\u66f8\u7c4d\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<ul>\n<li><a type=\"amzn\" asin=\"B00MALTGDY\">\u5165\u9580Ansible <\/a><\/li>\n<li><a type=\"amzn\" asin=\"B00GUKM7U0\">Ansible Configuration Management<\/a><\/li>\n<li><a type=\"amzn\" asin=\"1783550635\">Learning Ansible <\/a><\/li>\n<li><a type=\"amzn\" asin=\"4873116651\">\u5b9f\u8df5 Vagrant <\/a><\/li>\n<li><a type=\"amzn\" asin=\"1491915323\">Ansible: Up and Running <\/a><\/li>\n<li><a type=\"amzn\" asin=\"477416500X\">Chef\u5b9f\u8df5\u5165\u9580 ~\u30b3\u30fc\u30c9\u306b\u3088\u308b\u30a4\u30f3\u30d5\u30e9\u69cb\u6210\u306e\u81ea\u52d5\u5316 (WEB+DB PRESS plus) <\/a><\/li>\n<\/ul>\n<div>\n<iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hiro345-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B00MALTGDY&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr\" height=\"240\" width=\"320\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hiro345-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B00GUKM7U0&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr\" height=\"240\" width=\"320\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hiro345-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=1783550635&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr\" height=\"240\" width=\"320\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hiro345-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4873116651&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr\" height=\"240\" width=\"320\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hiro345-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=1491915323&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr\" height=\"240\" width=\"320\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hiro345-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=477416500X&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr\" height=\"240\" width=\"320\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u300cAnsible \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb | Ansible Tutorial in Japanese\u300d\u3092\u53c2\u8003\u306b\u3057\u3066\u3001Ansible\u3092\u4f7f\u3063\u3066\u307f\u3088\u3046\u3068\u3057\u305f\u3068\u3053\u308d\u3001\u306a\u304b\u306a\u304b\u3001\u6e96\u5099\u304c\u9762\u5012\u3067\u3059\u306d&#8230;\u3002\u6163\u308c\u308c\u3070\u3001\u305d\u308c\u307b\u3069\u3067\u3082\u306a\u3044 &hellip; <a href=\"https:\/\/www.hiro345.net\/blogs\/hiro345\/archives\/16881.html\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[992],"class_list":["post-16881","post","type-post","status-publish","format-standard","hentry","category-linux","tag-ansible"],"_links":{"self":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts\/16881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/comments?post=16881"}],"version-history":[{"count":5,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts\/16881\/revisions"}],"predecessor-version":[{"id":16889,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts\/16881\/revisions\/16889"}],"wp:attachment":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/media?parent=16881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/categories?post=16881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/tags?post=16881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}