Slide 1

Slide 1 text

AnsibleͰߏ੒؅ཧɻ ʙͨͬͨͻͱͭͷࡓ͑ͨ΍Γ͔ͨʙ 2018.1.9 ৽ఆ൪ʂAnsible ͱZabbixͰ࣮ݱ͢Δ࣍ੈ୅ӡ༻؅ཧ ү෦ஐ඙

Slide 2

Slide 2 text

Who am I ? • ү෦ ஐ඙ (Tomohiko Isobe) • Infrastructure EngineerˏΫϦχΧϧɾϓϥοτϑΥʔϜג ࣜձࣾ(2017.10-) • ౡࠜݝग़਎ • Job Hopperʢݱࡏ8ࣾ໨…ʣ • Favorites: ࢙੻ɾઓ੻Ί͙ΓɺϑΝϛϨε https://clipla.jp

Slide 3

Slide 3 text

Ansible࢖ͬͯ·͢ΑͶ

Slide 4

Slide 4 text

͜Μͳײ͡?

Slide 5

Slide 5 text

Infrastructure as Code !

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

ͦΕͬͯ ʮߏஙखॱʯͷ؅ཧͰ͸ʁ

Slide 8

Slide 8 text

αʔόͷʮߏ੒ʯΛ ؅ཧ͍ͨ͠

Slide 9

Slide 9 text

ʮߏ੒؅ཧʯͱݴ͑͹

Slide 10

Slide 10 text

͔ͭͯɺ͜ͷੈʹ͸ ʮύϥϝʔλγʔτʯ ͳΔ΋ͷ͕͋ͬͨ

Slide 11

Slide 11 text

͜Μͳͷ

Slide 12

Slide 12 text

೔ʑͷӡ༻

Slide 13

Slide 13 text

ύϥϝʔλγʔτɺ ߋ৽͠ͱ͖·ͨ͠❤

Slide 14

Slide 14 text

͋Δ೔ͷ͜ͱ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

αʔόͷઃఆ͕ɺ ύϥϝʔλγʔτͱҧ͏…

Slide 17

Slide 17 text

ͪΌΜͱαʔόೖͬ ͯ֬ೝ͠·ͨ͠ʁ

Slide 18

Slide 18 text

Ͳ͏͢Δ͔

Slide 19

Slide 19 text

ΩϥοͱͻΒΊ͍ͨ

Slide 20

Slide 20 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ

Slide 21

Slide 21 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ

Slide 22

Slide 22 text

Playbookͱม਺Λ෼͚Δ

Slide 23

Slide 23 text

Playbookͱม਺Λ෼͚Δ • Roleʹม਺͸ॻ͔ͳ͍ʂ • ΠϯϕϯτϦϑΝΠϧʹ΋ॻ͔ͳ͍ʂ • ςϯϓϨʔτͷύϥϝʔλ΋Ͱ͖Δ͚ͩม਺ ʹʂ

Slide 24

Slide 24 text

Roleʹม਺͸ॻ͔ͳ͍ʂ • Role͸ࡉ͔͘෼ׂͨ͠ํ͕൚༻ੑ͕ߴ·Δ • ͍͍ͪͪશ෦ͷRoleͷmain.ymlݟͯΒΜͳ͍

Slide 25

Slide 25 text

Roleʹม਺͸ॻ͔ͳ͍ʂ • Role͸ࡉ͔͘෼ׂͨ͠ํ͕൚༻ੑ͕ߴ·Δ • ͍͍ͪͪશ෦ͷRoleͷmain.ymlݟͯΒΜͳ͍

Slide 26

Slide 26 text

Roleʹม਺͸ॻ͔ͳ͍ʂ • Role͸ࡉ͔͘෼ׂͨ͠ํ͕൚༻ੑ͕ߴ·Δ • ͍͍ͪͪશ෦ͷRoleͷmain.ymlݟͯΒΜͳ͍ →

Slide 27

Slide 27 text

Roleʹม਺͸ॻ͔ͳ͍ʂ • Role͸ࡉ͔͘෼ׂͨ͠ํ͕൚༻ੑ͕ߴ·Δ • ͍͍ͪͪશ෦ͷRoleͷmain.ymlݟͯΒΜͳ͍ → มߋָ͕

Slide 28

Slide 28 text

ΠϯϕϯτϦϑΝΠϧʹ΋ॻ͔ͳ͍ʂ • ֊૚తʹॻ͚ͳ͍ͷͰɺม਺΍άϧʔϓ͕૿͑ ΔͱಡΈͮΒ͍

Slide 29

Slide 29 text

