Slide 1

Slide 1 text

ࢁޱೳ᫫ id : ymotongpoo 1 1BDLFSͷ঺հ 1ZUIPO%FWFMPQFST'FTUB

Slide 2

Slide 2 text

͓લɺ୭Αʁ •  ࢁޱೳ᫫ʢ΍·͙ͪΑ͠;Έʣ •  :PV5VCF5FDIOJDBM"DDPVOU.BOBHFS  (PPHMF*OD •  JEZNPUPOHQPP –  ͱΜ΀ʔͱݺ͹Ε͍ͯ·͢ •  :"."(6$)*XFCMPH –  ZNPUPOHQPPIBUFOBCMPHDPN 2

Slide 3

Slide 3 text

͓લɺ୭Αʁ •  (P͕޷͖Ͱ͢ •  (P$POGFSFODFͱ͍͏ΠϕϯτΛ͠·ͨ͠ •  Թઘʹߦ͘ʮ(PཏԹઘʯͱ͍͏ԹઘاըΛ͠· ͨ͠ •  ઌ೔͸౎ిߥ઒ઢΛି͠੾ͬͨʮిंͰ(Pʯ ͱ͍͏ΠϕϯτΛ͠·ͨ͠ 3

Slide 4

Slide 4 text

͓લɺ୭Αʁ 4

Slide 5

Slide 5 text

ཱྀͷࢥ͍ग़ 5

Slide 6

Slide 6 text

"HFOEB •  1BDLFSͬͯφχʁ •  1BDLFSΛ࢖ͬͯΈΔ •  1BDLFSΛ֦ுͯ͠ΈΔ  6

Slide 7

Slide 7 text

7  ͬͯφχʁ

Slide 8

Slide 8 text

1BDLFSͬͯφχʁ •  7BHSBOUͷ࡞ऀ.JUDIFMM)BTIJNPUP࡞ •  (P੡ •  ʹWFSTJPOެ։ –  ൃද࣌࠷৽൛͸ •  ެࣜαΠτ –  http://www.packer.io    8

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10 Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. Platform A Platform B Platform C Machine Image A Machine Image B Machine Image C

Slide 11

Slide 11 text

11 ͦΕͬͯ 7BHSBOUͱ͔ 'BCSJDͱ͔ͱ φχ͕ҧ͏ͷʁ

Slide 12

Slide 12 text

֤ϓϩϏδϣχϯάπʔϧͱͷҧ͍ 12 OS distribution pkg pkg 7BHSBOU΍'BCSJD͸جຊతͳ04Πϝʔδͷ্ʹ ઃఆΛߦ͏ •  パッケージのインストール •  設定ファイルのコピー •  スクリプトの実行 etc… file script Machine Image

Slide 13

Slide 13 text

֤ϓϩϏδϣχϯάπʔϧͱͷҧ͍ 13 1BDLFS͸ͦ΋ͦ΋ͷϚγϯΠϝʔδΛ࡞੒ Packer config Packer OS distribution Machine Image A OS distribution Machine Image B

Slide 14

Slide 14 text

7FFXFFͱ͸φχ͕ҧ͏ͷʁ •  7FFXFFͱ΍ͬͯΔ͜ͱ͸͍ۙ –  7FFXFF͸7JSUVBM#PY 7.XBSF'VTJPO ,7.  1BSBMMFMTΛ࡞ΕΔ –  ֦ͨͩ͠ுػߏ͸ͳ͍ –  ϓϩϏδϣχϯά͸7BHSBOUݶఆ 14

Slide 15

Slide 15 text

ݱঢ়ରԠϓϥοτϑΥʔϜ 15

Slide 16

Slide 16 text

16 1BDLFSΛ࢖ͬͯΈΔ

Slide 17

Slide 17 text

Πϯετʔϧ 17 $  wget  http://path/to/packer.binary.zip   $  unzip  packer.binary.zip    

Slide 18

Slide 18 text

18 Ҏ্

Slide 19

Slide 19 text

Πϯετʔϧ (P੡ͳͷͰ֤؀ڥ༻ͷόΠφϦΛ࢖͑͹ྑ͍ 19 http://www.packer.io/downloads.html

Slide 20

Slide 20 text

ઃఆϑΝΠϧ •  ઃఆϑΝΠϧ͸+40/ܗࣜͰهड़ •  (PͷUFYUUFNQMBUFʹ४ڌͯ͠ɺม਺ΛຒΊࠐ Ή͜ͱ΋Մೳ •  ཁૉ͸ͭ –  CVJMEFSTԾ૝ϚγϯΛ࡞੒͢ΔΠϯϑϥͷࢦఆ –  QSPWJTJPOFSTϏϧυ׬ྃޙͷ؆୯ͳϓϩϏδϣχϯ ά –  QPTUQSPDFTTPSTϓϩϏδϣχϯά׬ྃޙͷॲཧ  20

Slide 21

Slide 21 text

ઃఆϑΝΠϧ {      "builders":  [{          "type":  "amazon-­‐ebs",          "access_key":  "YOUR  KEY  HERE",          "secret_key":  "YOUR  SECRET  KEY  HERE",          "region":  "us-­‐east-­‐1",          "source_ami":  "ami-­‐de0d9eb7",          "instance_type":  "t1.micro",          "ssh_username":  "ubuntu",          "ami_name":  "packer-­‐example  {{.CreateTime}}"      }],      “provisoners”:  [          “type”:  “shell”,          “scripts”:  [              “initial-­‐install.sh”          ]      ],      “post-­‐prosessors”:  [{          “type”:  “compress”,          “format”:  “tar.gz”      }]   }   21

Slide 22

Slide 22 text

࣮ߦ͢Δ 22 $  packer  validate   $  packer  build  config.json    

Slide 23

Slide 23 text

ςοςϨʔ 23

Slide 24

Slide 24 text

24 1BDLFSΛ֦ுͯ͠ΈΔ

Slide 25

Slide 25 text

1BDLFS1MVHJOT •  packerίϚϯυ͸ඪ४Ͱ΋ϓϥάΠϯΛୟ͍ͯ ͍Δ    25 $  ls   packer   packer-­‐builder-­‐amazon-­‐ebs   packer-­‐builder-­‐digitalocean   packer-­‐builder-­‐virtualbox   packer-­‐builder-­‐vmware   packer-­‐command-­‐build   packer-­‐command-­‐fix   packer-­‐command-­‐validate   packer-­‐post-­‐processor-­‐vagrant   packer-­‐provisioner-­‐file   packer-­‐provisioner-­‐shell   શ෦ϓϥάΠϯ

Slide 26

Slide 26 text

1BDLFS1MVHJOT •  ϓϥάΠϯͷ࡞੒͸(PͰͷΈ࡞੒Մೳ –  ֤ͨͩ͠ϓϥάΠϯ͸ಠཱͨ͠ίϚϯυͱͯ͠࡞੒ –  ໋໊نଇ͸packer-­‐TYPE-­‐NAME     ྫ  QBDLFSCVJMEFSBNB[POFCT QBDLFSDPNNBOEWBMJEBUF  26

Slide 27

Slide 27 text

1BDLFS1MVHJOT •  ֦ுΛ௥Ճͨ͠Β$HOME/.packerconfig  ʹ௥ Ճͷ֦ுΛॻ͍͓ͯ͘   –  ઈରύε  or  ૬ରύε  or  PATH͕௨͍ͬͯΔͱ͜Ζ   –  ඪ४ίϚϯυ΋ಉܗࣜͰϋʔυίʔυ͞Ε͍ͯΔ   27 {      "builders":  {          "custom-­‐cloud":  "packer-­‐builer-­‐custom-­‐cloud"      },      "commands":  {          "spam":  "packer-­‐command-­‐spam",    "egg":  "packer-­‐command-­‐egg"      }   }  

Slide 28

Slide 28 text

1BDLFSશମͷίʔυߏ੒ 28 packerίϚϯυ buildersͰݺ͹ΕΔඪ४֦ு܈ post-­‐processorsͰݺ͹ΕΔඪ४֦ு܈ provinoersͰݺ͹ΕΔඪ४֦ு܈ packerͰݺ͹ΕΔඪ४֦ு܈ ͍͚ͭͩ͜ݟΕ͹ྑ͍ ඪ४֦ு܈ͷNBJOHP

Slide 29

Slide 29 text

1BDLFSશମͷίʔυߏ੒ •  ύοέʔδͩͱҎԼͷͭ •  QBDLFSQBDLFS –  1BDLFSͷίΞɾ֦ு։ൃͷͨΊͷύοέʔδ •  QBDLFSQBDLFSQMVHJO –  ϓϥάΠϯ֦ுͷJOUFSGBDFͷఆٛͷΈ 29 github.com/mitchellh/packer/packer     github.com/mitchellh/packer/packer/plugin  

Slide 30

Slide 30 text

#VJMEFSͷ֦ு 30 Packer Plugins type  Builder  interface  {          Prepare(...interface{})  error          Run(ui  Ui,  hook  Hook,  cache  Cache)  (Artifact,  error)          Cancel()   }   •  1SFQBSF ઃఆϑΝΠϧͷಡΈࠐΈͱલॲཧ –  ͍͍ͨͯ͸map[string]interface{}  Ͱ౉͞ΕΔ     •  3VO ϚγϯΠϝʔδͷ࡞੒Λߦ͏ –  Artifact  JOUFSGBDFΛ࣮૷ͨ͠TUSVDUʹϚγϯΠϝʔδʢͷϝλσʔλʣ  •  $BODFM $USMDͳͲ͕ԡ͞Εͨ࣌ͷޙॲཧ

Slide 31

Slide 31 text

$PNNBOEͷ֦ு 31 Packer Plugins type  Command  interface  {          Help()  string          Run(env  Environment,  args  []string)  int          Synopsis()  string   }   •  )FMQ packer  COMMAND  -­‐-­‐helpͰग़ྗ͞ΕΔϝοηʔδ •  3VO ࣮ࡍͷίϚϯυͷ࣮ߦ –  ىಈதͷ1BDLFSͷ΄΅͢΂ͯͷ৘ใΛͱΕΔ •  CVJMEFS 6* $BDIF QPTUQSPDFTTPS QSPWJTJPOFS •  4ZOPQTJT packer  -­‐-­‐helpͰग़ྗ͞ΕΔ୹͍ϝοηʔδ   –  50จࣈఔ౓  

Slide 32

Slide 32 text

ͦͷଞͷ֦ு •  QPTUQSPDFTTPS •  QSPWJTJPOFS –  QSPWJTPOFSͷϑοΫ͸CVJMEFSଆͷ֦ுͰ࣮૷͢Δඞ ཁ͕͋Δ 32 Packer Plugins ࠓճ͸ॏཁ͡Όͳ͍ͷͰলུ

Slide 33

Slide 33 text

33 ·ͱΊ

Slide 34

Slide 34 text

34 Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. Platform A Platform B Platform C Machine Image A Machine Image B Machine Image C

Slide 35

Slide 35 text

·ͱΊ •  ϓϩϏδϣχϯάΛޠΔલʹɺϚγϯΠϝʔδ ͷ͜ͱΛߟ͑Α͏ •  ֦ு΋࡞ΕΔͷͰɺࣾ಺؀ڥ༻ʹ΋֦ு͕࡞Ε ͯΑ͍ •  (P͸ྑ͍ –  ඪ४ͷ+40/ύʔαΦϓγϣϯύʔαɺόΠφϦ഑ ෍ 35

Slide 36

Slide 36 text

36