Share
Embed
Transcript
53 slides
-
γεςϜͷػೳͷར༻ׂ߹ 7% 13% 16% 19% 45% ·ͬͨ͘Θͳ͍ ΄ͱΜͲΘͳ͍ ͨ·ʹ͏ Α͘͏
͍ͭ͏ 4UBOEJTIͷͷௐࠪΑΓ 137݄23Ր༵ -
ΥʔλʔϑΥʔϧ 7ࣈ ཁ݅ఆٛ ड͚ೖΕࢼݧ جຊઃܭ ૯߹ࢼݧ ৄࡉઃܭ ݁߹ࢼݧ ɾ୯ମ ͕͔͔࣌ؒΓ͗͢
ͯɺग़དྷͨࠒʹཁ ٻ͕มԽɻͦͦ ཁ͕͍݅͋ͬͯͳ͍ ͜ͱ͕͜͜Ͱ͔Δ 137݄23Ր༵ -
ϑΟʔνϟʔ୯ҐͰྃ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ
ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ ίʔυϨϏϡʔ νΣοΫΠϯ Ϣχοτςετ ΧόϨοδ υΩϡϝϯτ ੑೳ ηΩϡϦςΟ σϓϩΠ ݁߹ςετ ड͚ೖΕςετ Ϋϩεϒϥβ ੩తղੳ ϑΟʔνϟʔ 137݄23Ր༵ -
Summit Developers %FW0QTͷେࣄͳ͜ͱ • 7BHSBOUΛͬͨΓɺ$*ͬͨΓɺܧଓత σϦόϦʔͨ͠Γɺ$IFGͰڥߏஙͨ͠Γ ͔ͨ͠Βͱ͍ͬͯ%FW0QTͱݶΒͳ͍ • πʔϧͱจԽͷͷ྆ํ͕ඞཁ •
ڠྗͱվળͷจԽ • πʔϧʹΑΔޮԽ • ϏδωεՁʹϑΥʔΧε 137݄23Ր༵ -
Summit Developers 7BHSBOUͷಛ • ԾϚγϯΛநԽ͢ΔϑϩϯτΤϯυ • ࡞ͬͯ • ࢼͯ͠ •
ࣺͯͯ • ϓϩϏδϣχϯάػೳͱͷΈ߹Θͤ • ϓϥάΠϯʹΑΔ֦ு 137݄23Ր༵ -
Summit Developers ͳΜͰ͏ͷʁ • ૉૣ͘ڥΛ࡞Γ͍ͨ • ιϑτΣΞͷߏཁૉ͕૿͑ͨ • ؒҧ͑Δ •
ԶͷڥͰಈ͍͍ͯΔ • ߏཧΛ༰қʹ • υΩϡϝϯτ͔Βίʔυ ʢ*OGSBTUSVDUVSFBT$PEFʣ • ຊ࣭తͰͳ͍࡞ۀʹ࣌ؒΛΘͳ͍Α͏ʹ ϜμΛආ͚Δ 137݄23Ր༵ -
Summit Developers ͳΜͰ͏ͷʁ • ࣮ݧ͘͢͠ͳΔ • ৽͍͠ιϑτΣΞͷΠϯετʔϧ • $POpHͷΦϓγϣϯ֬ೝ •
ϦϦʔεΞοϓσʔτͷखॱ֬ೝ 137݄23Ր༵ -
Summit Developers ͳΜͰ͏ͷʁ • ࠷ۙͷτϨϯυ • $IFGͷ$PPLCPPLͳͲͷ$*ʹ͏ • ·ͬ͞Βͳঢ়ଶ͔Βɺ͔͠Δ͖ঢ়ଶʹऩ ଋ͢Δ͜ͱΛຖճ֬ೝ͢Δ
• 5FTU,JUDIFOΛ͏ • ͪΖΜΞϓϦͷ$*Ͱར༻Մೳ • σϓϩΠͷ࣮ݧ 137݄23Ր༵ -
Summit Developers $IFGͷ$PPLCPPLͷ$* export VBOX_USER_HOME=/var/lib/jenkins/VirtualBox\ VMs && export VAGRANT_HOME=/var/lib/jenkins/.vagrant.d &&
source /var/lib/jenkins/.rvm/scripts/rvm > /dev/null 2>&1 && cd ${WORKSPACE} && bundle install && bundle exec kitchen test 137݄23Ր༵ -
Summit Developers جຊతͳ༻ޠ • 7BHSBOUpMF • ԾϚγϯͷఆٛϑΝΠϧʢ3VCZʣ • #PY •
ԾϚγϯͷςϯϓϨʔτ • 1MVHJO • 1SPWJEFSͦͦ7BHSBOUͷ෦ϓϥάΠϯ Ͱ࡞ΒΕ͍ͯΔ • 1SPWJEFS • ԾϚγϯΛ࡞ΔΤϯδϯ෦ • 1SPWJTJPOFS • ԾϚγϯΛϓϩϏδϣχϯά͢ΔΤϯδϯ෦ 137݄23Ր༵ -
Summit Developers (FUUJOH4UBSUFE vagrant box add precise64 ¥ http://files.vagrantup.com/precise64.box vagrant
init precise64 vagrant up ԾϚγϯΛىಈʢ7JSUVBM#PYʣ vagrant halt ԾϚγϯΛఀࢭ vagrant destroy ԾϚγϯΛഁغ 137݄23Ր༵ -
Summit Developers ༷ʑͳ#PY • ͨͩ͠ૉੑ͕Θ͔Βͳ͍ͷ͋ͬͨΓɺ༨ܭ ͳͷ͕ೖ͍ͬͯͨΓ͢ΔՄೳੑ͋Γ • ࣗલͰ࡞ΕΔ • 7FFXFFɺ1BDLFS
• 1BDLFS͕ࠓޙσϑΝΫτελϯμʔυʹͳ Δͣ 137݄23Ր༵ -
Summit Developers 1BDLFS { "builders": [{ "type": "amazon-ebs", "region": "ap-northeast-1",
"source_ami": "ami-39b23d38", "instance_type": "m1.medium", "ssh_username": "ec2-user", "ssh_timeout": "5m", "ami_name": "amznlinux-{{.CreateTime}}" }], "provisioners": [{ "type": "shell", "script": "script.sh", "remote_path": "/tmp/script.sh" }] } ఆٛϑΝΠϧॻ͍ͯ packer build hoge.json Ϗϧυ͢Δ ࣗ༻".*ͷ࡞ྫ 137݄23Ր༵ -
Summit Developers 1SPWJEFS • 7BHSBOU·Ͱ7JSUVBM#PYͷΈ • 7BHSBOUҎ߱1SPWJEFSػೳʹΑΔ நԽ • "NB[PO&$
WBHSBOUBXT • 7.XBSFGVTJPO ༗ঈ • ,7. WBHSBOULWN • 0QFO4UBDL WBHSBOUPQFOTUBDL • 3BDL4QBDF WBHSBOUSBDLTQBDF • FUD 137݄23Ր༵ -
Summit Developers ίΞͷ֦ு plugin_load_proc = lambda do |directory| # We
only care about directories next false if !directory.directory? # If there is a plugin file in the top-level directory, then load # that up. plugin_file = directory.join("plugin.rb") if plugin_file.file? puts "[INFO]loading monkey patch: #{plugin_file}" load(plugin_file) next true end end Vagrant.source_root.join(File.dirname(__FILE__) + "/patch/plugins/ communicators/").children(true).each do |directory| # Ignore non-directories next if !directory.directory? # Load from this directory, and exit if we successfully loaded a plugin puts directory next if plugin_load_proc.call(directory) end ϞϯΩʔύον 137݄23Ր༵ -
Summit Developers 7BHSBOUͰ&$Πϯελϯε Vagrant.configure("2") do |config| config.vm.box = "dummy" config.vm.box_url
= "https://github.com/mitchellh/vagrant- aws/raw/master/dummy.box" config.vm.provider :aws do |aws, override| aws.access_key_id = ENV['AWS_ACCESS_KEY_ID'] aws.secret_access_key = ENV['AWS_SECRET_KEY'] aws.keypair_name = ENV['AWS_KEYPAIR_NAME'] override.ssh.username = ‘ec2-user’ override.ssh.private_key_path = ENV['AWS_PRIVATE_KEY_PATH'] aws.region = "ap-northeast-1" aws.ami = "ami-71b22570" aws.instance_type = "t1.micro" aws.ssh_username = ‘ec2-user’ aws.security_groups = ["web"] end end Ұ൪୯७ͳྫ 137݄23Ր༵ -
Summit Developers 71$͍͚Δ Vagrant.configure("2") do |config| config.vm.box = "dummy" config.vm.box_url
= "https://github.com/mitchellh/vagrant-aws/raw/master/ dummy.box" config.vm.provider :aws do |aws, override| aws.access_key_id = ENV['AWS_ACCESS_KEY_ID'] aws.secret_access_key = ENV['AWS_SECRET_KEY'] aws.keypair_name = ENV['AWS_KEYPAIR_NAME'] override.ssh.username = ‘ec2-user’ override.ssh.private_key_path = ENV['AWS_PRIVATE_KEY_PATH'] #---- VPCݻ༗ͷઃఆ ----# aws.private_ip_address = "10.0.10.10" aws.subnet_id = "subnet-xxxxxxxx" aws.security_groups = ["sg-xxxxxxxx"] #---- VPCݻ༗ͷઃఆ͜͜·Ͱ ----# aws.region = "ap-northeast-1" aws.ami = "ami-71b22570" aws.instance_type = "t1.micro" aws.ssh_username = ‘ec2-user’ aws.security_groups = ["web"] end end ͨͩ͠71/ଓ͕ඞཁ 137݄23Ր༵ -
Summit Developers 1SPWJTJPOFS • 4IFMM • ΠϯϥΠϯɾ֎෦ϑΝΠϧ • $IFG$IFG4PMP •
1VQQFU • ུ • $'&OHJOF • ུ 137݄23Ր༵ -
Summit Developers 4IFMMͰ1SPWJTJPOJOH Vagrant.configure("2") do |config| config.vm.box = "CentOS-6.4-x86_64-ja" config.vm.provision
:shell, :path => "script.sh" end *OMJOF·ͨ֎෦εΫϦϓτܦ༝Ͱ؆୯ϓ ϩϏδϣχϯάʢҙ֎ͱΈΜͳΒͳ͍ʣ 137݄23Ր༵ -
Summit Developers 4IFMMͰ1SPWJTJPOJOH #!/bin/sh yum install -y httpd php php-mbstring
php-pdo php-mysql mysql- server /sbin/chkconfig --level 2345 mysqld on /sbin/chkconfig --level 2345 httpd on /etc/rc.d/init.d/httpd start /etc/rc.d/init.d/mysqld start cat < < END > /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT END /etc/rc.d/init.d/iptables restart ͘͝ී௨ͷ4IFMM 137݄23Ր༵ -
Summit Developers $IFG4PMPͰ1SPWJTJPOJOH Vagrant.configure("2") do |config| config.vm.box = "CentOS-6.4-x86_64-ja" config.vm.network
:private_network, ip: "192.168.33.10" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./cookbooks" chef.roles_path = "./roles" chef.data_bags_path = "./data_bags" chef.add_role "web" chef.add_recipe "resolver" chef.add_recipe "myapp" chef.json = { :resolver => { :search => "localhost", :nameservers => ["8.8.8.8", "8.8.1.1"] } } end end ରϚγϯʹ$IFG$MJFOUͷ Πϯετʔϧ͕ඞཁ 137݄23Ր༵ -
Summit Developers $IFG4FSWFSͰ1SPWJTJPOJOH Vagrant.configure("2") do |config| config.vm.box = "CentOS-6.4-x86_64-ja" config.vm.network
:private_network, ip: "192.168.33.80" config.vm.hostname = 'chef-test01' config.vm.provision :chef_client do |chef| chef.chef_server_url = "https://chef.meguro.ryuzee.com" chef.validation_client_name = "chef-validator" chef.validation_key_path = "#{ENV['HOME']}/.chef/chef- validator.pem" chef.client_key_path = "/etc/chef/client.pem" chef.environment ="development" chef.add_role "web" chef.add_recipe "analog" end end ରϚγϯʹ$IFG$MJFOUͷ Πϯετʔϧ͕ඞཁ 137݄23Ր༵ -
Summit Developers 1SPWJTJPOJOHͷར • ߏங͢ΔԾϚγϯ͕7JSUVBMCPYͩΖ͏͕ɺ "NB[PO&$ͩΖ͏͕ɺಉ͡εΫϦϓτΛ ͑Δ • Կճ࣮ߦͯ͠ಉ݁͡ՌʹͳΔ Α͏ʹ͍ͨ͠
• ͬͱύοέʔδ͕ͳ͘ͳͬͨΓɺόʔ δϣϯ͕มΘͬͨΓ͢Δͱಈ͔ͳ͘ͳΔՄೳ ੑ͋ΔͷͰ$*͍ͨ͠ 137݄23Ր༵ -
Summit Developers 7BHSBOUͷߏͷ·ͱΊ Vagrant Core VirtualBox Amazon EC2 Vmware Fusion
Vagrantfile ͦͷଞͷϓϥάΠϯ Shell Cookbook Manifest ੨͍Օॴ͕3VCZ Shell Chef Puppet 137݄23Ր༵ -
Summit Developers Έ߹Θͤࣗ༝ Vagrant Core VirtualBox Amazon EC2 Vmware Fusion
Vagrantfile ͦͷଞͷϓϥάΠϯ Shell Cookbook Manifest Shell Chef Puppet 137݄23Ր༵ -
Summit Developers Έ߹Θͤࣗ༝ Vagrant Core VirtualBox Amazon EC2 Vmware Fusion
Vagrantfile ͦͷଞͷϓϥάΠϯ Shell Cookbook Manifest Shell Chef Puppet 137݄23Ր༵ -
Summit Developers "NB[PO&$Ͱͷҙ • "NB[PO-JOVYͷ߹ɺσϑΥϧτͰ SFRVJSFUUZ͕ແޮԽ͞Ε͍ͯͳ͍ͷͰɺ ࣗઐ༻ͷ".*Λ࡞Δ • $FOU043FE)BUجຊಉͣ͡ •
6CVOUVେৎ • 44)ͷ5JNFPVUΛΊʹͨ͠΄͏͕ྑ͍͔ 137݄23Ր༵ -
Summit Developers Ϣʔεέʔε • ϩʔΧϧ։ൃڥͱ·ͬͨ͘ಉֻ͚͡Ͱςε τڥΛߏங͢Δ • ͦͷ··֬ೝڥͱ͓ͯ͠٬͞Μʹެ։͢Δ • &*1ͱηΩϡϦςΟάϧʔϓͷઃఆ
• 3PVUFͰυϝΠϯ໊ϕʔεͰΞΫηε • ͍·ͷͱ͜Ζຊ൪ผͰߟ͑ͨํ͕ྑ͍͔ • %#ʹ"NB[PO3%4ͬͨΓ 137݄23Ր༵ -
Summit Developers ใݯ Create and Manage Virtualized Development Environments Mitchell
Hashimoto Vagrant Up and Running http://docs.vagrantup.com/v2/ http://oreilly.com/go/vagrant 137݄23Ր༵