ΠϯϕϯτϦϑΝΠϧʹ΋ॻ͔ͳ͍ʂ • ֊૚తʹॻ͚ͳ͍ͷͰɺม਺΍άϧʔϓ͕૿͑ ΔͱಡΈͮΒ͍

Slide 30

Slide 30 text

ΠϯϕϯτϦϑΝΠϧʹ΋ॻ͔ͳ͍ʂ • ֊૚తʹॻ͚ͳ͍ͷͰɺม਺΍άϧʔϓ͕૿͑ ΔͱಡΈͮΒ͍ ͭΒ͍ʜ

Slide 31

Slide 31 text

ςϯϓϨʔτͷύϥϝʔλ΋Ͱ͖Δ ͚ͩม਺ʹʂ • Roleͱ߹Θͤͯ൚༻ੑ͕޲্

Slide 32

Slide 32 text

ςϯϓϨʔτͷύϥϝʔλ΋Ͱ͖Δ ͚ͩม਺ʹʂ • Roleͱ߹Θͤͯ൚༻ੑ͕޲্ logrotateͷtemplate(ൈਮ)

Slide 33

Slide 33 text

ςϯϓϨʔτͷύϥϝʔλ΋Ͱ͖Δ ͚ͩม਺ʹʂ • Roleͱ߹Θͤͯ൚༻ੑ͕޲্ logrotateͷtemplate(ൈਮ) logrotateͷvars

Slide 34

Slide 34 text

Playbookͱม਺Λ෼͚Δ • Roleʹม਺͸ॻ͔ͳ͍ʂ • ΠϯϕϯτϦϑΝΠϧʹ΋ॻ͔ͳ͍ʂ • ςϯϓϨʔτͷύϥϝʔλ΋Ͱ͖Δ͚ͩม਺ ʹʂ

Slide 35

Slide 35 text

Playbookͱม਺Λ෼͚Δ • Roleʹม਺͸ॻ͔ͳ͍ʂ • ΠϯϕϯτϦϑΝΠϧʹ΋ॻ͔ͳ͍ʂ • ςϯϓϨʔτͷύϥϝʔλ΋Ͱ͖Δ͚ͩม਺ ʹʂ →ɹgroup_vars,host_varsʹॻ͘ʂ

Slide 36

Slide 36 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ

Slide 37

Slide 37 text

hash_behaviour = merge

Slide 38

Slide 38 text

hash_behaviour = merge • ม਺ͷϚʔδϙϦγʔ • ansible.cfgͷ[defaults]Ͱઃఆ • σϑΥϧτ͸”replace”

Slide 39

Slide 39 text

hash_behaviour = merge • σϑΥϧτ(replace)ͷڍಈ + group_vars ༏ઌ౓ɿ௿ host_vars ༏ઌ౓ɿߴ

Slide 40

Slide 40 text

hash_behaviour = merge • σϑΥϧτ(replace)ͷڍಈ + group_vars ༏ઌ౓ɿ௿ host_vars ༏ઌ౓ɿߴ → key2͕ফ͑ͨ

Slide 41

Slide 41 text

hash_behaviour = merge • hash_behaviour=mergeͷڍಈ + group_vars ༏ઌ౓ɿ௿ host_vars ༏ઌ౓ɿߴ

Slide 42

Slide 42 text

hash_behaviour = merge • hash_behaviour=mergeͷڍಈ + → group_vars ༏ઌ౓ɿ௿ host_vars ༏ઌ౓ɿߴ key1͸্ॻ͖ key3͕௥Ճ

Slide 43

Slide 43 text

hash_behaviour = merge • γʔέϯε(Ϧετ)͸ཁૉ͕શ෦্ॻ͖͞Εͯ ͠·͏ͷͰ஫ҙ + group_vars ༏ઌ౓ɿ௿ host_vars ༏ઌ౓ɿߴ

Slide 44

Slide 44 text

hash_behaviour = merge • γʔέϯε(Ϧετ)͸ཁૉ͕શ෦্ॻ͖͞Εͯ ͠·͏ͷͰ஫ҙ + → group_vars ༏ઌ౓ɿ௿ host_vars ༏ઌ౓ɿߴ list͝ͱ্ॻ͖

Slide 45

Slide 45 text

hash_behaviour = merge • ม਺ͷޮ཰తͳ؅ཧ͕Մೳ

Slide 46

Slide 46 text

hash_behaviour = merge • ม਺ͷޮ཰తͳ؅ཧ͕Մೳ group_vars/all.yml(શαʔόڞ௨)

Slide 47

Slide 47 text

hash_behaviour = merge • ม਺ͷޮ཰తͳ؅ཧ͕Մೳ group_vars/all.yml(શαʔόڞ௨) group_vars/webservers.yml(webαʔόڞ௨) +

Slide 48

Slide 48 text

hash_behaviour = merge • ม਺ͷޮ཰తͳ؅ཧ͕Մೳ group_vars/all.yml(શαʔόڞ௨) group_vars/webservers.yml(webαʔόڞ௨) host_vars/web01.yml(web01ݻ༗ઃఆ) + +

Slide 49

Slide 49 text

hash_behaviour = merge • ม਺ͷޮ཰తͳ؅ཧ͕Մೳ group_vars/all.yml(શαʔόڞ௨) group_vars/webservers.yml(webαʔόڞ௨) host_vars/web01.yml(web01ݻ༗ઃఆ) ࠷ऴతʹweb01ʹద༻͞ΕΔม਺ → + +

Slide 50

Slide 50 text

hash_behaviour = merge • ΍Γ͗͢஫ҙ • ༧ظͤ͵্ॻ͖ • ෳ਺group_varsͷద༻ॱ • ม਺͕෼ࢄ͞Εͯ͠·͏

Slide 51

Slide 51 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ

Slide 52

Slide 52 text

ม਺,FactҰཡΛग़ྗͯ͠؅ཧ

Slide 53

Slide 53 text

ม਺,FactҰཡΛग़ྗͯ͠؅ཧ • merge͞Εͨม਺Λग़ྗ • Fact ?

Slide 54

Slide 54 text

merge͞Εͨม਺Λग़ྗ • templateϞδϡʔϧͰɺlocalhostʹશม਺Λग़ ྗ͢Δ • શม਺Λ”my_vars(೚ҙ)”ҎԼͷ֊૚ߏ଄ʹ͢ Δʢॏཁʂʣ • {{ hostvars[inventory_hostname]["my_vars"] | to_nice_yaml | indent(2, True) }}

Slide 55

Slide 55 text

merge͞Εͨม਺Λग़ྗ • Playbook ESZSVOͰ΋ग़ྗ

Slide 56

Slide 56 text

merge͞Εͨม਺Λग़ྗ • template

Slide 57

Slide 57 text

merge͞Εͨม਺Λग़ྗ • ͜Μͳײ͡

Slide 58

Slide 58 text

Fact ? • SetupϞδϡʔϧʹΑΓऩू͞ΕΔର৅ϗετ ͷ؀ڥ৘ใ • ansible_*ͱͯ͠ࢀরՄೳ

Slide 59

Slide 59 text

͔ͤͬ͘ͳΜͰFact΋ग़ྗ͠·͔͢ • ྫ͑͹ɺΧʔωϧͷόʔδϣϯͳΒ {{ hostvars[inventory_hostname] [ansible_kernel] }} • ͍ͬͺ͍͋ΔͷͰ؅ཧ͍ͨ͠৘ใΛ͓޷ΈͰ

Slide 60

Slide 60 text

͔ͤͬ͘ͳΜͰFact΋ग़ྗ͠·͔͢ • ͜Μͳײ͡

Slide 61

Slide 61 text

ࠓͷαʔόͷߏ੒ɺ ͜͏ͳͬͯ·͢❤

Slide 62

Slide 62 text

ύϥϝʔλγʔτײʂ

Slide 63

Slide 63 text

͜ΕΛgitͰ؅ཧ͢Ε͹

Slide 64

Slide 64 text

ߏ੒؅ཧʂ

Slide 65

Slide 65 text

·ͱΊ

Slide 66

Slide 66 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ

Slide 67

Slide 67 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ →ߏஙखॱͱύϥϝʔλΛ෼ׂ

Slide 68

Slide 68 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ →ߏஙखॱͱύϥϝʔλΛ෼ׂ →ύϥϝʔλΛޮ཰తʹ؅ཧ

Slide 69

Slide 69 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ ≒ ύϥϝʔλγʔτ →ߏஙखॱͱύϥϝʔλΛ෼ׂ →ύϥϝʔλΛޮ཰తʹ؅ཧ

Slide 70

Slide 70 text

ࡓ͑ͨ΍Γ͔ͨ • Playbookͱม਺Λ෼͚Δ • hash_behaviour = merge • ม਺,FactҰཡΛग़ྗͯ͠؅ཧ ≒ ύϥϝʔλγʔτˠgit؅ཧ →ߏஙखॱͱύϥϝʔλΛ෼ׂ →ύϥϝʔλΛޮ཰తʹ؅ཧ

Slide 71

Slide 71 text

એ఻ • ଞʹ΋Ansibleωλॻ͍ͯ·͢ • https://qiita.com/isobecky74

Slide 72

Slide 72 text

Thank you !