WEBVTT

1
00:00:04.955 --> 00:00:05.535
<00:00:04.955>Hey <00:00:05.477>everybody.

2
00:00:05.535 --> 00:00:07.415
<00:00:05.535>Welcome <00:00:06.001>to <00:00:06.468>building <00:00:06.935>Applications

3
00:00:07.415 --> 00:00:09.175
<00:00:07.415>with <00:00:07.881>Infrastructure <00:00:08.348>As <00:00:08.815>Code.

4
00:00:09.395 --> 00:00:13.255
<00:00:09.395>My <00:00:09.535>name's <00:00:09.674>Talia <00:00:09.815>Anasi, <00:00:09.955>and <00:00:10.094>let's <00:00:10.235>go <00:00:10.375>ahead <00:00:10.514>and <00:00:10.655>get <00:00:10.795>started.

5
00:00:16.235 --> 00:00:20.815
<00:00:16.235>So <00:00:16.390>I <00:00:16.546>am <00:00:16.701>a <00:00:16.857>lead <00:00:17.012>developer <00:00:17.168>advocate <00:00:17.323>for <00:00:17.479>Akamai <00:00:17.634>Technologies,

6
00:00:21.315 --> 00:00:24.615
<00:00:21.315>and <00:00:21.455>my <00:00:21.595>job <00:00:21.735>is <00:00:21.875>just <00:00:22.015>to <00:00:22.155>build <00:00:22.295>things <00:00:22.435>in <00:00:22.575>the <00:00:22.715>cloud,

7
00:00:24.715 --> 00:00:26.415
<00:00:24.715>and <00:00:24.915>then <00:00:25.115>I <00:00:25.315>talk <00:00:25.515>and <00:00:25.715>write <00:00:25.915>about <00:00:26.115>them.

8
00:00:27.155 --> 00:00:30.535
<00:00:27.155>Um, <00:00:27.295>before <00:00:27.435>becoming <00:00:27.575>a <00:00:27.715>dev <00:00:27.855>advocate, <00:00:27.995>I <00:00:28.135>was <00:00:28.275>a <00:00:28.415>test <00:00:28.555>engineer,

9
00:00:30.535 --> 00:00:35.455
<00:00:30.535>so <00:00:30.710>I <00:00:30.885>was <00:00:31.060>responsible <00:00:31.235>for <00:00:31.410>QA <00:00:31.585>automation <00:00:31.760>testing, <00:00:31.935>um,

10
00:00:36.525 --> 00:00:41.055
<00:00:36.525>full <00:00:36.725>like <00:00:36.925>end-to-end <00:00:37.125>tests, <00:00:37.324>integration, <00:00:37.525>testing, <00:00:37.725>all, <00:00:37.925>all

11
00:00:41.055 --> 00:00:43.095
<00:00:41.055>of <00:00:41.230>the, <00:00:41.405>basically <00:00:41.580>every <00:00:41.755>part <00:00:41.930>of <00:00:42.105>the <00:00:42.280>testing <00:00:42.455>cycle.

12
00:00:43.955 --> 00:00:47.935
<00:00:43.955>Um, <00:00:44.095>before <00:00:44.235>Akamai, <00:00:44.375>I <00:00:44.515>was <00:00:44.655>at <00:00:44.795>AWS <00:00:44.934>on <00:00:45.074>the <00:00:45.214>serverless <00:00:45.355>team.

13
00:00:48.195 --> 00:00:50.695
<00:00:48.195>Um, <00:00:48.395>before <00:00:48.595>that <00:00:48.795>I <00:00:48.995>was <00:00:49.195>at <00:00:49.395>WeWork, <00:00:49.595>um,

14
00:00:50.845 --> 00:00:52.895
<00:00:50.845>comp <00:00:51.045>I <00:00:51.245>was <00:00:51.445>a <00:00:51.644>test <00:00:51.845>engineer <00:00:52.045>at <00:00:52.245>Visa.

15
00:00:53.235 --> 00:00:55.695
<00:00:53.235>So <00:00:53.410>I've <00:00:53.585>worked <00:00:53.760>at <00:00:53.935>some, <00:00:54.110>like <00:00:54.285>pretty <00:00:54.460>corporate <00:00:54.635>companies.

16
00:00:55.695 --> 00:00:57.495
<00:00:55.695>I've <00:00:55.928>also <00:00:56.161>worked <00:00:56.395>at <00:00:56.628>like <00:00:56.861>smaller <00:00:57.095>companies.

17
00:00:58.915 --> 00:01:03.295
<00:00:58.915>Um, <00:00:59.055>and <00:00:59.195>something <00:00:59.335>that <00:00:59.475>I <00:00:59.615>want <00:00:59.754>to <00:00:59.894>talk <00:01:00.035>about <00:01:00.175>today <00:01:00.315>is

18
00:01:03.955 --> 00:01:05.815
<00:01:03.955>infrastructure <00:01:04.655>as <00:01:05.355>code,

19
00:01:05.815 --> 00:01:09.775
<00:01:05.815>because <00:01:05.990>it <00:01:06.164>relates <00:01:06.340>to, <00:01:06.515>um, <00:01:06.690>a <00:01:06.865>lot <00:01:07.039>of <00:01:07.215>different

20
00:01:11.195 --> 00:01:12.955
<00:01:11.195>companies <00:01:11.428>and <00:01:11.661>a <00:01:11.895>lot <00:01:12.128>of <00:01:12.361>different <00:01:12.595>scales.

21
00:01:12.955 --> 00:01:14.555
<00:01:12.955>It <00:01:13.082>could <00:01:13.209>be <00:01:13.336>a <00:01:13.464>small <00:01:13.591>company, <00:01:13.718>it <00:01:13.845>could <00:01:13.973>be <00:01:14.100>a <00:01:14.227>big <00:01:14.355>company.

22
00:01:15.295 --> 00:01:19.195
<00:01:15.295>Um, <00:01:15.450>but <00:01:15.606>I <00:01:15.761>wanna <00:01:15.917>go <00:01:16.072>through <00:01:16.228>an <00:01:16.383>introduction <00:01:16.539>to <00:01:16.695>infrastructure

23
00:01:19.255 --> 00:01:22.595
<00:01:19.255>as <00:01:19.455>code <00:01:19.655>and <00:01:19.854>really <00:01:20.054>understand <00:01:20.255>the <00:01:20.455>use <00:01:20.655>cases

24
00:01:23.255 --> 00:01:27.315
<00:01:23.255>and, <00:01:23.395>um, <00:01:23.535>the <00:01:23.675>why <00:01:23.815>and <00:01:23.955>what <00:01:24.095>some <00:01:24.235>of <00:01:24.375>the <00:01:24.515>benefits <00:01:24.655>are.

25
00:01:27.895 --> 00:01:30.795
<00:01:27.895>And <00:01:28.095>then <00:01:28.295>we'll <00:01:28.494>talk <00:01:28.695>about <00:01:28.895>some <00:01:29.095>tools, <00:01:29.295>um,

26
00:01:31.135 --> 00:01:33.395
<00:01:31.135>and <00:01:31.335>then <00:01:31.535>we'll <00:01:31.735>go <00:01:31.935>through <00:01:32.135>a <00:01:32.335>quick <00:01:32.535>demo.

27
00:01:36.615 --> 00:01:37.955
<00:01:36.615>So <00:01:37.218>many <00:01:37.821>times

28
00:01:38.705 --> 00:01:42.315
<00:01:38.705>when <00:01:38.905>developers <00:01:39.105>start <00:01:39.304>building <00:01:39.505>applications <00:01:39.705>in <00:01:39.905>the <00:01:40.105>cloud,

29
00:01:42.545 --> 00:01:44.715
<00:01:42.545>they, <00:01:42.778>they'll <00:01:43.011>start <00:01:43.245>in <00:01:43.478>the <00:01:43.711>console, <00:01:43.945>right?

30
00:01:44.895 --> 00:01:47.035
<00:01:44.895>So <00:01:45.128>you <00:01:45.361>choose <00:01:45.595>the <00:01:45.828>services <00:01:46.061>you <00:01:46.295>want

31
00:01:47.055 --> 00:01:48.195
<00:01:47.055>and <00:01:47.311>then <00:01:47.568>you <00:01:47.824>connect <00:01:48.080>them.

32
00:01:48.375 --> 00:01:51.315
<00:01:48.375>You <00:01:48.575>build <00:01:48.775>your <00:01:48.975>Lambda <00:01:49.175>function <00:01:49.375>here, <00:01:49.575>you <00:01:49.775>choose

33
00:01:51.315 --> 00:01:53.515
<00:01:51.315>what <00:01:51.470>you <00:01:51.626>want <00:01:51.781>as <00:01:51.937>a <00:01:52.092>trigger <00:01:52.248>for <00:01:52.403>your <00:01:52.559>lambda <00:01:52.715>function.

34
00:01:53.515 --> 00:01:55.795
<00:01:53.515>Here, <00:01:53.670>you <00:01:53.826>want, <00:01:53.981>what <00:01:54.137>do <00:01:54.292>you <00:01:54.448>want <00:01:54.603>as <00:01:54.759>your <00:01:54.915>destination?

35
00:01:56.055 --> 00:02:00.475
<00:01:56.055>You <00:01:56.210>have <00:01:56.366>maybe <00:01:56.521>a <00:01:56.677>database <00:01:56.832>connected, <00:01:56.988>maybe <00:01:57.143>a <00:01:57.299>server, <00:01:57.455>um,

36
00:02:00.535 --> 00:02:03.915
<00:02:00.535>and <00:02:00.675>you <00:02:00.815>can <00:02:00.955>create <00:02:01.095>like <00:02:01.235>all <00:02:01.375>the <00:02:01.515>resources <00:02:01.655>you <00:02:01.795>need <00:02:01.935>right

37
00:02:03.915 --> 00:02:05.435
<00:02:03.915>there <00:02:04.371>from <00:02:04.827>the <00:02:05.283>console.

38
00:02:06.135 --> 00:02:09.275
<00:02:06.135>And <00:02:06.290>this <00:02:06.446>is <00:02:06.601>a <00:02:06.757>really <00:02:06.912>great <00:02:07.068>way <00:02:07.223>to <00:02:07.379>learn, <00:02:07.535>right?

39
00:02:09.275 --> 00:02:13.515
<00:02:09.275>Because <00:02:09.414>you <00:02:09.555>have <00:02:09.695>this <00:02:09.835>ui, <00:02:09.975>um, <00:02:10.115>where <00:02:10.255>you <00:02:10.395>can <00:02:10.535>see <00:02:10.675>everything

40
00:02:13.515 --> 00:02:15.035
<00:02:13.515>that <00:02:13.788>you <00:02:14.062>have <00:02:14.335>in <00:02:14.609>your <00:02:14.882>application.

41
00:02:16.615 --> 00:02:19.955
<00:02:16.615>The <00:02:16.770>only <00:02:16.926>problem <00:02:17.081>comes <00:02:17.237>when <00:02:17.392>you <00:02:17.548>wanna <00:02:17.703>move <00:02:17.859>your <00:02:18.015>resources

42
00:02:20.015 --> 00:02:21.115
<00:02:20.015>to <00:02:20.510>different <00:02:21.005>accounts,

43
00:02:21.535 --> 00:02:24.035
<00:02:21.535>or <00:02:21.690>you <00:02:21.846>wanna <00:02:22.001>move <00:02:22.157>it <00:02:22.312>from <00:02:22.468>one <00:02:22.623>environment <00:02:22.779>to <00:02:22.935>another,

44
00:02:24.695 --> 00:02:26.795
<00:02:24.695>or <00:02:25.045>just <00:02:25.394>somehow <00:02:25.745>like <00:02:26.095>replicate

45
00:02:26.795 --> 00:02:28.075
<00:02:26.795>what <00:02:27.025>you've <00:02:27.255>done <00:02:27.486>in <00:02:27.716>the <00:02:27.947>console.

46
00:02:28.895 --> 00:02:31.155
<00:02:28.895>So <00:02:29.095>chances <00:02:29.295>are <00:02:29.495>you're <00:02:29.695>not <00:02:29.895>gonna <00:02:30.095>know <00:02:30.295>exactly

47
00:02:31.415 --> 00:02:33.875
<00:02:31.415>how <00:02:31.570>you <00:02:31.726>set <00:02:31.881>up <00:02:32.037>these <00:02:32.192>resources <00:02:32.348>in <00:02:32.503>the <00:02:32.659>first <00:02:32.815>place

48
00:02:34.215 --> 00:02:37.195
<00:02:34.215>and <00:02:34.495>exactly <00:02:34.775>which <00:02:35.055>configurations <00:02:35.335>you <00:02:35.615>set.

49
00:02:38.175 --> 00:02:40.995
<00:02:38.175>And <00:02:38.330>so <00:02:38.486>to <00:02:38.641>solve <00:02:38.797>this <00:02:38.952>problem, <00:02:39.108>we're <00:02:39.263>gonna <00:02:39.419>look <00:02:39.575>outside

50
00:02:40.995 --> 00:02:44.435
<00:02:40.995>of <00:02:41.170>the <00:02:41.345>console <00:02:41.520>to <00:02:41.695>something <00:02:41.870>called <00:02:42.045>infrastructure <00:02:42.220>as <00:02:42.395>code.

51
00:02:45.215 --> 00:02:46.915
<00:02:45.215>So <00:02:45.565>with <00:02:45.915>infrastructure <00:02:46.265>as <00:02:46.615>code,

52
00:02:46.985 --> 00:02:48.675
<00:02:46.985>what <00:02:47.265>you're <00:02:47.545>doing <00:02:47.825>is <00:02:48.105>you're <00:02:48.385>automating

53
00:02:48.675 --> 00:02:49.755
<00:02:48.675>this <00:02:49.161>provisioning <00:02:49.647>process.

54
00:02:50.015 --> 00:02:52.435
<00:02:50.015>So <00:02:50.214>you're <00:02:50.415>not <00:02:50.614>gonna <00:02:50.815>go <00:02:51.015>to <00:02:51.214>the <00:02:51.415>console,

55
00:02:52.685 --> 00:02:55.955
<00:02:52.685>click <00:02:52.860>on <00:02:53.035>the <00:02:53.210>services <00:02:53.385>you <00:02:53.560>want, <00:02:53.735>configure <00:02:53.910>the <00:02:54.085>resources

56
00:02:55.955 --> 00:02:58.635
<00:02:55.954>and <00:02:56.130>everything <00:02:56.304>from <00:02:56.480>the <00:02:56.654>ui <00:02:56.829>from <00:02:57.005>your <00:02:57.179>cloud <00:02:57.355>provider.

57
00:02:59.315 --> 00:03:01.405
<00:02:59.315>What <00:02:59.470>you're <00:02:59.626>gonna <00:02:59.781>do <00:02:59.937>is <00:03:00.092>you're <00:03:00.248>gonna <00:03:00.403>create <00:03:00.559>something <00:03:00.715>called

58
00:03:01.565 --> 00:03:02.805
<00:03:01.565>a <00:03:02.123>configuration <00:03:02.681>file

59
00:03:02.895 --> 00:03:05.885
<00:03:02.895>where <00:03:03.095>you <00:03:03.295>define <00:03:03.495>all <00:03:03.695>the <00:03:03.895>resources <00:03:04.095>you <00:03:04.295>want

60
00:03:05.945 --> 00:03:08.365
<00:03:05.945>and <00:03:06.178>all <00:03:06.411>the <00:03:06.644>configurations <00:03:06.878>for <00:03:07.111>those <00:03:07.345>resources,

61
00:03:09.025 --> 00:03:12.125
<00:03:09.025>and <00:03:09.258>that's <00:03:09.491>how <00:03:09.725>you <00:03:09.958>instantiate <00:03:10.191>your <00:03:10.425>infrastructure.

62
00:03:16.705 --> 00:03:21.045
<00:03:16.704>So <00:03:16.844>in <00:03:16.984>this <00:03:17.124>configuration <00:03:17.265>file, <00:03:17.404>you <00:03:17.545>have <00:03:17.684>one <00:03:17.825>place <00:03:17.964>with <00:03:18.105>all

63
00:03:21.045 --> 00:03:24.285
<00:03:21.045>of <00:03:21.200>the <00:03:21.356>steps <00:03:21.511>and <00:03:21.667>configuration <00:03:21.822>for <00:03:21.978>your <00:03:22.133>application <00:03:22.289>that <00:03:22.445>you

64
00:03:24.825 --> 00:03:26.765
<00:03:24.825>can <00:03:25.174>reuse <00:03:25.524>whenever <00:03:25.875>you <00:03:26.225>need.

65
00:03:27.345 --> 00:03:28.925
<00:03:27.345>And <00:03:27.625>the <00:03:27.905>great <00:03:28.185>part <00:03:28.465>about <00:03:28.745>this,

66
00:03:29.185 --> 00:03:33.285
<00:03:29.185>and <00:03:29.312>kind <00:03:29.439>of <00:03:29.566>the <00:03:29.694>highlight <00:03:29.821>of <00:03:29.948>this <00:03:30.075>is <00:03:30.203>that <00:03:30.330>you <00:03:30.457>treat <00:03:30.585>your

67
00:03:34.205 --> 00:03:37.045
<00:03:34.204>configuration <00:03:34.438>files <00:03:34.671>and <00:03:34.904>your <00:03:35.138>infrastructure <00:03:35.371>as <00:03:35.605>code.

68
00:03:37.465 --> 00:03:39.525
<00:03:37.465>And <00:03:37.592>so <00:03:37.719>what <00:03:37.846>are <00:03:37.974>some <00:03:38.101>of <00:03:38.228>the <00:03:38.355>things <00:03:38.483>we <00:03:38.610>do <00:03:38.737>with <00:03:38.865>code?

69
00:03:39.865 --> 00:03:42.565
<00:03:39.865>We <00:03:40.005>version <00:03:40.145>it, <00:03:40.285>we <00:03:40.425>put <00:03:40.565>it <00:03:40.705>in <00:03:40.845>a <00:03:40.985>repo <00:03:41.125>and <00:03:41.265>GitHub

70
00:03:42.565 --> 00:03:44.165
<00:03:42.565>or <00:03:42.798>code <00:03:43.031>commit <00:03:43.265>or <00:03:43.498>something <00:03:43.731>like <00:03:43.965>that.

71
00:03:44.585 --> 00:03:47.165
<00:03:44.585>And <00:03:44.725>then <00:03:44.865>you <00:03:45.005>deploy <00:03:45.145>a <00:03:45.285>version <00:03:45.425>and <00:03:45.565>you <00:03:45.705>work <00:03:45.845>on <00:03:45.985>it,

72
00:03:47.185 --> 00:03:48.485
<00:03:47.185>and <00:03:47.380>then <00:03:47.575>you <00:03:47.770>merge <00:03:47.965>a <00:03:48.160>new <00:03:48.355>version

73
00:03:48.665 --> 00:03:50.725
<00:03:48.665>and <00:03:48.820>then <00:03:48.976>you <00:03:49.131>can <00:03:49.287>roll <00:03:49.442>back <00:03:49.598>if <00:03:49.753>you <00:03:49.909>need <00:03:50.065>to.

74
00:03:50.945 --> 00:03:55.245
<00:03:50.945>So <00:03:51.120>when <00:03:51.295>you <00:03:51.470>move <00:03:51.644>into <00:03:51.820>this <00:03:51.995>new <00:03:52.170>way <00:03:52.345>of,

75
00:03:55.865 --> 00:03:59.045
<00:03:55.865>um, <00:03:56.145>working <00:03:56.425>with <00:03:56.705>infrastructure <00:03:56.985>as <00:03:57.265>code,

76
00:03:59.425 --> 00:04:01.605
<00:03:59.425>you <00:03:59.658>treat <00:03:59.891>your <00:04:00.125>infrastructure <00:04:00.358>the <00:04:00.591>same <00:04:00.825>way

77
00:04:01.605 --> 00:04:02.645
<00:04:01.605>that <00:04:01.839>you <00:04:02.073>treat <00:04:02.307>your <00:04:02.541>code.

78
00:04:02.865 --> 00:04:04.405
<00:04:02.865>So <00:04:03.327>if <00:04:03.789>something <00:04:04.251>breaks

79
00:04:04.505 --> 00:04:07.485
<00:04:04.505>and <00:04:04.680>your <00:04:04.855>infrastructure <00:04:05.030>isn't <00:04:05.204>working, <00:04:05.380>you <00:04:05.555>roll <00:04:05.730>it <00:04:05.905>back

80
00:04:07.585 --> 00:04:09.125
<00:04:07.585>to <00:04:07.816>a <00:04:08.047>different <00:04:08.278>version <00:04:08.509>that <00:04:08.740>was <00:04:08.971>working,

81
00:04:09.345 --> 00:04:10.565
<00:04:09.345>or <00:04:09.564>you <00:04:09.784>try <00:04:10.003>a <00:04:10.223>new <00:04:10.442>version,

82
00:04:10.905 --> 00:04:13.605
<00:04:10.905>or <00:04:11.060>you <00:04:11.216>can <00:04:11.371>move <00:04:11.527>it <00:04:11.682>over <00:04:11.838>here <00:04:11.993>to <00:04:12.149>another <00:04:12.305>environment,

83
00:04:14.625 --> 00:04:19.125
<00:04:14.625>you <00:04:14.858>have <00:04:15.091>this <00:04:15.325>flexibility <00:04:15.558>to <00:04:15.791>build <00:04:16.024>change

84
00:04:19.505 --> 00:04:22.765
<00:04:19.505>and <00:04:19.704>manage <00:04:19.904>your <00:04:20.105>infrastructure <00:04:20.305>in <00:04:20.505>a <00:04:20.704>safe, <00:04:20.904>consistent

85
00:04:22.785 --> 00:04:23.885
<00:04:22.785>and <00:04:23.280>repeatable <00:04:23.775>way.

86
00:04:27.315 --> 00:04:28.455
<00:04:27.315>So <00:04:27.571>why <00:04:27.828>is <00:04:28.084>this <00:04:28.341>important?

87
00:04:28.455 --> 00:04:30.215
<00:04:28.455>Like <00:04:28.734>why <00:04:29.015>is <00:04:29.294>building <00:04:29.575>with <00:04:29.854>infrastructure

88
00:04:31.035 --> 00:04:33.255
<00:04:31.035>as <00:04:31.268>code <00:04:31.501>better <00:04:31.735>than <00:04:31.968>from <00:04:32.201>a <00:04:32.435>ui?

89
00:04:34.835 --> 00:04:37.055
<00:04:34.835>So <00:04:35.068>by <00:04:35.301>using <00:04:35.534>the <00:04:35.768>same <00:04:36.001>configuration <00:04:36.234>files,

90
00:04:37.195 --> 00:04:40.015
<00:04:37.195>you <00:04:37.474>ensure <00:04:37.755>consistency <00:04:38.034>across <00:04:38.315>these <00:04:38.594>environments.

91
00:04:40.195 --> 00:04:42.295
<00:04:40.195>And <00:04:40.474>this <00:04:40.755>takes <00:04:41.034>care <00:04:41.315>of <00:04:41.594>that.

92
00:04:42.325 --> 00:04:45.095
<00:04:42.325>Well, <00:04:42.525>hey, <00:04:42.724>it <00:04:42.925>works <00:04:43.125>on <00:04:43.325>my <00:04:43.525>machine <00:04:43.724>phenomenon.

93
00:04:45.275 --> 00:04:48.775
<00:04:45.275>You <00:04:45.430>have <00:04:45.586>one <00:04:45.741>source <00:04:45.897>of <00:04:46.052>truth <00:04:46.208>that's <00:04:46.363>this <00:04:46.519>configuration <00:04:46.674>file.

94
00:04:48.835 --> 00:04:51.015
<00:04:48.835>And <00:04:48.974>this <00:04:49.114>happened <00:04:49.255>a <00:04:49.395>lot <00:04:49.534>when <00:04:49.674>I <00:04:49.815>was <00:04:49.955>a <00:04:50.094>test <00:04:50.234>engineer.

95
00:04:51.015 --> 00:04:54.015
<00:04:51.015>Like <00:04:51.122>I <00:04:51.230>would <00:04:51.338>see <00:04:51.445>this <00:04:51.553>all <00:04:51.661>the <00:04:51.768>time <00:04:51.876>where <00:04:51.984>I <00:04:52.091>would <00:04:52.199>open <00:04:52.307>a <00:04:52.414>bug,

96
00:04:54.475 --> 00:04:55.975
<00:04:54.475>um, <00:04:54.745>I <00:04:55.015>would <00:04:55.285>find <00:04:55.555>something <00:04:55.825>wrong,

97
00:04:56.035 --> 00:04:57.615
<00:04:56.034>and <00:04:56.234>I <00:04:56.434>would, <00:04:56.635>you <00:04:56.835>know, <00:04:57.034>take <00:04:57.234>a <00:04:57.434>screenshot

98
00:04:57.615 --> 00:04:58.895
<00:04:57.615>and <00:04:57.903>write <00:04:58.191>a <00:04:58.479>defect <00:04:58.767>report,

99
00:04:58.895 --> 00:05:02.495
<00:04:58.895>and <00:04:59.011>then <00:04:59.128>I <00:04:59.245>would <00:04:59.361>send <00:04:59.478>it <00:04:59.594>over <00:04:59.711>to <00:04:59.828>the <00:04:59.945>developers <00:05:00.061>to <00:05:00.178>say, <00:05:00.294>Hey,

100
00:05:02.495 --> 00:05:03.735
<00:05:02.495>you <00:05:02.681>know, <00:05:02.867>this <00:05:03.053>is <00:05:03.239>what's <00:05:03.425>going <00:05:03.611>on.

101
00:05:03.755 --> 00:05:05.215
<00:05:03.755>And <00:05:04.017>they <00:05:04.280>would <00:05:04.543>respond <00:05:04.806>with, <00:05:05.068>oh,

102
00:05:05.215 --> 00:05:06.455
<00:05:05.215>well <00:05:05.438>it <00:05:05.661>works <00:05:05.884>on <00:05:06.107>my <00:05:06.330>machine.

103
00:05:07.195 --> 00:05:09.975
<00:05:07.195>So <00:05:07.335>this <00:05:07.474>is <00:05:07.615>something <00:05:07.755>that <00:05:07.895>you <00:05:08.034>see <00:05:08.175>a <00:05:08.315>lot <00:05:08.455>in, <00:05:08.594>um,

104
00:05:10.595 --> 00:05:13.495
<00:05:10.595>the <00:05:10.770>software <00:05:10.945>development <00:05:11.120>life <00:05:11.295>cycle <00:05:11.470>between <00:05:11.645>dev <00:05:11.820>and <00:05:11.995>qa.

105
00:05:13.885 --> 00:05:15.615
<00:05:13.885>It's <00:05:14.164>something <00:05:14.445>that <00:05:14.724>you <00:05:15.005>see, <00:05:15.284>um,

106
00:05:16.245 --> 00:05:18.335
<00:05:16.245>with <00:05:16.525>customer <00:05:16.805>success <00:05:17.085>when <00:05:17.365>they're <00:05:17.645>trying

107
00:05:18.335 --> 00:05:21.415
<00:05:18.335>to <00:05:18.510>reproduce <00:05:18.685>an <00:05:18.859>issue <00:05:19.034>that <00:05:19.210>that <00:05:19.385>happens <00:05:19.560>in <00:05:19.734>production.

108
00:05:22.035 --> 00:05:24.655
<00:05:22.035>Um, <00:05:22.190>so <00:05:22.346>it <00:05:22.501>happens <00:05:22.657>a <00:05:22.812>lot <00:05:22.968>across <00:05:23.123>many <00:05:23.279>different <00:05:23.435>teams,

109
00:05:24.795 --> 00:05:28.775
<00:05:24.795>and <00:05:24.911>this <00:05:25.028>is <00:05:25.145>one <00:05:25.261>of <00:05:25.378>the <00:05:25.495>ways <00:05:25.611>that, <00:05:25.728>um, <00:05:25.845>we <00:05:25.961>can <00:05:26.078>combat <00:05:26.195>that.

110
00:05:30.445 --> 00:05:32.775
<00:05:30.445>It's <00:05:30.678>also <00:05:30.911>really <00:05:31.145>great <00:05:31.378>for <00:05:31.611>onboarding <00:05:31.844>developers.

111
00:05:33.475 --> 00:05:36.055
<00:05:33.475>Um, <00:05:33.630>so <00:05:33.786>like <00:05:33.941>when <00:05:34.097>a <00:05:34.252>new <00:05:34.408>developer <00:05:34.563>joins <00:05:34.719>your <00:05:34.875>team

112
00:05:36.675 --> 00:05:39.375
<00:05:36.675>and <00:05:36.908>they're <00:05:37.141>setting <00:05:37.375>up <00:05:37.608>their <00:05:37.841>environment, <00:05:38.075>um,

113
00:05:39.385 --> 00:05:40.855
<00:05:39.385>let's <00:05:39.605>say <00:05:39.826>it's <00:05:40.046>like <00:05:40.267>their <00:05:40.487>first <00:05:40.708>day

114
00:05:41.075 --> 00:05:44.255
<00:05:41.075>and <00:05:41.202>you <00:05:41.329>know, <00:05:41.456>they <00:05:41.584>get <00:05:41.711>like <00:05:41.838>this <00:05:41.965>whole <00:05:42.093>book <00:05:42.220>of <00:05:42.347>like, <00:05:42.474>okay,

115
00:05:44.255 --> 00:05:45.855
<00:05:44.255>this <00:05:44.455>is <00:05:44.655>how <00:05:44.855>you <00:05:45.055>set <00:05:45.255>up <00:05:45.455>your <00:05:45.655>environment

116
00:05:45.855 --> 00:05:49.655
<00:05:45.855>and <00:05:46.030>it's <00:05:46.205>like <00:05:46.380>3000 <00:05:46.555>pages <00:05:46.730>of <00:05:46.905>like <00:05:47.080>this <00:05:47.255>deployment

117
00:05:49.655 --> 00:05:52.135
<00:05:49.655>and <00:05:49.782>that <00:05:49.909>deployment <00:05:50.036>and <00:05:50.164>you <00:05:50.291>have <00:05:50.418>to <00:05:50.545>set <00:05:50.673>up <00:05:50.800>all <00:05:50.927>these <00:05:51.054>tools

118
00:05:52.275 --> 00:05:54.335
<00:05:52.275>and <00:05:52.625>it's <00:05:52.974>just <00:05:53.325>really <00:05:53.674>overwhelming.

119
00:05:54.995 --> 00:05:58.085
<00:05:54.995>Versus <00:05:55.228>when <00:05:55.461>you're <00:05:55.695>using <00:05:55.928>infrastructure <00:05:56.161>as <00:05:56.395>code,

120
00:05:58.145 --> 00:06:00.365
<00:05:58.145>all <00:05:58.272>you <00:05:58.399>have <00:05:58.526>to <00:05:58.654>do <00:05:58.781>for <00:05:58.908>the <00:05:59.035>new <00:05:59.163>developers <00:05:59.290>joining <00:05:59.417>your <00:05:59.544>team

121
00:06:00.385 --> 00:06:02.205
<00:06:00.385>is <00:06:00.618>just <00:06:00.851>give <00:06:01.085>them <00:06:01.318>the <00:06:01.551>configuration <00:06:01.784>file

122
00:06:02.225 --> 00:06:03.845
<00:06:02.225>and <00:06:02.575>say, <00:06:02.925>Hey, <00:06:03.275>deploy <00:06:03.625>this.

123
00:06:04.275 --> 00:06:05.685
<00:06:04.275>Done <00:06:04.698>like <00:06:05.121>everyone's <00:06:05.544>happy.

124
00:06:07.035 --> 00:06:09.685
<00:06:07.035>Another <00:06:07.268>benefit <00:06:07.501>to <00:06:07.735>infrastructure <00:06:07.968>as <00:06:08.201>code <00:06:08.435>is

125
00:06:09.685 --> 00:06:11.685
<00:06:09.685>that <00:06:10.035>it <00:06:10.385>eliminates <00:06:10.735>configuration <00:06:11.085>drift.

126
00:06:11.825 --> 00:06:14.925
<00:06:11.825>So <00:06:12.025>configuration <00:06:12.224>drift <00:06:12.425>happens <00:06:12.625>when <00:06:12.825>you <00:06:13.025>have <00:06:13.224>a

127
00:06:15.085 --> 00:06:16.445
<00:06:15.085>shift <00:06:15.697>in <00:06:16.308>environment.

128
00:06:16.585 --> 00:06:20.685
<00:06:16.585>So <00:06:16.740>let's <00:06:16.896>say <00:06:17.051>there's <00:06:17.207>an <00:06:17.362>incident <00:06:17.518>one <00:06:17.673>late <00:06:17.829>one <00:06:17.984>night,

129
00:06:20.755 --> 00:06:22.365
<00:06:20.755>like <00:06:21.221>really <00:06:21.688>late, <00:06:22.155>um,

130
00:06:22.785 --> 00:06:24.965
<00:06:22.785>and <00:06:22.985>there's <00:06:23.185>an <00:06:23.385>incident <00:06:23.585>for <00:06:23.785>your <00:06:23.985>mobile <00:06:24.185>application.

131
00:06:25.185 --> 00:06:28.845
<00:06:25.185>And <00:06:25.312>you <00:06:25.439>look <00:06:25.566>at <00:06:25.694>the <00:06:25.821>logs, <00:06:25.948>you <00:06:26.075>identify <00:06:26.203>what <00:06:26.330>the <00:06:26.457>problem <00:06:26.585>is,

132
00:06:29.065 --> 00:06:31.765
<00:06:29.065>and <00:06:29.192>in <00:06:29.319>order <00:06:29.446>to <00:06:29.574>fix <00:06:29.701>it, <00:06:29.828>you <00:06:29.955>need <00:06:30.083>to <00:06:30.210>update <00:06:30.337>a <00:06:30.465>specific

133
00:06:32.285 --> 00:06:33.485
<00:06:32.284>configuration <00:06:32.825>in <00:06:33.365>production.

134
00:06:33.745 --> 00:06:35.765
<00:06:33.745>So <00:06:33.978>you <00:06:34.211>make <00:06:34.445>the <00:06:34.678>change <00:06:34.911>in <00:06:35.145>production

135
00:06:35.825 --> 00:06:37.085
<00:06:35.825>and <00:06:36.051>you <00:06:36.278>go <00:06:36.505>back <00:06:36.732>to <00:06:36.959>sleep.

136
00:06:38.085 --> 00:06:39.405
<00:06:38.085>Although <00:06:38.382>you <00:06:38.679>fixed <00:06:38.976>the <00:06:39.272>issue,

137
00:06:39.405 --> 00:06:41.565
<00:06:39.405>you've <00:06:39.638>just <00:06:39.871>created <00:06:40.104>an <00:06:40.338>even <00:06:40.571>bigger <00:06:40.804>divide

138
00:06:41.565 --> 00:06:44.765
<00:06:41.565>between <00:06:41.844>your <00:06:42.125>staging <00:06:42.405>and <00:06:42.685>production <00:06:42.965>environments

139
00:06:44.765 --> 00:06:46.245
<00:06:44.765>because <00:06:44.986>you <00:06:45.209>didn't <00:06:45.431>make <00:06:45.653>the <00:06:45.875>same <00:06:46.097>change

140
00:06:46.265 --> 00:06:47.485
<00:06:46.265>in <00:06:46.631>your <00:06:46.997>staging <00:06:47.363>environment.

141
00:06:47.945 --> 00:06:50.645
<00:06:47.945>So <00:06:48.120>many <00:06:48.295>times, <00:06:48.469>staging <00:06:48.645>environments <00:06:48.820>are <00:06:48.995>not <00:06:49.170>the <00:06:49.344>same

142
00:06:50.705 --> 00:06:52.525
<00:06:50.705>as <00:06:50.984>production <00:06:51.265>because <00:06:51.544>of <00:06:51.825>changes <00:06:52.104>made

143
00:06:52.525 --> 00:06:53.765
<00:06:52.525>during <00:06:53.082>incident <00:06:53.640>management.

144
00:06:53.785 --> 00:06:55.605
<00:06:53.784>And <00:06:54.064>this <00:06:54.344>is <00:06:54.624>called <00:06:54.905>configuration <00:06:55.184>drift.

145
00:06:55.865 --> 00:06:59.205
<00:06:55.865>So <00:06:56.065>with <00:06:56.265>infrastructure <00:06:56.465>as <00:06:56.665>code, <00:06:56.865>rather <00:06:57.065>than <00:06:57.265>having

146
00:06:59.275 --> 00:07:03.405
<00:06:59.275>that <00:06:59.450>shift <00:06:59.625>in <00:06:59.799>environments, <00:06:59.974>you <00:07:00.150>have <00:07:00.325>one <00:07:00.500>central <00:07:00.674>authority

147
00:07:03.595 --> 00:07:05.485
<00:07:03.595>that <00:07:03.945>is <00:07:04.295>this <00:07:04.645>configuration <00:07:04.995>file.

148
00:07:05.865 --> 00:07:08.645
<00:07:05.865>And <00:07:06.040>then <00:07:06.215>you <00:07:06.390>just <00:07:06.565>push <00:07:06.740>the <00:07:06.915>infrastructure <00:07:07.090>changes <00:07:07.265>through.

149
00:07:10.265 --> 00:07:12.285
<00:07:10.265>It <00:07:10.731>also <00:07:11.198>decreases <00:07:11.664>risk.

150
00:07:12.585 --> 00:07:14.685
<00:07:12.585>So <00:07:12.864>provisioning <00:07:13.145>all <00:07:13.424>of <00:07:13.705>your <00:07:13.984>infrastructure

151
00:07:14.825 --> 00:07:16.445
<00:07:14.825>by <00:07:15.175>hand <00:07:15.525>really <00:07:15.875>is <00:07:16.224>risky.

152
00:07:16.545 --> 00:07:20.045
<00:07:16.545>It <00:07:16.700>requires <00:07:16.856>a <00:07:17.011>lot <00:07:17.167>of <00:07:17.322>manual <00:07:17.478>work <00:07:17.633>that's <00:07:17.789>error <00:07:17.945>prone.

153
00:07:20.065 --> 00:07:22.725
<00:07:20.065>It <00:07:20.240>might <00:07:20.415>require <00:07:20.590>like <00:07:20.765>one <00:07:20.940>single <00:07:21.115>person <00:07:21.290>to <00:07:21.465>do.

154
00:07:22.865 --> 00:07:25.325
<00:07:22.865>And <00:07:23.040>like <00:07:23.215>what <00:07:23.390>if <00:07:23.565>that <00:07:23.740>person <00:07:23.915>leaves <00:07:24.090>the <00:07:24.265>company

155
00:07:25.465 --> 00:07:27.205
<00:07:25.465>and <00:07:25.640>they <00:07:25.815>take <00:07:25.989>all <00:07:26.164>of <00:07:26.340>that <00:07:26.515>knowledge <00:07:26.690>with <00:07:26.864>them?

156
00:07:27.905 --> 00:07:31.445
<00:07:27.905>So <00:07:28.104>infrastructure <00:07:28.304>is <00:07:28.505>code <00:07:28.705>really <00:07:28.905>minimizes <00:07:29.104>these <00:07:29.304>risks.

157
00:07:32.065 --> 00:07:36.125
<00:07:32.065>And <00:07:32.298>so <00:07:32.531>by <00:07:32.765>representing <00:07:32.998>infrastructure <00:07:33.231>as <00:07:33.465>code,

158
00:07:36.425 --> 00:07:39.405
<00:07:36.425>you <00:07:36.658>have <00:07:36.891>these <00:07:37.125>reproducible <00:07:37.358>blocks <00:07:37.591>of <00:07:37.825>code,

159
00:07:39.405 --> 00:07:41.605
<00:07:39.405>which <00:07:39.684>are <00:07:39.965>far <00:07:40.244>less <00:07:40.525>error <00:07:40.804>prone

160
00:07:41.605 --> 00:07:44.885
<00:07:41.605>because <00:07:41.805>your <00:07:42.005>infrastructure <00:07:42.205>lives <00:07:42.405>in <00:07:42.605>a <00:07:42.805>source <00:07:43.005>code

161
00:07:45.125 --> 00:07:46.805
<00:07:45.125>repository <00:07:45.405>and <00:07:45.685>all <00:07:45.965>of <00:07:46.245>its <00:07:46.525>history

162
00:07:46.805 --> 00:07:49.485
<00:07:46.805>and <00:07:46.960>its <00:07:47.116>changes <00:07:47.271>are <00:07:47.427>visible <00:07:47.582>to <00:07:47.738>everyone <00:07:47.893>on <00:07:48.049>the <00:07:48.205>team.

163
00:07:51.145 --> 00:07:53.845
<00:07:51.145>So <00:07:51.320>how <00:07:51.495>do <00:07:51.669>we <00:07:51.844>actually <00:07:52.020>implement <00:07:52.195>infrastructure <00:07:52.370>as <00:07:52.544>code?

164
00:07:53.925 --> 00:07:55.485
<00:07:53.925>I <00:07:54.125>talked <00:07:54.325>about <00:07:54.525>this <00:07:54.725>a <00:07:54.925>little <00:07:55.125>before <00:07:55.325>with

165
00:07:55.515 --> 00:07:57.405
<00:07:55.515>what <00:07:55.865>we <00:07:56.215>call <00:07:56.565>configuration <00:07:56.914>files,

166
00:07:58.185 --> 00:08:01.165
<00:07:58.185>and <00:07:58.325>um, <00:07:58.465>we're <00:07:58.605>gonna <00:07:58.745>talk <00:07:58.885>about <00:07:59.025>some <00:07:59.165>of <00:07:59.305>the <00:07:59.445>tooling <00:07:59.585>later.

167
00:08:01.265 --> 00:08:04.925
<00:08:01.265>But, <00:08:01.392>um, <00:08:01.519>one <00:08:01.646>of <00:08:01.774>the <00:08:01.901>tools <00:08:02.028>you <00:08:02.155>can <00:08:02.283>use <00:08:02.410>is <00:08:02.537>called <00:08:02.664>Terraform.

168
00:08:04.925 --> 00:08:08.005
<00:08:04.925>Terraform <00:08:05.065>is <00:08:05.205>an <00:08:05.345>infrastructure <00:08:05.485>as <00:08:05.625>code <00:08:05.765>tool <00:08:05.905>that <00:08:06.045>you <00:08:06.185>can <00:08:06.325>use

169
00:08:08.025 --> 00:08:10.125
<00:08:08.025>for <00:08:08.491>defining <00:08:08.958>both <00:08:09.424>cloud

170
00:08:10.185 --> 00:08:13.165
<00:08:10.185>and <00:08:10.418>on-prem <00:08:10.651>resources <00:08:10.885>in <00:08:11.118>these <00:08:11.351>configuration <00:08:11.585>files.

171
00:08:13.165 --> 00:08:14.765
<00:08:13.165>So <00:08:13.320>I <00:08:13.476>wanna <00:08:13.631>take <00:08:13.787>a <00:08:13.942>look <00:08:14.098>at <00:08:14.253>one <00:08:14.409>of <00:08:14.565>one

172
00:08:14.765 --> 00:08:17.085
<00:08:14.765>of <00:08:14.940>these <00:08:15.115>configuration <00:08:15.289>files <00:08:15.465>as <00:08:15.640>a, <00:08:15.815>as <00:08:15.990>an <00:08:16.164>example.

173
00:08:18.145 --> 00:08:22.115
<00:08:18.145>So <00:08:18.320>one <00:08:18.495>of <00:08:18.669>the <00:08:18.844>most <00:08:19.020>important <00:08:19.195>things <00:08:19.370>to <00:08:19.544>note

174
00:08:22.115 --> 00:08:25.355
<00:08:22.115>with <00:08:22.315>configuration <00:08:22.515>files <00:08:22.715>is <00:08:22.915>that <00:08:23.115>they <00:08:23.315>are <00:08:23.515>declarative,

175
00:08:25.355 --> 00:08:27.795
<00:08:25.355>meaning <00:08:25.588>that <00:08:25.821>they <00:08:26.055>describe <00:08:26.288>the <00:08:26.521>end <00:08:26.755>state

176
00:08:27.815 --> 00:08:28.835
<00:08:27.815>of <00:08:28.274>your <00:08:28.733>infrastructure.

177
00:08:29.055 --> 00:08:33.955
<00:08:29.055>So <00:08:29.255>you <00:08:29.455>don't <00:08:29.655>need <00:08:29.855>to <00:08:30.055>write <00:08:30.255>step-by-step <00:08:30.455>instructions

178
00:08:34.095 --> 00:08:35.715
<00:08:34.095>to <00:08:34.561>create <00:08:35.028>these <00:08:35.495>resources

179
00:08:35.985 --> 00:08:38.155
<00:08:35.985>because <00:08:36.335>the <00:08:36.685>infrastructure's <00:08:37.034>code <00:08:37.385>tool

180
00:08:38.155 --> 00:08:39.315
<00:08:38.155>will <00:08:38.503>handle <00:08:38.851>that <00:08:39.199>logic.

181
00:08:40.415 --> 00:08:41.915
<00:08:40.414>So <00:08:40.640>I <00:08:40.865>don't <00:08:41.089>have <00:08:41.314>to <00:08:41.539>go <00:08:41.765>in

182
00:08:41.915 --> 00:08:46.035
<00:08:41.914>and <00:08:42.148>say, <00:08:42.381>Hey, <00:08:42.615>create <00:08:42.848>this <00:08:43.081>IAM <00:08:43.314>role

183
00:08:46.035 --> 00:08:47.955
<00:08:46.035>and <00:08:46.190>then <00:08:46.346>click <00:08:46.501>over <00:08:46.657>here <00:08:46.812>and <00:08:46.968>go <00:08:47.123>to <00:08:47.279>this <00:08:47.435>button,

184
00:08:48.015 --> 00:08:50.075
<00:08:48.015>and <00:08:48.142>then <00:08:48.269>click <00:08:48.396>on <00:08:48.524>like, <00:08:48.651>I <00:08:48.778>don't <00:08:48.905>need <00:08:49.033>to, <00:08:49.160>I <00:08:49.287>don't <00:08:49.415>need

185
00:08:50.075 --> 00:08:53.395
<00:08:50.075>to <00:08:50.275>say, <00:08:50.475>um, <00:08:50.675>how <00:08:50.875>to <00:08:51.075>create <00:08:51.275>these <00:08:51.475>resources.

186
00:08:53.415 --> 00:08:55.765
<00:08:53.415>All <00:08:53.542>I <00:08:53.669>have <00:08:53.796>to <00:08:53.924>do <00:08:54.051>is <00:08:54.178>list <00:08:54.305>them <00:08:54.433>in <00:08:54.560>the <00:08:54.687>configuration <00:08:54.814>file.

187
00:08:56.745 --> 00:08:59.205
<00:08:56.745>And, <00:08:57.095>um, <00:08:57.445>you <00:08:57.795>describe <00:08:58.145>what,

188
00:08:59.235 --> 00:09:01.125
<00:08:59.235>like <00:08:59.585>the <00:08:59.935>overall <00:09:00.285>topology, <00:09:00.635>right?

189
00:09:01.265 --> 00:09:04.125
<00:09:01.265>So <00:09:01.498>when <00:09:01.731>you <00:09:01.965>deploy <00:09:02.198>the <00:09:02.431>configuration <00:09:02.665>file,

190
00:09:04.455 --> 00:09:06.125
<00:09:04.455>these <00:09:04.921>resources <00:09:05.388>are <00:09:05.855>going

191
00:09:06.125 --> 00:09:10.405
<00:09:06.125>to <00:09:06.280>be <00:09:06.436>either <00:09:06.591>created <00:09:06.747>if <00:09:06.902>they're <00:09:07.058>brand <00:09:07.213>new <00:09:07.369>resources <00:09:07.525>updated,

192
00:09:10.465 --> 00:09:11.485
<00:09:10.465>if <00:09:10.771>they <00:09:11.077>already <00:09:11.383>exist

193
00:09:11.585 --> 00:09:14.165
<00:09:11.585>or <00:09:11.818>deleted <00:09:12.051>if <00:09:12.285>you <00:09:12.518>remove <00:09:12.751>something <00:09:12.985>from

194
00:09:14.165 --> 00:09:15.325
<00:09:14.165>the <00:09:14.687>configuration <00:09:15.209>file.

195
00:09:15.505 --> 00:09:19.085
<00:09:15.505>So <00:09:15.680>in <00:09:15.855>this <00:09:16.030>example <00:09:16.205>configuration <00:09:16.380>file, <00:09:16.555>we're <00:09:16.730>saying, <00:09:16.905>hello,

196
00:09:19.145 --> 00:09:22.165
<00:09:19.145>please <00:09:19.345>create <00:09:19.545>this <00:09:19.745>IAM <00:09:19.944>role <00:09:20.145>with <00:09:20.345>these <00:09:20.545>configurations,

197
00:09:22.265 --> 00:09:24.165
<00:09:22.265>and <00:09:22.545>please <00:09:22.824>create <00:09:23.105>this <00:09:23.385>lambda <00:09:23.665>function

198
00:09:24.165 --> 00:09:25.285
<00:09:24.165>with <00:09:24.669>these <00:09:25.173>configurations.

199
00:09:25.695 --> 00:09:26.965
<00:09:25.695>Thank <00:09:25.923>you. <00:09:26.152>Have <00:09:26.380>a <00:09:26.609>nice <00:09:26.838>day.

200
00:09:27.705 --> 00:09:30.845
<00:09:27.705>So <00:09:27.845>I <00:09:27.985>don't <00:09:28.125>need <00:09:28.265>to <00:09:28.405>say <00:09:28.545>how <00:09:28.685>to <00:09:28.825>create <00:09:28.965>these <00:09:29.105>resources.

201
00:09:31.005 --> 00:09:33.125
<00:09:31.005>I <00:09:31.180>don't <00:09:31.355>need <00:09:31.530>to <00:09:31.705>give, <00:09:31.880>you <00:09:32.055>know, <00:09:32.230>the <00:09:32.405>infrastructure

202
00:09:33.225 --> 00:09:34.605
<00:09:33.225>as <00:09:33.535>code <00:09:33.846>tool, <00:09:34.156>you <00:09:34.467>know,

203
00:09:34.925 --> 00:09:36.645
<00:09:34.925>specific <00:09:35.204>instructions <00:09:35.484>or <00:09:35.765>anything <00:09:36.045>like <00:09:36.324>that.

204
00:09:37.355 --> 00:09:40.965
<00:09:37.355>Your <00:09:37.530>cloud <00:09:37.705>provider <00:09:37.880>will <00:09:38.055>handle <00:09:38.230>this <00:09:38.405>logic <00:09:38.580>to <00:09:38.755>create

205
00:09:41.025 --> 00:09:44.445
<00:09:41.025>or <00:09:41.180>update <00:09:41.336>the <00:09:41.491>resources <00:09:41.647>that <00:09:41.802>are <00:09:41.958>in <00:09:42.113>the <00:09:42.269>configuration <00:09:42.425>file.

206
00:09:46.255 --> 00:09:49.205
<00:09:46.255>There <00:09:46.488>is <00:09:46.721>a <00:09:46.955>core <00:09:47.188>workflow <00:09:47.421>for <00:09:47.655>creating

207
00:09:49.225 --> 00:09:50.685
<00:09:49.225>and <00:09:49.663>managing <00:09:50.101>this <00:09:50.539>infrastructure,

208
00:09:50.985 --> 00:09:53.045
<00:09:50.985>and <00:09:51.265>there's <00:09:51.545>basically <00:09:51.825>three <00:09:52.105>different <00:09:52.385>commands.

209
00:09:53.105 --> 00:09:54.805
<00:09:53.105>So <00:09:53.385>the <00:09:53.665>first <00:09:53.945>thing <00:09:54.225>we <00:09:54.505>need

210
00:09:54.805 --> 00:09:56.965
<00:09:54.805>to <00:09:55.038>do <00:09:55.271>is <00:09:55.505>write <00:09:55.738>the <00:09:55.971>configuration <00:09:56.204>file.

211
00:09:57.305 --> 00:10:00.005
<00:09:57.305>And <00:09:57.479>this <00:09:57.655>is <00:09:57.829>where <00:09:58.005>you <00:09:58.180>define <00:09:58.354>all <00:09:58.530>the <00:09:58.704>resources.

212
00:10:00.025 --> 00:10:01.485
<00:10:00.025>We <00:10:00.244>just <00:10:00.463>saw <00:10:00.682>an <00:10:00.901>example <00:10:01.120>of <00:10:01.339>this.

213
00:10:01.825 --> 00:10:04.765
<00:10:01.825>You <00:10:01.980>wanna <00:10:02.136>create, <00:10:02.291>um, <00:10:02.447>all <00:10:02.602>of <00:10:02.758>the <00:10:02.913>elements <00:10:03.069>you <00:10:03.225>need,

214
00:10:04.765 --> 00:10:07.085
<00:10:04.765>and <00:10:04.939>you <00:10:05.115>do <00:10:05.290>that <00:10:05.465>with <00:10:05.640>the <00:10:05.814>Command <00:10:05.990>Terraform <00:10:06.165>refresh.

215
00:10:08.105 --> 00:10:09.445
<00:10:08.105>And <00:10:08.406>this <00:10:08.708>will <00:10:09.009>go <00:10:09.311>out

216
00:10:09.445 --> 00:10:11.565
<00:10:09.445>and <00:10:09.678>talk <00:10:09.911>to <00:10:10.145>the <00:10:10.378>different <00:10:10.611>infrastructure <00:10:10.845>providers.

217
00:10:11.565 --> 00:10:14.165
<00:10:11.565>It's <00:10:11.720>gonna <00:10:11.876>ask <00:10:12.031>them <00:10:12.187>what <00:10:12.342>is <00:10:12.498>out <00:10:12.653>currently <00:10:12.809>out <00:10:12.965>there,

218
00:10:14.185 --> 00:10:17.685
<00:10:14.185>what's <00:10:14.385>currently <00:10:14.584>running, <00:10:14.785>um, <00:10:14.984>what's <00:10:15.185>the <00:10:15.385>current <00:10:15.584>state?

219
00:10:18.425 --> 00:10:21.845
<00:10:18.425>And <00:10:18.658>it's <00:10:18.891>going <00:10:19.125>to, <00:10:19.358>um, <00:10:19.591>this <00:10:19.824>is

220
00:10:21.845 --> 00:10:23.525
<00:10:21.845>where <00:10:22.078>like <00:10:22.311>the <00:10:22.545>the <00:10:22.778>first <00:10:23.011>step, <00:10:23.245>right?

221
00:10:23.525 --> 00:10:25.125
<00:10:23.525>Like <00:10:23.805>what <00:10:24.084>is <00:10:24.365>currently <00:10:24.645>out <00:10:24.925>there.

222
00:10:27.355 --> 00:10:30.165
<00:10:27.355>Next <00:10:27.588>you're <00:10:27.821>gonna <00:10:28.055>run <00:10:28.288>an <00:10:28.521>execution <00:10:28.755>plan

223
00:10:30.165 --> 00:10:31.925
<00:10:30.165>with <00:10:30.515>the <00:10:30.865>command <00:10:31.214>terraform <00:10:31.564>plan.

224
00:10:32.425 --> 00:10:37.005
<00:10:32.425>And <00:10:32.564>so <00:10:32.704>in <00:10:32.844>this <00:10:32.984>stage, <00:10:33.125>Terraform <00:10:33.265>figures <00:10:33.405>out <00:10:33.545>what <00:10:33.685>it <00:10:33.824>needs

225
00:10:37.265 --> 00:10:39.045
<00:10:37.265>to <00:10:37.615>get <00:10:37.965>your <00:10:38.314>current <00:10:38.665>configuration

226
00:10:39.065 --> 00:10:40.685
<00:10:39.065>to <00:10:39.531>the <00:10:39.998>desired <00:10:40.465>configuration.

227
00:10:41.025 --> 00:10:43.765
<00:10:41.025>So <00:10:41.199>let's <00:10:41.375>say <00:10:41.550>you <00:10:41.725>write <00:10:41.900>in <00:10:42.074>your <00:10:42.250>configuration <00:10:42.425>file,

228
00:10:44.005 --> 00:10:45.805
<00:10:44.005>I <00:10:44.238>wanna <00:10:44.471>create <00:10:44.705>this <00:10:44.938>network <00:10:45.171>on <00:10:45.405>GCP,

229
00:10:46.005 --> 00:10:49.805
<00:10:46.005>or <00:10:46.145>I <00:10:46.285>wanna <00:10:46.425>create <00:10:46.564>this <00:10:46.705>database <00:10:46.845>on <00:10:46.985>AWS, <00:10:47.125>whatever <00:10:47.265>it <00:10:47.405>is,

230
00:10:50.435 --> 00:10:52.725
<00:10:50.435>what <00:10:50.668>you <00:10:50.901>define <00:10:51.135>in <00:10:51.368>your <00:10:51.601>configuration <00:10:51.834>file,

231
00:10:52.945 --> 00:10:55.045
<00:10:52.945>that's <00:10:53.411>your <00:10:53.878>desired <00:10:54.345>configuration

232
00:10:55.595 --> 00:10:59.965
<00:10:55.595>when <00:10:55.735>you <00:10:55.875>run <00:10:56.015>Terraform <00:10:56.155>Plan, <00:10:56.295>Terraform <00:10:56.435>says, <00:10:56.575>in <00:10:56.715>order <00:10:56.855>for <00:10:56.995>me

233
00:10:59.965 --> 00:11:01.325
<00:10:59.965>to <00:11:00.373>execute <00:11:00.781>this <00:11:01.189>plan

234
00:11:01.545 --> 00:11:04.725
<00:11:01.545>and <00:11:01.895>make <00:11:02.245>your <00:11:02.594>desired <00:11:02.944>configuration,

235
00:11:05.425 --> 00:11:08.245
<00:11:05.425>the <00:11:05.580>actual <00:11:05.736>configuration, <00:11:05.891>this <00:11:06.047>is <00:11:06.202>what <00:11:06.358>I <00:11:06.513>need <00:11:06.669>to <00:11:06.824>do.

236
00:11:08.405 --> 00:11:09.805
<00:11:08.405>I <00:11:08.656>need <00:11:08.909>to <00:11:09.161>create <00:11:09.413>this <00:11:09.665>resource.

237
00:11:09.925 --> 00:11:11.285
<00:11:09.925>I <00:11:10.169>need <00:11:10.414>to <00:11:10.659>update <00:11:10.904>this <00:11:11.149>resource

238
00:11:11.995 --> 00:11:14.005
<00:11:11.995>that <00:11:12.228>it's <00:11:12.461>ba <00:11:12.695>it's <00:11:12.928>the <00:11:13.161>execution <00:11:13.395>plan.

239
00:11:14.005 --> 00:11:16.645
<00:11:14.005>It's <00:11:14.121>basically, <00:11:14.238>think <00:11:14.355>of <00:11:14.471>it <00:11:14.588>as <00:11:14.705>like <00:11:14.821>a <00:11:14.938>diff <00:11:15.055>like <00:11:15.171>a <00:11:15.288>get <00:11:15.405>diff

240
00:11:16.745 --> 00:11:19.045
<00:11:16.745>of <00:11:16.945>like <00:11:17.145>the <00:11:17.345>differences <00:11:17.545>between <00:11:17.745>what's <00:11:17.945>existing <00:11:18.145>now

241
00:11:19.425 --> 00:11:21.125
<00:11:19.425>and <00:11:19.704>what <00:11:19.984>you <00:11:20.265>want <00:11:20.545>to <00:11:20.824>update.

242
00:11:22.545 --> 00:11:24.205
<00:11:22.545>And <00:11:22.824>then <00:11:23.104>we <00:11:23.385>have <00:11:23.665>Terraform <00:11:23.944>apply.

243
00:11:24.675 --> 00:11:27.005
<00:11:24.675>This <00:11:24.954>is <00:11:25.234>where <00:11:25.515>Terraform <00:11:25.795>performs <00:11:26.074>all

244
00:11:27.005 --> 00:11:30.565
<00:11:27.005>of <00:11:27.180>the <00:11:27.355>pro <00:11:27.530>proposed <00:11:27.705>operations <00:11:27.880>and <00:11:28.055>executes <00:11:28.230>the <00:11:28.405>plan.

245
00:11:30.905 --> 00:11:32.685
<00:11:30.905>It <00:11:31.105>figures <00:11:31.305>out <00:11:31.505>what <00:11:31.704>the <00:11:31.905>right <00:11:32.105>order <00:11:32.305>is

246
00:11:32.685 --> 00:11:36.645
<00:11:32.685>to <00:11:32.840>create <00:11:32.996>all <00:11:33.151>the <00:11:33.307>resources, <00:11:33.462>and <00:11:33.618>it <00:11:33.773>executes <00:11:33.929>that <00:11:34.084>plan.

247
00:11:36.825 --> 00:11:39.765
<00:11:36.825>So <00:11:37.105>it <00:11:37.385>makes <00:11:37.665>your <00:11:37.945>desired <00:11:38.225>configuration,

248
00:11:40.505 --> 00:11:42.085
<00:11:40.505>the <00:11:41.205>actual <00:11:41.905>configuration.

249
00:11:43.865 --> 00:11:45.885
<00:11:43.865>And <00:11:44.065>there's <00:11:44.265>a <00:11:44.465>couple <00:11:44.665>of <00:11:44.865>parts <00:11:45.065>to <00:11:45.265>Terraform

250
00:11:45.885 --> 00:11:47.645
<00:11:45.885>that <00:11:46.085>are <00:11:46.285>essential <00:11:46.485>to <00:11:46.685>the <00:11:46.885>way <00:11:47.085>it <00:11:47.285>works.

251
00:11:47.865 --> 00:11:49.965
<00:11:47.865>So <00:11:48.145>first <00:11:48.425>we <00:11:48.705>have <00:11:48.985>Terraform <00:11:49.265>core.

252
00:11:50.065 --> 00:11:52.485
<00:11:50.065>And <00:11:50.265>Core <00:11:50.465>is <00:11:50.665>responsible <00:11:50.865>for <00:11:51.065>a <00:11:51.265>few <00:11:51.465>things.

253
00:11:53.265 --> 00:11:56.445
<00:11:53.265>It <00:11:53.439>takes <00:11:53.615>in <00:11:53.790>that <00:11:53.965>configuration <00:11:54.140>file <00:11:54.314>again, <00:11:54.490>which <00:11:54.665>is

254
00:11:56.645 --> 00:11:57.845
<00:11:56.645>provided <00:11:56.915>by <00:11:57.185>us <00:11:57.455>the <00:11:57.725>user.

255
00:11:58.505 --> 00:12:00.845
<00:11:58.505>It <00:11:58.738>also <00:11:58.971>takes <00:11:59.205>in <00:11:59.438>the <00:11:59.671>current <00:11:59.905>state,

256
00:12:01.345 --> 00:12:03.605
<00:12:01.345>and <00:12:01.545>this <00:12:01.745>current <00:12:01.945>state <00:12:02.145>acts <00:12:02.345>as <00:12:02.545>the <00:12:02.745>source

257
00:12:03.625 --> 00:12:05.245
<00:12:03.625>of <00:12:03.975>truth <00:12:04.325>for <00:12:04.675>our <00:12:05.025>environment.

258
00:12:06.915 --> 00:12:09.805
<00:12:06.915>Terraform <00:12:07.089>uses <00:12:07.265>the <00:12:07.439>state <00:12:07.615>file <00:12:07.790>to <00:12:07.964>determine <00:12:08.140>the <00:12:08.314>changes

259
00:12:09.995 --> 00:12:13.325
<00:12:09.995>that <00:12:10.150>are, <00:12:10.306>that <00:12:10.461>we're <00:12:10.617>gonna <00:12:10.772>make <00:12:10.928>to <00:12:11.083>our <00:12:11.239>infrastructure <00:12:11.395>so

260
00:12:13.325 --> 00:12:14.965
<00:12:13.325>that <00:12:13.675>it'll <00:12:14.025>match <00:12:14.375>our <00:12:14.725>configuration.

261
00:12:15.825 --> 00:12:20.325
<00:12:15.825>And <00:12:15.980>this, <00:12:16.136>again, <00:12:16.291>this <00:12:16.447>state <00:12:16.602>file <00:12:16.758>maps <00:12:16.913>real <00:12:17.069>world <00:12:17.225>resources

262
00:12:20.345 --> 00:12:21.405
<00:12:20.345>to <00:12:20.822>our <00:12:21.299>configuration.

263
00:12:21.585 --> 00:12:23.565
<00:12:21.585>It <00:12:21.818>keeps <00:12:22.051>track <00:12:22.285>of <00:12:22.518>things <00:12:22.751>like <00:12:22.985>metadata.

264
00:12:24.665 --> 00:12:26.645
<00:12:24.665>Um, <00:12:24.944>core <00:12:25.224>is <00:12:25.505>also <00:12:25.785>responsible <00:12:26.064>for

265
00:12:26.785 --> 00:12:28.845
<00:12:26.785>how <00:12:27.018>different <00:12:27.251>pieces <00:12:27.485>relate <00:12:27.718>to <00:12:27.951>each <00:12:28.185>other.

266
00:12:31.225 --> 00:12:33.965
<00:12:31.225>And <00:12:31.425>then <00:12:31.625>on <00:12:31.825>the <00:12:32.025>backside, <00:12:32.225>we <00:12:32.425>have <00:12:32.625>providers

267
00:12:34.305 --> 00:12:37.685
<00:12:34.305>and <00:12:34.584>providers <00:12:34.864>are <00:12:35.145>how <00:12:35.425>Terraform <00:12:35.704>connects

268
00:12:37.745 --> 00:12:38.885
<00:12:37.745>to <00:12:37.950>the <00:12:38.155>rest <00:12:38.360>of <00:12:38.565>the <00:12:38.771>world.

269
00:12:39.105 --> 00:12:43.565
<00:12:39.105>And <00:12:39.260>these <00:12:39.416>could <00:12:39.571>be, <00:12:39.727>um, <00:12:39.882>cloud <00:12:40.038>providers <00:12:40.193>like <00:12:40.349>AWS, <00:12:40.505>Google,

270
00:12:43.855 --> 00:12:47.365
<00:12:43.855>Azure, <00:12:44.088>anode, <00:12:44.321>Akamai, <00:12:44.555>um, <00:12:44.788>they <00:12:45.021>could <00:12:45.255>be

271
00:12:48.355 --> 00:12:50.725
<00:12:48.355>on-prem <00:12:48.821>infrastructure <00:12:49.288>like <00:12:49.755>VMware.

272
00:12:51.195 --> 00:12:55.005
<00:12:51.195>They <00:12:51.335>could <00:12:51.475>also <00:12:51.615>be <00:12:51.755>platform <00:12:51.895>as <00:12:52.035>a <00:12:52.175>service <00:12:52.315>tools <00:12:52.455>like <00:12:52.595>Heroku

273
00:12:55.005 --> 00:12:56.005
<00:12:55.005>or <00:12:55.905>Kubernetes.

274
00:12:56.705 --> 00:12:58.645
<00:12:56.705>Um, <00:12:56.985>other <00:12:57.265>things <00:12:57.545>Terraform <00:12:57.825>could <00:12:58.105>manage

275
00:12:58.745 --> 00:13:00.205
<00:12:58.745>are <00:12:59.073>software <00:12:59.402>as <00:12:59.730>a <00:13:00.059>service.

276
00:13:00.545 --> 00:13:05.285
<00:13:00.545>So <00:13:00.700>there's <00:13:00.856>also <00:13:01.011>like <00:13:01.167>very <00:13:01.322>high <00:13:01.478>level <00:13:01.633>things <00:13:01.789>like <00:13:01.944>monitoring

277
00:13:05.285 --> 00:13:08.205
<00:13:05.285>with <00:13:05.485>like <00:13:05.685>Splunk <00:13:05.885>and <00:13:06.084>source <00:13:06.285>control <00:13:06.485>with <00:13:06.685>GitHub.

278
00:13:08.825 --> 00:13:12.765
<00:13:08.825>Um, <00:13:09.025>and <00:13:09.225>these <00:13:09.425>are <00:13:09.625>all <00:13:09.825>externally <00:13:10.025>managed <00:13:10.225>services,

279
00:13:13.025 --> 00:13:16.365
<00:13:13.025>but <00:13:13.199>what's <00:13:13.375>great <00:13:13.550>about <00:13:13.725>Terraform <00:13:13.900>is <00:13:14.074>that <00:13:14.250>it <00:13:14.425>understands

280
00:13:16.365 --> 00:13:17.965
<00:13:16.365>that <00:13:16.598>all <00:13:16.831>of <00:13:17.065>these <00:13:17.298>pieces <00:13:17.531>are <00:13:17.765>related

281
00:13:18.105 --> 00:13:19.645
<00:13:18.105>and <00:13:18.382>all <00:13:18.659>these <00:13:18.936>pieces <00:13:19.213>are <00:13:19.491>connected.

282
00:13:20.025 --> 00:13:22.805
<00:13:20.025>And <00:13:20.180>so <00:13:20.336>you <00:13:20.491>have <00:13:20.647>all <00:13:20.802>these <00:13:20.958>pieces <00:13:21.113>of <00:13:21.269>important <00:13:21.425>infrastructure

283
00:13:23.145 --> 00:13:26.885
<00:13:23.145>and <00:13:23.345>you <00:13:23.545>can't <00:13:23.745>deliver <00:13:23.944>your <00:13:24.145>application <00:13:24.345>without <00:13:24.545>your

284
00:13:26.885 --> 00:13:28.005
<00:13:26.885>infrastructure <00:13:27.221>as <00:13:27.557>a <00:13:27.893>service.

285
00:13:28.035 --> 00:13:30.125
<00:13:28.035>Your <00:13:28.190>platform <00:13:28.346>as <00:13:28.501>a <00:13:28.657>service, <00:13:28.812>your <00:13:28.968>software <00:13:29.123>as <00:13:29.279>a <00:13:29.435>service,

286
00:13:30.475 --> 00:13:33.205
<00:13:30.475>they're <00:13:30.630>all <00:13:30.786>part <00:13:30.941>of <00:13:31.097>your <00:13:31.252>logical <00:13:31.408>end <00:13:31.563>to <00:13:31.719>end <00:13:31.875>delivery.

287
00:13:34.545 --> 00:13:37.085
<00:13:34.545>And <00:13:34.719>when <00:13:34.895>you <00:13:35.069>use <00:13:35.245>an <00:13:35.420>infrastructure <00:13:35.594>as <00:13:35.770>code <00:13:35.944>tool,

288
00:13:37.465 --> 00:13:39.685
<00:13:37.465>you <00:13:37.745>get <00:13:38.025>this <00:13:38.305>single <00:13:38.585>unified <00:13:38.865>delivery

289
00:13:39.745 --> 00:13:40.925
<00:13:39.745>of <00:13:40.010>all <00:13:40.276>of <00:13:40.541>these <00:13:40.807>components.

290
00:13:41.625 --> 00:13:44.885
<00:13:41.625>And <00:13:41.765>me <00:13:41.905>as <00:13:42.045>a <00:13:42.185>developer, <00:13:42.325>like <00:13:42.465>I <00:13:42.605>don't <00:13:42.745>want <00:13:42.885>to <00:13:43.025>have,

291
00:13:45.485 --> 00:13:48.125
<00:13:45.485>I <00:13:45.625>don't <00:13:45.765>wanna <00:13:45.905>have <00:13:46.045>to <00:13:46.185>use <00:13:46.325>one <00:13:46.465>tool <00:13:46.605>for <00:13:46.745>my <00:13:46.885>infrastructure,

292
00:13:48.265 --> 00:13:49.645
<00:13:48.265>one <00:13:48.575>tool <00:13:48.886>for <00:13:49.196>my <00:13:49.507>observability

293
00:13:49.745 --> 00:13:52.965
<00:13:49.745>and <00:13:49.872>one <00:13:49.999>tool <00:13:50.126>for <00:13:50.254>every <00:13:50.381>service <00:13:50.508>that <00:13:50.635>I <00:13:50.763>add <00:13:50.890>to <00:13:51.017>my <00:13:51.145>application.

294
00:13:53.885 --> 00:13:55.325
<00:13:53.885>I <00:13:54.144>don't, <00:13:54.403>I <00:13:54.662>don't <00:13:54.921>wanna <00:13:55.181>have

295
00:13:55.325 --> 00:13:57.045
<00:13:55.325>to <00:13:55.525>like <00:13:55.725>piece <00:13:55.925>together <00:13:56.125>all <00:13:56.325>of <00:13:56.525>these <00:13:56.725>things.

296
00:13:57.795 --> 00:14:02.085
<00:13:57.795>Instead, <00:13:57.922>I <00:13:58.049>want <00:13:58.176>one <00:13:58.304>place <00:13:58.431>where <00:13:58.558>I <00:13:58.685>can <00:13:58.813>have <00:13:58.940>a <00:13:59.067>holistic <00:13:59.194>view

297
00:14:02.085 --> 00:14:05.045
<00:14:02.085>of <00:14:02.240>my <00:14:02.396>application <00:14:02.551>and <00:14:02.707>what's <00:14:02.862>going <00:14:03.018>on <00:14:03.173>on <00:14:03.329>all <00:14:03.485>sides.

298
00:14:08.705 --> 00:14:12.885
<00:14:08.705>So <00:14:08.880>let's <00:14:09.055>talk <00:14:09.230>about, <00:14:09.405>um, <00:14:09.580>kind <00:14:09.755>of <00:14:09.930>the <00:14:10.105>adopting

299
00:14:13.545 --> 00:14:16.365
<00:14:13.545>the <00:14:13.824>adaptation <00:14:14.104>of <00:14:14.385>infrastructure <00:14:14.665>as <00:14:14.944>code.

300
00:14:16.465 --> 00:14:18.965
<00:14:16.465>So <00:14:16.640>let's <00:14:16.815>talk <00:14:16.990>about <00:14:17.165>where, <00:14:17.340>how <00:14:17.515>do <00:14:17.690>you <00:14:17.865>start?

301
00:14:19.385 --> 00:14:20.645
<00:14:19.385>Let <00:14:19.763>on <00:14:20.141>day <00:14:20.519>one,

302
00:14:21.105 --> 00:14:24.085
<00:14:21.105>you <00:14:21.305>go <00:14:21.505>from <00:14:21.705>running <00:14:21.905>nothing <00:14:22.105>to <00:14:22.305>running <00:14:22.505>something.

303
00:14:24.105 --> 00:14:26.005
<00:14:24.105>And <00:14:24.280>this <00:14:24.455>is <00:14:24.630>where <00:14:24.805>you <00:14:24.980>provision <00:14:25.155>your <00:14:25.330>initial <00:14:25.505>set

304
00:14:26.005 --> 00:14:28.005
<00:14:26.005>of <00:14:26.355>infrastructure <00:14:26.705>and <00:14:27.055>you <00:14:27.405>describe

305
00:14:28.005 --> 00:14:29.845
<00:14:28.005>what <00:14:28.355>your <00:14:28.705>desired <00:14:29.055>configuration <00:14:29.405>is.

306
00:14:30.185 --> 00:14:33.045
<00:14:30.185>So <00:14:30.359>when <00:14:30.535>you <00:14:30.709>run <00:14:30.885>Terraform <00:14:31.060>Refresh, <00:14:31.234>refresh <00:14:31.410>says, <00:14:31.584>Hey,

307
00:14:33.045 --> 00:14:34.085
<00:14:33.045>there's <00:14:33.513>nothing <00:14:33.981>existing.

308
00:14:34.145 --> 00:14:37.045
<00:14:34.145>And <00:14:34.285>then <00:14:34.425>when <00:14:34.564>you <00:14:34.704>run <00:14:34.845>Terraform <00:14:34.985>Plan, <00:14:35.125>plan <00:14:35.265>is <00:14:35.405>gonna <00:14:35.545>create

309
00:14:37.045 --> 00:14:39.405
<00:14:37.045>that <00:14:37.219>execution <00:14:37.395>and <00:14:37.569>then <00:14:37.745>apply <00:14:37.920>is <00:14:38.094>gonna <00:14:38.270>go <00:14:38.444>out

310
00:14:39.405 --> 00:14:41.165
<00:14:39.405>and <00:14:39.755>create <00:14:40.105>everything <00:14:40.454>for <00:14:40.805>you.

311
00:14:41.165 --> 00:14:43.845
<00:14:41.165>Because <00:14:41.339>again, <00:14:41.515>this <00:14:41.689>is <00:14:41.865>day <00:14:42.040>one, <00:14:42.214>there's <00:14:42.390>nothing <00:14:42.564>there.

312
00:14:44.795 --> 00:14:47.405
<00:14:44.795>Then <00:14:44.995>there's <00:14:45.194>the <00:14:45.395>more <00:14:45.594>challenging <00:14:45.795>day <00:14:45.995>two <00:14:46.194>plus.

313
00:14:47.625 --> 00:14:49.565
<00:14:47.625>And <00:14:47.800>this <00:14:47.975>is <00:14:48.150>where <00:14:48.325>you <00:14:48.500>have <00:14:48.675>your <00:14:48.850>existing <00:14:49.025>set

314
00:14:49.565 --> 00:14:51.805
<00:14:49.565>of <00:14:49.765>infrastructure <00:14:49.965>and <00:14:50.165>you're <00:14:50.365>trying <00:14:50.565>to <00:14:50.765>evolve <00:14:50.965>it,

315
00:14:52.025 --> 00:14:53.605
<00:14:52.025>you're <00:14:52.375>changing <00:14:52.725>it <00:14:53.074>over <00:14:53.425>time.

316
00:14:54.385 --> 00:14:57.925
<00:14:54.385>Um, <00:14:54.585>you're <00:14:54.785>adding <00:14:54.985>new <00:14:55.185>services, <00:14:55.385>you <00:14:55.585>have, <00:14:55.785>um,

317
00:14:58.525 --> 00:15:00.405
<00:14:58.525>existing <00:14:58.805>infrastructure, <00:14:59.084>and <00:14:59.365>you <00:14:59.645>enhance <00:14:59.925>it

318
00:15:00.425 --> 00:15:01.885
<00:15:00.425>by <00:15:00.753>adding <00:15:01.082>these <00:15:01.410>other <00:15:01.739>elements

319
00:15:02.185 --> 00:15:04.365
<00:15:02.185>and <00:15:02.418>you <00:15:02.651>rerun <00:15:02.885>that <00:15:03.118>exact <00:15:03.351>same <00:15:03.584>workflow.

320
00:15:09.045 --> 00:15:12.665
<00:15:09.045>Now, <00:15:09.278>there's <00:15:09.511>many <00:15:09.745>moving <00:15:09.978>pieces <00:15:10.211>to <00:15:10.444>infrastructure.

321
00:15:13.235 --> 00:15:15.545
<00:15:13.235>Maybe <00:15:13.435>one <00:15:13.635>day <00:15:13.835>you <00:15:14.035>have <00:15:14.235>a <00:15:14.435>Lambda <00:15:14.635>function.

322
00:15:15.675 --> 00:15:18.745
<00:15:15.675>Maybe <00:15:15.802>one <00:15:15.929>day <00:15:16.056>you <00:15:16.184>add <00:15:16.311>a <00:15:16.438>database, <00:15:16.565>maybe <00:15:16.693>one <00:15:16.820>day <00:15:16.947>you <00:15:17.074>remove

323
00:15:18.745 --> 00:15:21.705
<00:15:18.745>that <00:15:18.920>database, <00:15:19.095>maybe <00:15:19.270>one <00:15:19.445>day <00:15:19.620>you <00:15:19.795>add <00:15:19.970>a <00:15:20.145>server.

324
00:15:22.325 --> 00:15:24.225
<00:15:22.325>So <00:15:22.558>you <00:15:22.791>can <00:15:23.025>imagine <00:15:23.258>like <00:15:23.491>over <00:15:23.725>time,

325
00:15:24.225 --> 00:15:26.665
<00:15:24.225>your <00:15:24.458>infrastructure <00:15:24.691>is <00:15:24.925>gonna <00:15:25.158>expand <00:15:25.391>and <00:15:25.625>evolve

326
00:15:27.005 --> 00:15:29.825
<00:15:27.005>and <00:15:27.285>you'll <00:15:27.564>likely <00:15:27.845>add <00:15:28.125>different <00:15:28.405>pieces.

327
00:15:29.925 --> 00:15:33.585
<00:15:29.925>You're <00:15:30.125>gonna <00:15:30.324>add <00:15:30.525>more <00:15:30.724>complexity, <00:15:30.925>decrease <00:15:31.125>complexity, <00:15:31.324>um,

328
00:15:35.165 --> 00:15:37.665
<00:15:35.165>and <00:15:35.339>you <00:15:35.515>have <00:15:35.689>this <00:15:35.865>process <00:15:36.040>that <00:15:36.214>you <00:15:36.390>can <00:15:36.564>use

329
00:15:38.045 --> 00:15:39.665
<00:15:38.045>that's <00:15:38.324>not <00:15:38.604>gonna <00:15:38.885>change <00:15:39.165>no <00:15:39.444>matter

330
00:15:39.665 --> 00:15:42.305
<00:15:39.665>where <00:15:39.820>you <00:15:39.976>are <00:15:40.131>in <00:15:40.287>the <00:15:40.442>evolution <00:15:40.598>of <00:15:40.753>your <00:15:40.909>life <00:15:41.064>cycle.

331
00:15:42.685 --> 00:15:43.705
<00:15:42.685>So <00:15:42.914>then <00:15:43.144>on <00:15:43.373>day <00:15:43.603>end,

332
00:15:43.705 --> 00:15:46.345
<00:15:43.705>maybe <00:15:43.905>in <00:15:44.105>the <00:15:44.305>future <00:15:44.505>you <00:15:44.705>decommission <00:15:44.905>your <00:15:45.105>infrastructure,

333
00:15:46.965 --> 00:15:49.545
<00:15:46.965>um, <00:15:47.140>maybe <00:15:47.315>these <00:15:47.490>resources <00:15:47.665>were <00:15:47.840>for <00:15:48.015>a <00:15:48.190>test <00:15:48.365>environment

334
00:15:49.545 --> 00:15:50.865
<00:15:49.545>or <00:15:49.742>for <00:15:49.941>some <00:15:50.139>reason <00:15:50.337>you <00:15:50.535>don't <00:15:50.733>need

335
00:15:50.865 --> 00:15:51.945
<00:15:50.865>that <00:15:51.351>infrastructure <00:15:51.837>anymore.

336
00:15:52.485 --> 00:15:55.505
<00:15:52.485>Um, <00:15:52.685>you <00:15:52.885>can <00:15:53.085>remove <00:15:53.285>them <00:15:53.485>with <00:15:53.685>Terraform <00:15:53.885>Destroy,

337
00:15:55.635 --> 00:15:58.665
<00:15:55.635>which <00:15:55.810>is <00:15:55.985>basically <00:15:56.160>a <00:15:56.335>specialized <00:15:56.510>version <00:15:56.685>of <00:15:56.860>applied <00:15:57.035>that

338
00:15:59.575 --> 00:16:02.665
<00:15:59.575>will <00:15:59.750>talk <00:15:59.925>to <00:16:00.100>those <00:16:00.275>providers <00:16:00.450>and <00:16:00.625>destroy <00:16:00.800>those <00:16:00.975>elements.

339
00:16:04.045 --> 00:16:06.465
<00:16:04.045>So <00:16:04.278>there's <00:16:04.511>many <00:16:04.745>advantages <00:16:04.978>to <00:16:05.211>this <00:16:05.444>workflow.

340
00:16:07.365 --> 00:16:10.675
<00:16:07.365>Um, <00:16:07.645>what's <00:16:07.925>great <00:16:08.205>about <00:16:08.485>Terraform <00:16:08.765>is

341
00:16:10.675 --> 00:16:13.755
<00:16:10.675>that <00:16:10.814>your <00:16:10.954>day <00:16:11.094>one <00:16:11.234>experience <00:16:11.375>is <00:16:11.515>identical <00:16:11.655>to <00:16:11.795>day <00:16:11.935>two, <00:16:12.074>right?

342
00:16:13.895 --> 00:16:16.195
<00:16:13.895>So <00:16:14.095>it's <00:16:14.295>something <00:16:14.495>that <00:16:14.694>you're <00:16:14.895>gonna <00:16:15.095>keep <00:16:15.295>doing,

343
00:16:16.195 --> 00:16:17.315
<00:16:16.195>you're <00:16:16.531>gonna <00:16:16.867>keep <00:16:17.203>evolving,

344
00:16:17.615 --> 00:16:19.555
<00:16:17.615>but <00:16:17.895>you <00:16:18.175>don't <00:16:18.455>need <00:16:18.735>separate <00:16:19.015>processes

345
00:16:19.615 --> 00:16:21.035
<00:16:19.615>for <00:16:19.934>each <00:16:20.254>stage <00:16:20.573>of <00:16:20.893>development.

346
00:16:21.895 --> 00:16:25.305
<00:16:21.895>Another <00:16:22.050>advantage <00:16:22.206>is <00:16:22.361>on <00:16:22.517>day <00:16:22.672>end <00:16:22.828>where <00:16:22.983>you, <00:16:23.139>you <00:16:23.295>know,

347
00:16:25.465 --> 00:16:27.385
<00:16:25.465>you <00:16:25.665>can, <00:16:25.865>you, <00:16:26.065>you <00:16:26.265>maybe <00:16:26.465>you <00:16:26.665>don't <00:16:26.865>need

348
00:16:27.385 --> 00:16:28.465
<00:16:27.385>this <00:16:27.871>infrastructure <00:16:28.357>anymore.

349
00:16:29.005 --> 00:16:30.825
<00:16:29.005>Um, <00:16:29.238>you <00:16:29.471>have <00:16:29.705>the <00:16:29.938>option <00:16:30.171>to <00:16:30.405>destroy,

350
00:16:30.825 --> 00:16:32.265
<00:16:30.825>which <00:16:31.149>cleans <00:16:31.473>up <00:16:31.797>your <00:16:32.121>environment.

351
00:16:32.885 --> 00:16:36.745
<00:16:32.885>And <00:16:33.025>so <00:16:33.165>in <00:16:33.305>this <00:16:33.444>life <00:16:33.585>cycle, <00:16:33.725>you <00:16:33.865>go <00:16:34.005>from <00:16:34.145>running <00:16:34.285>nothing

352
00:16:37.005 --> 00:16:39.585
<00:16:37.005>to <00:16:37.160>running <00:16:37.316>something <00:16:37.471>and <00:16:37.627>you <00:16:37.782>evolve <00:16:37.938>this <00:16:38.093>day <00:16:38.249>over <00:16:38.405>day,

353
00:16:39.685 --> 00:16:41.305
<00:16:39.685>and <00:16:39.964>then <00:16:40.244>you <00:16:40.525>can <00:16:40.805>decommission <00:16:41.084>it.

354
00:16:43.285 --> 00:16:45.665
<00:16:43.285>So <00:16:43.459>as <00:16:43.635>your <00:16:43.810>team <00:16:43.985>grows, <00:16:44.160>it <00:16:44.334>can <00:16:44.510>be <00:16:44.685>challenging

355
00:16:45.665 --> 00:16:47.065
<00:16:45.665>to <00:16:46.085>manage <00:16:46.505>your <00:16:46.925>infrastructure.

356
00:16:47.805 --> 00:16:49.745
<00:16:47.805>And <00:16:48.084>so <00:16:48.364>normally <00:16:48.645>companies <00:16:48.925>will <00:16:49.204>start

357
00:16:49.745 --> 00:16:52.545
<00:16:49.745>with <00:16:49.945>a <00:16:50.145>single <00:16:50.345>individual <00:16:50.545>practitioner <00:16:50.745>who's <00:16:50.945>creating <00:16:51.145>this

358
00:16:52.745 --> 00:16:54.265
<00:16:52.745>configuration <00:16:53.201>file <00:16:53.657>locally, <00:16:54.113>right?

359
00:16:54.265 --> 00:16:57.305
<00:16:54.265>Like <00:16:54.439>there's <00:16:54.615>one <00:16:54.790>person, <00:16:54.965>they're <00:16:55.140>like <00:16:55.314>the <00:16:55.490>DevOps <00:16:55.665>person,

360
00:16:57.485 --> 00:17:00.385
<00:16:57.485>and <00:16:57.685>their <00:16:57.885>workflow <00:16:58.085>will <00:16:58.285>start <00:16:58.485>with <00:16:58.685>writing <00:16:58.885>some

361
00:17:00.895 --> 00:17:02.225
<00:17:00.895>Terraform <00:17:02.092>configuration.

362
00:17:03.045 --> 00:17:06.345
<00:17:03.045>And <00:17:03.219>then <00:17:03.395>they'll, <00:17:03.569>they'll <00:17:03.745>go <00:17:03.920>through <00:17:04.095>that, <00:17:04.270>that <00:17:04.444>process

363
00:17:06.415 --> 00:17:08.105
<00:17:06.415>that <00:17:06.615>we <00:17:06.815>talked <00:17:07.014>about, <00:17:07.214>and <00:17:07.415>it's <00:17:07.615>one <00:17:07.815>person

364
00:17:08.165 --> 00:17:09.905
<00:17:08.165>and <00:17:08.398>they're <00:17:08.631>gonna <00:17:08.865>continue <00:17:09.098>to, <00:17:09.331>to <00:17:09.565>evolve

365
00:17:09.905 --> 00:17:12.305
<00:17:09.905>that <00:17:10.254>infrastructure, <00:17:10.605>um, <00:17:10.954>by <00:17:11.305>themselves.

366
00:17:12.965 --> 00:17:15.785
<00:17:12.964>And <00:17:13.139>now <00:17:13.314>what <00:17:13.490>if <00:17:13.665>you <00:17:13.839>go <00:17:14.014>from <00:17:14.189>running, <00:17:14.365>um,

367
00:17:15.895 --> 00:17:18.545
<00:17:15.895>from <00:17:16.050>a <00:17:16.206>single <00:17:16.361>individual <00:17:16.517>to <00:17:16.672>now <00:17:16.828>there's <00:17:16.983>like <00:17:17.139>multiple <00:17:17.295>teams,

368
00:17:18.545 --> 00:17:20.305
<00:17:18.545>maybe <00:17:18.745>now <00:17:18.945>you <00:17:19.145>have <00:17:19.345>like <00:17:19.545>a <00:17:19.745>DevOps <00:17:19.945>team

369
00:17:21.205 --> 00:17:24.185
<00:17:21.204>and <00:17:21.438>other <00:17:21.671>people <00:17:21.905>wanna <00:17:22.138>collaborate <00:17:22.371>on <00:17:22.605>managing

370
00:17:24.185 --> 00:17:25.305
<00:17:24.185>the <00:17:24.689>same <00:17:25.193>infrastructure.

371
00:17:25.565 --> 00:17:29.465
<00:17:25.565>So <00:17:25.692>how <00:17:25.819>do <00:17:25.946>we <00:17:26.074>make <00:17:26.201>sure <00:17:26.328>we <00:17:26.455>have <00:17:26.583>a <00:17:26.710>consistent <00:17:26.837>view <00:17:26.965>of

372
00:17:29.535 --> 00:17:31.265
<00:17:29.535>what <00:17:29.885>the <00:17:30.235>current <00:17:30.585>configuration <00:17:30.935>is

373
00:17:31.485 --> 00:17:33.745
<00:17:31.485>and <00:17:31.625>make <00:17:31.764>sure <00:17:31.905>we <00:17:32.044>don't <00:17:32.185>step <00:17:32.324>on <00:17:32.465>each <00:17:32.604>other's <00:17:32.745>toes, <00:17:32.885>right?

374
00:17:33.745 --> 00:17:37.465
<00:17:33.745>Because <00:17:33.919>we're <00:17:34.094>gonna <00:17:34.270>be <00:17:34.445>making <00:17:34.620>multiple <00:17:34.794>changes <00:17:34.969>in <00:17:35.145>parallel.

375
00:17:37.765 --> 00:17:39.625
<00:17:37.765>And <00:17:38.045>what <00:17:38.325>we <00:17:38.605>do <00:17:38.885>is, <00:17:39.165>um,

376
00:17:39.625 --> 00:17:42.105
<00:17:39.625>there's <00:17:39.905>something <00:17:40.185>called <00:17:40.465>Terraform <00:17:40.745>Enterprise, <00:17:41.025>which

377
00:17:42.725 --> 00:17:45.305
<00:17:42.725>you <00:17:42.880>still <00:17:43.036>write <00:17:43.191>your <00:17:43.347>configuration <00:17:43.502>and <00:17:43.658>you <00:17:43.813>plan <00:17:43.969>it <00:17:44.125>locally,

378
00:17:45.445 --> 00:17:48.225
<00:17:45.445>but <00:17:45.585>now <00:17:45.725>you <00:17:45.865>push <00:17:46.004>your <00:17:46.145>plan <00:17:46.284>into <00:17:46.425>a <00:17:46.564>version <00:17:46.705>control <00:17:46.845>system,

379
00:17:48.225 --> 00:17:51.005
<00:17:48.225>something <00:17:48.504>like <00:17:48.784>Bit <00:17:49.064>Bitbucket <00:17:49.344>or <00:17:49.625>GitHub.

380
00:17:51.195 --> 00:17:53.685
<00:17:51.195>Basically, <00:17:51.395>you <00:17:51.595>move <00:17:51.794>this <00:17:51.995>to <00:17:52.195>a <00:17:52.395>central <00:17:52.595>repository

381
00:17:53.775 --> 00:17:54.925
<00:17:53.775>where <00:17:54.120>you're <00:17:54.465>managing <00:17:54.810>this

382
00:17:55.025 --> 00:17:57.565
<00:17:55.025>and <00:17:55.305>you're <00:17:55.585>coordinating, <00:17:55.865>um, <00:17:56.145>the <00:17:56.425>changes.

383
00:18:01.635 --> 00:18:04.215
<00:18:01.635>And <00:18:01.835>then <00:18:02.035>your <00:18:02.235>company <00:18:02.435>does <00:18:02.635>really, <00:18:02.835>really <00:18:03.035>well.

384
00:18:04.235 --> 00:18:06.415
<00:18:04.235>And <00:18:04.435>maybe <00:18:04.635>you <00:18:04.834>have <00:18:05.034>a <00:18:05.235>lot <00:18:05.435>of <00:18:05.635>teams

385
00:18:06.415 --> 00:18:08.335
<00:18:06.415>that <00:18:06.695>are <00:18:06.975>working <00:18:07.254>on <00:18:07.534>your <00:18:07.815>infrastructure.

386
00:18:08.995 --> 00:18:12.695
<00:18:08.995>And <00:18:09.195>so <00:18:09.395>there's <00:18:09.594>people <00:18:09.794>who <00:18:09.995>don't <00:18:10.195>necessarily <00:18:10.395>need

387
00:18:12.695 --> 00:18:15.255
<00:18:12.695>to <00:18:12.870>know <00:18:13.044>about <00:18:13.220>all <00:18:13.395>the <00:18:13.570>parts <00:18:13.745>of <00:18:13.919>your <00:18:14.095>infrastructure.

388
00:18:15.365 --> 00:18:16.855
<00:18:15.365>Like <00:18:15.700>maybe <00:18:16.035>there's <00:18:16.370>new <00:18:16.706>developers

389
00:18:16.955 --> 00:18:19.015
<00:18:16.955>or <00:18:17.110>maybe <00:18:17.266>there's <00:18:17.421>like, <00:18:17.577>I <00:18:17.732>don't <00:18:17.888>know, <00:18:18.043>some <00:18:18.199>business <00:18:18.355>people

390
00:18:19.035 --> 00:18:21.535
<00:18:19.035>who <00:18:19.268>don't <00:18:19.501>need <00:18:19.735>to <00:18:19.968>know <00:18:20.201>every <00:18:20.435>configuration

391
00:18:21.555 --> 00:18:22.855
<00:18:21.555>for <00:18:21.847>every <00:18:22.140>piece <00:18:22.432>of <00:18:22.725>infrastructure.

392
00:18:23.155 --> 00:18:26.055
<00:18:23.155>So <00:18:23.295>what <00:18:23.435>you <00:18:23.575>can <00:18:23.715>do <00:18:23.855>is <00:18:23.995>use <00:18:24.135>something <00:18:24.274>called <00:18:24.415>a <00:18:24.555>module.

393
00:18:26.275 --> 00:18:29.255
<00:18:26.275>And <00:18:26.430>a <00:18:26.586>module <00:18:26.741>is <00:18:26.897>like <00:18:27.052>a <00:18:27.208>black <00:18:27.363>box <00:18:27.519>of <00:18:27.675>infrastructure.

394
00:18:29.955 --> 00:18:34.215
<00:18:29.955>And, <00:18:30.082>um, <00:18:30.209>what <00:18:30.336>happens <00:18:30.464>is <00:18:30.591>you <00:18:30.718>define <00:18:30.845>a <00:18:30.973>set <00:18:31.100>of <00:18:31.227>input <00:18:31.355>variables

395
00:18:34.215 --> 00:18:36.495
<00:18:34.215>that <00:18:34.389>let <00:18:34.564>you <00:18:34.740>toggle <00:18:34.915>the <00:18:35.090>behavior <00:18:35.264>of <00:18:35.439>the <00:18:35.615>module,

396
00:18:37.155 --> 00:18:40.415
<00:18:37.155>and <00:18:37.310>the <00:18:37.466>module <00:18:37.621>might <00:18:37.777>emit <00:18:37.932>a <00:18:38.088>set <00:18:38.243>of <00:18:38.399>output <00:18:38.555>variables.

397
00:18:40.415 --> 00:18:43.815
<00:18:40.415>So <00:18:40.615>basically <00:18:40.815>it's <00:18:41.014>a <00:18:41.215>container <00:18:41.415>for <00:18:41.615>multiple <00:18:41.815>resources

398
00:18:43.815 --> 00:18:46.255
<00:18:43.815>that <00:18:43.990>are <00:18:44.165>used <00:18:44.340>together, <00:18:44.515>and <00:18:44.690>they <00:18:44.865>can <00:18:45.040>be <00:18:45.215>used

399
00:18:46.255 --> 00:18:48.455
<00:18:46.255>to <00:18:46.605>create <00:18:46.955>lightweight <00:18:47.305>abstraction <00:18:47.655>so

400
00:18:48.455 --> 00:18:50.935
<00:18:48.455>that <00:18:48.655>you <00:18:48.855>can <00:18:49.054>describe <00:18:49.254>your <00:18:49.455>infrastructure <00:18:49.655>in <00:18:49.855>terms

401
00:18:50.935 --> 00:18:53.295
<00:18:50.935>of <00:18:51.168>its <00:18:51.401>architecture <00:18:51.635>rather <00:18:51.868>than <00:18:52.101>in <00:18:52.335>terms

402
00:18:53.295 --> 00:18:54.815
<00:18:53.295>of <00:18:53.751>its <00:18:54.207>physical <00:18:54.663>objects.

403
00:18:54.875 --> 00:18:58.295
<00:18:54.875>So <00:18:55.030>basically <00:18:55.186>you <00:18:55.341>can, <00:18:55.497>you <00:18:55.652>can, <00:18:55.808>um, <00:18:55.963>manage <00:18:56.119>a <00:18:56.275>group

404
00:18:58.355 --> 00:19:01.495
<00:18:58.355>of <00:18:58.510>related <00:18:58.666>resources <00:18:58.821>as <00:18:58.977>if <00:18:59.132>they <00:18:59.288>were <00:18:59.443>a <00:18:59.599>single <00:18:59.755>resource.

405
00:19:01.755 --> 00:19:04.455
<00:19:01.755>And <00:19:01.988>what <00:19:02.221>you're <00:19:02.455>doing <00:19:02.688>here <00:19:02.921>is <00:19:03.155>you're

406
00:19:04.975 --> 00:19:06.415
<00:19:04.975>encapsulating <00:19:05.623>the <00:19:06.271>complexity

407
00:19:06.475 --> 00:19:09.255
<00:19:06.475>and <00:19:06.630>you're <00:19:06.786>making <00:19:06.941>it <00:19:07.097>more <00:19:07.252>accessible <00:19:07.408>to <00:19:07.563>a <00:19:07.719>broader <00:19:07.875>audience

408
00:19:09.255 --> 00:19:12.855
<00:19:09.255>because <00:19:09.430>a <00:19:09.605>developer <00:19:09.780>might <00:19:09.955>not <00:19:10.130>need <00:19:10.305>to <00:19:10.480>know <00:19:10.655>all

409
00:19:12.855 --> 00:19:15.055
<00:19:12.855>of <00:19:13.030>the <00:19:13.205>details <00:19:13.380>of <00:19:13.555>every <00:19:13.730>part <00:19:13.905>of <00:19:14.080>your <00:19:14.255>infrastructure

410
00:19:15.235 --> 00:19:16.655
<00:19:15.235>or <00:19:15.554>of <00:19:15.874>one <00:19:16.193>specific <00:19:16.513>part.

411
00:19:16.675 --> 00:19:18.775
<00:19:16.675>And <00:19:16.815>even <00:19:16.955>for <00:19:17.095>like, <00:19:17.235>you <00:19:17.375>know, <00:19:17.514>if <00:19:17.655>you're <00:19:17.794>following <00:19:17.935>the, <00:19:18.075>the,

412
00:19:18.835 --> 00:19:21.935
<00:19:18.835>the <00:19:18.990>principle <00:19:19.146>of <00:19:19.301>least <00:19:19.457>privilege, <00:19:19.612>like <00:19:19.768>it <00:19:19.923>might <00:19:20.079>be <00:19:20.235>better

413
00:19:21.955 --> 00:19:24.215
<00:19:21.955>for <00:19:22.155>some <00:19:22.355>people <00:19:22.554>to, <00:19:22.754>to <00:19:22.955>use <00:19:23.155>this <00:19:23.355>module.

414
00:19:26.065 --> 00:19:28.125
<00:19:26.065>Now, <00:19:26.240>how <00:19:26.415>do <00:19:26.590>we <00:19:26.765>manage <00:19:26.940>all <00:19:27.115>of <00:19:27.290>these <00:19:27.465>modules?

415
00:19:28.395 --> 00:19:31.085
<00:19:28.395>What, <00:19:28.550>well, <00:19:28.706>something <00:19:28.861>that <00:19:29.017>you <00:19:29.172>can <00:19:29.328>do <00:19:29.483>is <00:19:29.639>publish <00:19:29.795>them

416
00:19:31.085 --> 00:19:32.405
<00:19:31.085>to <00:19:31.481>a <00:19:31.877>central <00:19:32.273>repository.

417
00:19:32.705 --> 00:19:35.725
<00:19:32.705>And <00:19:32.879>there <00:19:33.054>is <00:19:33.230>a <00:19:33.405>central <00:19:33.580>repository <00:19:33.754>that <00:19:33.929>exists <00:19:34.105>today,

418
00:19:36.025 --> 00:19:38.245
<00:19:36.025>and <00:19:36.305>it's <00:19:36.585>called <00:19:36.865>the <00:19:37.145>Terraform <00:19:37.425>Registry.

419
00:19:38.245 --> 00:19:40.965
<00:19:38.245>So <00:19:38.524>if <00:19:38.804>you <00:19:39.084>go <00:19:39.364>to <00:19:39.645>registry.terraform.io,

420
00:19:41.675 --> 00:19:43.645
<00:19:41.675>it's <00:19:42.024>the <00:19:42.375>global <00:19:42.725>Public <00:19:43.075>registry,

421
00:19:43.665 --> 00:19:46.405
<00:19:43.665>and <00:19:43.865>you're <00:19:44.065>gonna <00:19:44.264>find <00:19:44.465>common <00:19:44.665>forms <00:19:44.865>of <00:19:45.065>infrastructure,

422
00:19:46.425 --> 00:19:48.085
<00:19:46.425>common <00:19:47.125>architectural <00:19:47.825>patterns.

423
00:19:48.105 --> 00:19:50.005
<00:19:48.105>And <00:19:48.305>what's <00:19:48.505>great <00:19:48.705>about <00:19:48.905>this <00:19:49.105>is <00:19:49.305>that <00:19:49.505>most

424
00:19:50.005 --> 00:19:52.445
<00:19:50.005>of <00:19:50.180>them <00:19:50.355>are <00:19:50.530>published <00:19:50.705>by <00:19:50.880>the <00:19:51.055>cloud <00:19:51.230>providers <00:19:51.405>themselves.

425
00:19:52.625 --> 00:19:55.365
<00:19:52.625>And <00:19:52.800>it <00:19:52.975>just <00:19:53.150>makes <00:19:53.325>it <00:19:53.500>so <00:19:53.675>much <00:19:53.850>more <00:19:54.025>consumable

426
00:19:55.865 --> 00:19:57.005
<00:19:55.865>for <00:19:56.121>us <00:19:56.378>to <00:19:56.634>go <00:19:56.891>in.

427
00:19:57.425 --> 00:20:01.325
<00:19:57.425>And, <00:19:57.541>um, <00:19:57.658>you <00:19:57.774>know, <00:19:57.891>I <00:19:58.008>don't <00:19:58.125>have <00:19:58.241>to <00:19:58.358>know <00:19:58.475>every <00:19:58.591>detail <00:19:58.708>of <00:19:58.825>how

428
00:20:01.325 --> 00:20:03.525
<00:20:01.325>to <00:20:01.675>create <00:20:02.025>a <00:20:02.375>lambda <00:20:02.725>function.

429
00:20:03.525 --> 00:20:04.965
<00:20:03.525>Everything <00:20:03.784>that <00:20:04.043>happens <00:20:04.302>in <00:20:04.561>the <00:20:04.821>backend,

430
00:20:05.085 --> 00:20:07.645
<00:20:05.085>I <00:20:05.225>can <00:20:05.365>just <00:20:05.505>go <00:20:05.645>into <00:20:05.785>the <00:20:05.925>registry, <00:20:06.065>type <00:20:06.205>in <00:20:06.345>Lambda <00:20:06.485>function

431
00:20:08.305 --> 00:20:10.605
<00:20:08.305>and <00:20:08.480>find <00:20:08.655>the <00:20:08.830>code <00:20:09.005>that <00:20:09.180>I <00:20:09.355>need <00:20:09.530>and <00:20:09.705>copy

432
00:20:10.605 --> 00:20:12.645
<00:20:10.605>and <00:20:10.885>paste <00:20:11.165>it <00:20:11.445>into <00:20:11.725>my <00:20:12.005>registry.

433
00:20:12.745 --> 00:20:17.285
<00:20:12.745>So <00:20:12.861>I <00:20:12.978>can <00:20:13.094>go <00:20:13.211>in <00:20:13.328>and <00:20:13.445>say, <00:20:13.561>I <00:20:13.678>want <00:20:13.794>this <00:20:13.911>network <00:20:14.028>from <00:20:14.145>Google

434
00:20:17.465 --> 00:20:19.685
<00:20:17.465>and <00:20:17.620>fill <00:20:17.776>in <00:20:17.931>a <00:20:18.087>few <00:20:18.242>of <00:20:18.398>the <00:20:18.553>inputs <00:20:18.709>that <00:20:18.865>matter

435
00:20:19.825 --> 00:20:22.365
<00:20:19.825>and <00:20:19.980>then <00:20:20.136>let <00:20:20.291>the <00:20:20.447>module <00:20:20.602>take <00:20:20.758>care <00:20:20.913>of <00:20:21.069>the <00:20:21.225>complexity.

436
00:20:24.355 --> 00:20:27.005
<00:20:24.355>Another <00:20:24.635>benefit <00:20:24.915>of <00:20:25.195>using <00:20:25.475>Terraform <00:20:25.755>is

437
00:20:27.005 --> 00:20:28.725
<00:20:27.005>that <00:20:27.285>you <00:20:27.565>can <00:20:27.845>do <00:20:28.125>multi-cloud <00:20:28.405>deployment.

438
00:20:28.825 --> 00:20:31.365
<00:20:28.825>And <00:20:29.058>nowadays <00:20:29.291>I <00:20:29.525>think <00:20:29.758>it's <00:20:29.991>very <00:20:30.225>rare

439
00:20:31.365 --> 00:20:33.925
<00:20:31.365>that <00:20:31.565>companies <00:20:31.765>are <00:20:31.965>using <00:20:32.165>only <00:20:32.365>one <00:20:32.565>cloud <00:20:32.765>provider.

440
00:20:35.065 --> 00:20:38.195
<00:20:35.065>So <00:20:35.415>one <00:20:35.765>of <00:20:36.115>the <00:20:36.465>benefits

441
00:20:38.195 --> 00:20:40.355
<00:20:38.195>of <00:20:38.395>this <00:20:38.595>when <00:20:38.794>you <00:20:38.995>provision <00:20:39.195>your <00:20:39.395>infrastructure <00:20:39.595>across

442
00:20:40.755 --> 00:20:43.755
<00:20:40.755>multiple <00:20:40.955>clouds <00:20:41.155>is <00:20:41.355>that <00:20:41.555>it <00:20:41.755>increases <00:20:41.955>fault <00:20:42.155>tolerance.

443
00:20:43.755 --> 00:20:46.635
<00:20:43.755>You <00:20:43.930>have <00:20:44.105>more <00:20:44.280>graceful <00:20:44.455>recovery <00:20:44.630>if <00:20:44.805>like <00:20:44.980>one <00:20:45.155>cloud

444
00:20:46.875 --> 00:20:47.925
<00:20:46.875>provider <00:20:47.190>has <00:20:47.504>an <00:20:47.820>outage.

445
00:20:48.505 --> 00:20:51.165
<00:20:48.505>Um, <00:20:48.705>and <00:20:48.905>it <00:20:49.105>also <00:20:49.305>simplifies <00:20:49.505>like <00:20:49.705>the <00:20:49.905>management

446
00:20:51.345 --> 00:20:52.365
<00:20:51.345>and <00:20:52.263>orchestration

447
00:20:53.065 --> 00:20:55.085
<00:20:53.065>of <00:20:53.345>these <00:20:53.625>infrastructures <00:20:53.905>when <00:20:54.185>you're <00:20:54.465>using

448
00:20:55.365 --> 00:20:56.485
<00:20:55.365>a <00:20:55.701>tool <00:20:56.037>like <00:20:56.372>Terraform.

449
00:20:57.065 --> 00:20:59.245
<00:20:57.065>Um, <00:20:57.415>so <00:20:57.765>just <00:20:58.115>another <00:20:58.465>benefit.

450
00:21:00.425 --> 00:21:01.685
<00:21:00.425>So <00:21:00.651>I <00:21:00.878>just <00:21:01.105>quickly <00:21:01.332>wanna <00:21:01.559>recap

451
00:21:01.685 --> 00:21:06.285
<00:21:01.685>before <00:21:01.885>we <00:21:02.085>get <00:21:02.284>into <00:21:02.485>the <00:21:02.685>tools <00:21:02.885>infrastructures <00:21:03.085>code.

452
00:21:06.555 --> 00:21:08.765
<00:21:06.555>Like <00:21:06.710>why <00:21:06.866>do <00:21:07.021>we <00:21:07.177>use <00:21:07.332>it? <00:21:07.488>Why <00:21:07.643>is <00:21:07.799>it <00:21:07.955>beneficial?

453
00:21:08.765 --> 00:21:09.765
<00:21:08.765>What <00:21:09.065>are <00:21:09.365>the <00:21:09.665>advantages?

454
00:21:09.985 --> 00:21:12.285
<00:21:09.985>So <00:21:10.185>first, <00:21:10.385>it <00:21:10.584>enables <00:21:10.784>everyone <00:21:10.985>to <00:21:11.185>be <00:21:11.385>able

455
00:21:12.285 --> 00:21:14.445
<00:21:12.285>to <00:21:12.635>self-service <00:21:12.985>their <00:21:13.335>infrastructure <00:21:13.685>regardless

456
00:21:14.505 --> 00:21:16.005
<00:21:14.505>of <00:21:14.955>your <00:21:15.405>DevOps <00:21:15.855>experience.

457
00:21:16.745 --> 00:21:19.805
<00:21:16.745>Um, <00:21:16.919>you <00:21:17.094>can <00:21:17.270>implement <00:21:17.445>the, <00:21:17.620>the <00:21:17.794>privilege, <00:21:17.969>the <00:21:18.145>privilege,

458
00:21:19.825 --> 00:21:22.445
<00:21:19.825>the <00:21:20.105>principle <00:21:20.385>of <00:21:20.665>least <00:21:20.945>privilege, <00:21:21.225>um,

459
00:21:22.465 --> 00:21:25.085
<00:21:22.465>and <00:21:22.639>use <00:21:22.814>modules <00:21:22.990>for <00:21:23.165>people <00:21:23.340>who <00:21:23.514>don't <00:21:23.689>necessarily <00:21:23.865>need

460
00:21:25.085 --> 00:21:27.805
<00:21:25.085>to <00:21:25.240>know <00:21:25.396>like <00:21:25.551>all <00:21:25.707>the <00:21:25.862>physical <00:21:26.018>details <00:21:26.173>of <00:21:26.329>the <00:21:26.485>infrastructure.

461
00:21:28.585 --> 00:21:31.485
<00:21:28.585>Um, <00:21:28.740>you <00:21:28.896>also <00:21:29.051>get <00:21:29.207>this <00:21:29.362>natural <00:21:29.518>progression <00:21:29.673>from <00:21:29.829>day <00:21:29.985>one

462
00:21:31.505 --> 00:21:33.365
<00:21:31.505>to <00:21:31.738>day <00:21:31.971>two <00:21:32.205>plus <00:21:32.438>to <00:21:32.671>day <00:21:32.905>end.

463
00:21:33.825 --> 00:21:35.405
<00:21:33.825>And <00:21:34.000>you <00:21:34.175>don't <00:21:34.350>need <00:21:34.525>to <00:21:34.700>change <00:21:34.875>a <00:21:35.050>lot <00:21:35.225>about

464
00:21:35.405 --> 00:21:36.805
<00:21:35.405>the <00:21:36.035>existing <00:21:36.665>processes.

465
00:21:37.665 --> 00:21:39.925
<00:21:37.665>Um, <00:21:37.898>when <00:21:38.131>you <00:21:38.365>use <00:21:38.598>infrastructure <00:21:38.831>as <00:21:39.065>code,

466
00:21:39.925 --> 00:21:42.525
<00:21:39.925>you <00:21:40.125>get <00:21:40.325>this <00:21:40.524>single <00:21:40.725>unified <00:21:40.925>delivery <00:21:41.125>of <00:21:41.325>all

467
00:21:42.765 --> 00:21:45.165
<00:21:42.765>of <00:21:42.920>your <00:21:43.076>infrastructure <00:21:43.231>as <00:21:43.387>a <00:21:43.542>service <00:21:43.698>platform, <00:21:43.853>as <00:21:44.009>a <00:21:44.165>service,

468
00:21:45.745 --> 00:21:47.445
<00:21:45.745>um, <00:21:46.211>software <00:21:46.678>service <00:21:47.145>components.

469
00:21:47.625 --> 00:21:50.565
<00:21:47.625>And <00:21:47.752>again, <00:21:47.879>I <00:21:48.006>don't <00:21:48.134>wanna <00:21:48.261>have <00:21:48.388>to <00:21:48.515>have <00:21:48.643>to <00:21:48.770>use <00:21:48.897>one <00:21:49.025>tool

470
00:21:50.565 --> 00:21:52.845
<00:21:50.565>for <00:21:50.765>my <00:21:50.965>infrastructure, <00:21:51.165>one <00:21:51.365>tool <00:21:51.565>for <00:21:51.765>my <00:21:51.965>observability

471
00:21:52.865 --> 00:21:55.445
<00:21:52.865>and <00:21:52.992>one <00:21:53.119>tool <00:21:53.246>for <00:21:53.374>every <00:21:53.501>service <00:21:53.628>that <00:21:53.755>I <00:21:53.883>add <00:21:54.010>to <00:21:54.137>my <00:21:54.265>application.

472
00:21:55.965 --> 00:21:58.725
<00:21:55.965>I <00:21:56.139>have <00:21:56.314>this <00:21:56.490>one <00:21:56.665>single <00:21:56.840>unified <00:21:57.014>delivery <00:21:57.189>of <00:21:57.365>all

473
00:21:58.725 --> 00:22:01.205
<00:21:58.725>of <00:21:58.880>these <00:21:59.036>components <00:21:59.191>and <00:21:59.347>I <00:21:59.502>get <00:21:59.658>this <00:21:59.813>really <00:21:59.969>holistic <00:22:00.125>view

474
00:22:01.205 --> 00:22:02.805
<00:22:01.205>of <00:22:01.485>what's <00:22:01.764>happening <00:22:02.044>in <00:22:02.324>my <00:22:02.605>application.

475
00:22:04.385 --> 00:22:07.125
<00:22:04.385>You <00:22:04.560>can <00:22:04.735>import <00:22:04.910>your <00:22:05.085>existing <00:22:05.260>infrastructure <00:22:05.435>if <00:22:05.610>you <00:22:05.785>didn't

476
00:22:07.125 --> 00:22:08.125
<00:22:07.125>start <00:22:07.425>building <00:22:07.725>with <00:22:08.025>this.

477
00:22:08.865 --> 00:22:12.485
<00:22:08.865>Um, <00:22:09.098>you <00:22:09.331>can <00:22:09.565>do <00:22:09.798>multi-cloud <00:22:10.031>deployments, <00:22:10.265>um,

478
00:22:12.625 --> 00:22:14.525
<00:22:12.625>you <00:22:12.858>can <00:22:13.091>also <00:22:13.325>optimize <00:22:13.558>your <00:22:13.791>cloud <00:22:14.025>costs.

479
00:22:14.625 --> 00:22:17.525
<00:22:14.625>Um, <00:22:14.765>there's <00:22:14.905>a <00:22:15.045>lot <00:22:15.185>of, <00:22:15.325>um, <00:22:15.465>stuff <00:22:15.605>on <00:22:15.745>pricing <00:22:15.885>with <00:22:16.025>esp.

480
00:22:17.925 --> 00:22:19.885
<00:22:17.925>I <00:22:18.125>know <00:22:18.325>like <00:22:18.524>Terraform <00:22:18.725>just <00:22:18.925>changed <00:22:19.125>their <00:22:19.325>pricing,

481
00:22:20.105 --> 00:22:22.005
<00:22:20.105>but <00:22:20.305>um, <00:22:20.505>it <00:22:20.705>is <00:22:20.905>an <00:22:21.105>open <00:22:21.305>source <00:22:21.505>tool

482
00:22:22.005 --> 00:22:23.285
<00:22:22.005>that <00:22:22.169>you <00:22:22.334>can <00:22:22.498>go <00:22:22.663>in <00:22:22.827>and <00:22:22.992>start <00:22:23.157>using.

483
00:22:25.235 --> 00:22:26.445
<00:22:25.235>Okay, <00:22:25.507>let's <00:22:25.779>talk <00:22:26.051>about <00:22:26.323>tools.

484
00:22:26.665 --> 00:22:29.205
<00:22:26.665>So <00:22:26.865>there's <00:22:27.065>so <00:22:27.264>many <00:22:27.465>choices <00:22:27.665>when <00:22:27.865>it <00:22:28.065>comes

485
00:22:29.205 --> 00:22:30.445
<00:22:29.205>to <00:22:29.484>infrastructure <00:22:29.763>as <00:22:30.042>code <00:22:30.321>tools.

486
00:22:30.465 --> 00:22:31.965
<00:22:30.465>We <00:22:30.689>talked <00:22:30.915>about <00:22:31.139>Terraform <00:22:31.365>a <00:22:31.590>little <00:22:31.814>bit.

487
00:22:32.625 --> 00:22:35.205
<00:22:32.625>Um, <00:22:32.858>one <00:22:33.091>of <00:22:33.325>the <00:22:33.558>differences <00:22:33.791>between <00:22:34.025>Terraform

488
00:22:35.205 --> 00:22:36.485
<00:22:35.205>and <00:22:35.349>the <00:22:35.493>other <00:22:35.637>tools <00:22:35.781>that <00:22:35.925>I <00:22:36.069>talked <00:22:36.213>about <00:22:36.357>is

489
00:22:36.485 --> 00:22:39.085
<00:22:36.485>that <00:22:36.764>Terraform <00:22:37.044>allows <00:22:37.324>from <00:22:37.604>multi-cloud <00:22:37.885>deployment.

490
00:22:39.085 --> 00:22:41.765
<00:22:39.085>So <00:22:39.285>you <00:22:39.485>can <00:22:39.685>deploy <00:22:39.885>a <00:22:40.085>database <00:22:40.285>with <00:22:40.485>GCP

491
00:22:41.765 --> 00:22:43.965
<00:22:41.765>and <00:22:41.920>an <00:22:42.076>instance <00:22:42.231>from <00:22:42.387>from <00:22:42.542>LE <00:22:42.698>Node <00:22:42.853>all <00:22:43.009>in <00:22:43.165>the

492
00:22:43.965 --> 00:22:45.045
<00:22:43.965>same <00:22:44.451>configuration <00:22:44.937>file.

493
00:22:45.075 --> 00:22:48.485
<00:22:45.075>They <00:22:45.275>also <00:22:45.475>have <00:22:45.675>a <00:22:45.875>registry <00:22:46.075>with <00:22:46.275>pre-made <00:22:46.475>resources

494
00:22:48.485 --> 00:22:50.285
<00:22:48.485>that's <00:22:48.764>written <00:22:49.044>in <00:22:49.324>the <00:22:49.604>correct <00:22:49.885>language

495
00:22:50.285 --> 00:22:51.525
<00:22:50.285>for <00:22:50.657>those <00:22:51.029>configuration <00:22:51.401>files.

496
00:22:52.465 --> 00:22:56.005
<00:22:52.465>Um, <00:22:52.665>AWS <00:22:52.865>has <00:22:53.064>two <00:22:53.264>different <00:22:53.465>infrastructures, <00:22:53.665>code <00:22:53.865>tools.

497
00:22:56.005 --> 00:22:58.805
<00:22:56.005>There's <00:22:56.205>cloud <00:22:56.405>formation, <00:22:56.605>which <00:22:56.805>is <00:22:57.005>used <00:22:57.205>for, <00:22:57.405>um,

498
00:22:59.065 --> 00:23:02.405
<00:22:59.065>non <00:22:59.298>serverless <00:22:59.531>resources, <00:22:59.765>things <00:22:59.998>like <00:23:00.231>EC2 <00:23:00.465>RDS.

499
00:23:02.665 --> 00:23:03.965
<00:23:02.665>And <00:23:02.860>then <00:23:03.054>the <00:23:03.250>second <00:23:03.445>one <00:23:03.639>is <00:23:03.835>Sam,

500
00:23:03.985 --> 00:23:06.885
<00:23:03.985>the <00:23:04.185>serverless <00:23:04.385>application <00:23:04.584>model, <00:23:04.784>which <00:23:04.985>is, <00:23:05.185>um, <00:23:05.385>used

501
00:23:06.885 --> 00:23:08.245
<00:23:06.885>for <00:23:07.496>serverless <00:23:08.109>resources.

502
00:23:08.265 --> 00:23:09.925
<00:23:08.265>And <00:23:08.498>these <00:23:08.731>are <00:23:08.965>things <00:23:09.198>like <00:23:09.431>Lambda <00:23:09.665>functions,

503
00:23:10.085 --> 00:23:11.885
<00:23:10.085>dynamo <00:23:10.365>DB <00:23:10.645>tables, <00:23:10.925>s <00:23:11.205>Qs <00:23:11.485>queues.

504
00:23:12.425 --> 00:23:16.525
<00:23:12.425>Um, <00:23:12.625>one <00:23:12.825>of <00:23:13.024>the <00:23:13.225>biggest <00:23:13.425>differences <00:23:13.625>between <00:23:13.825>Terraform

505
00:23:16.545 --> 00:23:18.205
<00:23:16.545>and <00:23:16.825>cloud <00:23:17.105>formation <00:23:17.385>and <00:23:17.665>Sam <00:23:17.945>is

506
00:23:18.205 --> 00:23:21.005
<00:23:18.205>that <00:23:18.485>in <00:23:18.764>your <00:23:19.044>AWS <00:23:19.324>configuration <00:23:19.605>files,

507
00:23:21.105 --> 00:23:23.885
<00:23:21.105>you <00:23:21.338>can <00:23:21.571>only <00:23:21.805>add <00:23:22.038>AWS <00:23:22.271>resources, <00:23:22.505>whereas

508
00:23:24.275 --> 00:23:26.845
<00:23:24.275>with <00:23:24.475>Terraform <00:23:24.675>you <00:23:24.875>can <00:23:25.075>have <00:23:25.275>more <00:23:25.475>than <00:23:25.675>one

509
00:23:26.845 --> 00:23:28.125
<00:23:26.845>cloud <00:23:27.421>provider's <00:23:27.997>resources.

510
00:23:28.225 --> 00:23:33.075
<00:23:28.225>So <00:23:28.399>if, <00:23:28.574>if <00:23:28.750>your <00:23:28.925>entire <00:23:29.100>stack <00:23:29.274>is <00:23:29.449>on <00:23:29.625>AWS,

511
00:23:33.075 --> 00:23:36.555
<00:23:33.075>then <00:23:33.215>yes <00:23:33.355>you <00:23:33.495>should <00:23:33.635>use <00:23:33.775>an <00:23:33.915>AWS <00:23:34.055>infrastructure <00:23:34.195>as <00:23:34.335>code <00:23:34.475>tool.

512
00:23:37.135 --> 00:23:39.795
<00:23:37.135>Um, <00:23:37.335>AWS <00:23:37.535>configuration <00:23:37.735>files <00:23:37.935>are <00:23:38.135>written <00:23:38.335>in <00:23:38.535>either

513
00:23:40.025 --> 00:23:41.195
<00:23:40.025>YAML <00:23:40.551>or <00:23:41.078>JSON.

514
00:23:41.975 --> 00:23:44.635
<00:23:41.975>Um, <00:23:42.130>Google <00:23:42.286>Cloud <00:23:42.441>is <00:23:42.597>another <00:23:42.752>cloud <00:23:42.908>provider <00:23:43.063>you <00:23:43.219>can <00:23:43.375>use.

515
00:23:44.635 --> 00:23:45.805
<00:23:44.635>They <00:23:44.986>also <00:23:45.337>have <00:23:45.688>templates.

516
00:23:45.805 --> 00:23:47.845
<00:23:45.805>They <00:23:46.038>also <00:23:46.271>have <00:23:46.505>an <00:23:46.738>integration <00:23:46.971>with <00:23:47.205>Terraform.

517
00:23:48.385 --> 00:23:50.965
<00:23:48.385>Um, <00:23:48.560>you <00:23:48.735>can <00:23:48.910>use <00:23:49.085>a <00:23:49.260>scripting <00:23:49.435>language <00:23:49.610>like <00:23:49.785>PowerShell

518
00:23:50.965 --> 00:23:53.485
<00:23:50.965>and <00:23:51.139>you <00:23:51.314>can, <00:23:51.490>PowerShell <00:23:51.665>has <00:23:51.840>something <00:23:52.014>called <00:23:52.189>the <00:23:52.365>PowerShell

519
00:23:53.485 --> 00:23:58.045
<00:23:53.485>Gallery, <00:23:53.640>um, <00:23:53.796>which <00:23:53.951>is <00:23:54.107>a <00:23:54.262>central <00:23:54.418>repository <00:23:54.573>for, <00:23:54.729>um, <00:23:54.885>sharing

520
00:23:58.105 --> 00:23:59.685
<00:23:58.105>and <00:23:58.571>acquiring <00:23:59.038>PowerShell <00:23:59.505>code.

521
00:24:00.025 --> 00:24:02.565
<00:24:00.025>Um, <00:24:00.225>and <00:24:00.425>you <00:24:00.625>can <00:24:00.825>add <00:24:01.025>resources <00:24:01.225>from <00:24:01.425>other

522
00:24:02.565 --> 00:24:03.885
<00:24:02.565>cloud <00:24:02.961>providers <00:24:03.357>as <00:24:03.753>well.

523
00:24:03.985 --> 00:24:07.835
<00:24:03.985>So <00:24:04.218>that's <00:24:04.451>a <00:24:04.685>plus. <00:24:04.918>So <00:24:05.151>some <00:24:05.385>things,

524
00:24:07.935 --> 00:24:10.235
<00:24:07.935>and <00:24:08.110>then, <00:24:08.284>sorry, <00:24:08.460>there's <00:24:08.635>also <00:24:08.810>Ansible, <00:24:08.985>which <00:24:09.159>is <00:24:09.335>more

525
00:24:10.235 --> 00:24:13.835
<00:24:10.235>of <00:24:10.390>like <00:24:10.546>orchestration, <00:24:10.701>um, <00:24:10.857>which <00:24:11.012>you <00:24:11.168>can <00:24:11.323>use <00:24:11.479>with <00:24:11.635>Terraform.

526
00:24:13.895 --> 00:24:16.915
<00:24:13.895>So <00:24:14.070>you <00:24:14.245>know, <00:24:14.420>you <00:24:14.595>can <00:24:14.770>use, <00:24:14.945>um, <00:24:15.120>different <00:24:15.295>tools

527
00:24:17.015 --> 00:24:19.155
<00:24:17.015>for <00:24:17.248>different <00:24:17.481>parts <00:24:17.715>of <00:24:17.948>your <00:24:18.181>infrastructure <00:24:18.415>if

528
00:24:19.155 --> 00:24:20.995
<00:24:19.155>that's <00:24:19.388>something <00:24:19.621>that <00:24:19.855>you <00:24:20.088>want <00:24:20.321>to <00:24:20.555>do.

529
00:24:21.935 --> 00:24:22.955
<00:24:21.935>So <00:24:22.394>some <00:24:22.852>things

530
00:24:22.955 --> 00:24:24.635
<00:24:22.955>to <00:24:23.155>think <00:24:23.355>about <00:24:23.554>when <00:24:23.754>you're <00:24:23.955>choosing <00:24:24.155>an <00:24:24.355>infrastructure

531
00:24:24.695 --> 00:24:28.155
<00:24:24.695>as <00:24:24.870>code <00:24:25.044>tool, <00:24:25.220>are <00:24:25.395>you <00:24:25.570>using <00:24:25.745>services <00:24:25.919>specific <00:24:26.095>to

532
00:24:28.155 --> 00:24:30.795
<00:24:28.155>that <00:24:28.355>cloud <00:24:28.555>provider <00:24:28.754>or <00:24:28.955>external <00:24:29.155>services <00:24:29.355>as <00:24:29.555>well?

533
00:24:31.615 --> 00:24:35.435
<00:24:31.615>Um, <00:24:31.742>and <00:24:31.869>do <00:24:31.996>you <00:24:32.124>want <00:24:32.251>your <00:24:32.378>configuration <00:24:32.505>file <00:24:32.633>written <00:24:32.760>in <00:24:32.887>ya <00:24:33.015>ML

534
00:24:35.435 --> 00:24:38.115
<00:24:35.435>or <00:24:35.635>JSO <00:24:35.835>or <00:24:36.034>a <00:24:36.235>scripting <00:24:36.435>language <00:24:36.635>like <00:24:36.835>PowerShell?

535
00:24:38.815 --> 00:24:42.955
<00:24:38.815>Um, <00:24:38.990>are <00:24:39.165>you <00:24:39.340>doing <00:24:39.515>multi-cloud <00:24:39.690>deployment, <00:24:39.865>things <00:24:40.040>like <00:24:40.215>that.

536
00:24:43.815 --> 00:24:45.995
<00:24:43.815>And <00:24:43.970>the <00:24:44.126>most <00:24:44.281>important <00:24:44.437>thing <00:24:44.592>to <00:24:44.748>take <00:24:44.903>away <00:24:45.059>here <00:24:45.215>is

537
00:24:45.995 --> 00:24:48.275
<00:24:45.995>that <00:24:46.150>it <00:24:46.306>doesn't <00:24:46.461>matter <00:24:46.617>what <00:24:46.772>tools <00:24:46.928>you're <00:24:47.083>using <00:24:47.239>to <00:24:47.395>provision

538
00:24:48.275 --> 00:24:51.235
<00:24:48.275>and <00:24:48.475>configure <00:24:48.675>your <00:24:48.875>infrastructure, <00:24:49.075>I <00:24:49.275>just <00:24:49.475>want <00:24:49.675>you

539
00:24:51.375 --> 00:24:54.675
<00:24:51.375>to <00:24:51.515>capture <00:24:51.655>this <00:24:51.795>process <00:24:51.935>in <00:24:52.075>a <00:24:52.215>way <00:24:52.355>that <00:24:52.495>can <00:24:52.635>be <00:24:52.775>repeated

540
00:24:54.975 --> 00:24:55.995
<00:24:54.975>and <00:24:55.434>automated <00:24:55.892>and

541
00:24:55.995 --> 00:24:57.635
<00:24:55.995>that's <00:24:56.169>gonna <00:24:56.344>make <00:24:56.520>your <00:24:56.695>life <00:24:56.870>a <00:24:57.044>little <00:24:57.219>bit <00:24:57.395>easier.

542
00:24:58.655 --> 00:25:00.355
<00:24:58.655>So <00:24:58.888>let's <00:24:59.121>go <00:24:59.355>through <00:24:59.588>a <00:24:59.821>quick <00:25:00.055>demo.

543
00:25:00.735 --> 00:25:03.275
<00:25:00.735>Um, <00:25:00.890>I <00:25:01.046>wanna <00:25:01.201>do <00:25:01.357>this <00:25:01.512>with <00:25:01.668>a <00:25:01.823>anode <00:25:01.979>Terraform <00:25:02.135>provider.

544
00:25:04.095 --> 00:25:07.355
<00:25:04.095>So <00:25:04.235>the <00:25:04.375>first <00:25:04.515>thing <00:25:04.655>we <00:25:04.795>have <00:25:04.935>to <00:25:05.075>do <00:25:05.215>is <00:25:05.355>you <00:25:05.495>need

545
00:25:07.355 --> 00:25:09.995
<00:25:07.355>to <00:25:07.495>have <00:25:07.635>a <00:25:07.775>anode <00:25:07.915>account <00:25:08.055>and <00:25:08.195>you <00:25:08.335>need <00:25:08.475>to <00:25:08.615>install <00:25:08.755>Terraform.

546
00:25:10.095 --> 00:25:13.715
<00:25:10.095>I'm <00:25:10.202>gonna, <00:25:10.310>I'm <00:25:10.418>gonna <00:25:10.525>post <00:25:10.633>the <00:25:10.741>QR <00:25:10.848>code <00:25:10.956>to <00:25:11.064>this <00:25:11.171>at <00:25:11.279>the <00:25:11.387>end <00:25:11.495>so

547
00:25:13.715 --> 00:25:16.595
<00:25:13.715>that <00:25:13.855>you <00:25:13.995>can, <00:25:14.135>um, <00:25:14.274>go <00:25:14.415>in <00:25:14.554>and <00:25:14.695>create <00:25:14.834>a <00:25:14.975>anode <00:25:15.115>account

548
00:25:16.615 --> 00:25:17.675
<00:25:16.615>and <00:25:17.092>install <00:25:17.569>Terraform.

549
00:25:17.675 --> 00:25:19.235
<00:25:17.675>It'll <00:25:17.955>go <00:25:18.235>through <00:25:18.514>everything <00:25:18.794>for <00:25:19.075>you.

550
00:25:19.815 --> 00:25:22.035
<00:25:19.815>So, <00:25:19.942>um, <00:25:20.069>if <00:25:20.196>you <00:25:20.324>don't <00:25:20.451>have <00:25:20.578>an <00:25:20.705>account, <00:25:20.833>you <00:25:20.960>can <00:25:21.087>create <00:25:21.215>one

551
00:25:22.035 --> 00:25:23.955
<00:25:22.035>for <00:25:22.235>free <00:25:22.435>and <00:25:22.635>then <00:25:22.835>you <00:25:23.035>can <00:25:23.235>install <00:25:23.435>Terraform.

552
00:25:23.955 --> 00:25:27.155
<00:25:23.955>It's <00:25:24.095>an <00:25:24.235>open <00:25:24.375>source <00:25:24.514>tool. <00:25:24.655>So <00:25:24.794>the <00:25:24.935>first <00:25:25.074>thing <00:25:25.215>you <00:25:25.355>have

553
00:25:27.155 --> 00:25:28.795
<00:25:27.155>to <00:25:27.388>do <00:25:27.621>is <00:25:27.855>generate <00:25:28.088>an <00:25:28.321>SSH <00:25:28.555>key

554
00:25:28.795 --> 00:25:30.715
<00:25:28.795>and <00:25:28.970>this <00:25:29.145>is <00:25:29.320>how <00:25:29.495>you <00:25:29.670>connect <00:25:29.845>to <00:25:30.020>the <00:25:30.195>server

555
00:25:31.175 --> 00:25:34.475
<00:25:31.175>and <00:25:31.350>you <00:25:31.524>use <00:25:31.700>the <00:25:31.875>command <00:25:32.050>SSH <00:25:32.225>Key <00:25:32.399>Gen, <00:25:32.575>um,

556
00:25:35.415 --> 00:25:40.315
<00:25:35.415>and <00:25:35.555>then <00:25:35.695>you <00:25:35.835>have <00:25:35.975>to <00:25:36.115>copy <00:25:36.254>your <00:25:36.395>SSH <00:25:36.534>key, <00:25:36.675>copy <00:25:36.815>it

557
00:25:40.315 --> 00:25:41.715
<00:25:40.315>and <00:25:40.495>save <00:25:40.675>it <00:25:40.855>'cause <00:25:41.035>we're <00:25:41.215>gonna <00:25:41.395>add <00:25:41.574>it

558
00:25:41.715 --> 00:25:42.995
<00:25:41.715>to <00:25:42.099>our <00:25:42.483>configuration <00:25:42.867>file.

559
00:25:43.625 --> 00:25:46.075
<00:25:43.625>Next, <00:25:43.765>from <00:25:43.905>your <00:25:44.045>anode <00:25:44.185>account, <00:25:44.325>you <00:25:44.465>need <00:25:44.605>to <00:25:44.745>create <00:25:44.885>a <00:25:45.025>anode,

560
00:25:46.115 --> 00:25:51.075
<00:25:46.115>API <00:25:46.290>token, <00:25:46.465>um, <00:25:46.640>from <00:25:46.815>your, <00:25:46.990>from <00:25:47.165>your, <00:25:47.340>um, <00:25:47.515>profile,

561
00:25:51.075 --> 00:25:53.635
<00:25:51.075>choose <00:25:51.355>create <00:25:51.635>a <00:25:51.915>personal <00:25:52.195>access <00:25:52.475>token,

562
00:25:54.215 --> 00:25:57.355
<00:25:54.215>choose <00:25:54.389>the <00:25:54.564>access <00:25:54.740>levels <00:25:54.915>and <00:25:55.090>then <00:25:55.264>again, <00:25:55.439>copy <00:25:55.615>this

563
00:25:57.355 --> 00:25:58.515
<00:25:57.355>because <00:25:57.504>you're <00:25:57.653>gonna <00:25:57.802>have <00:25:57.951>to <00:25:58.100>put <00:25:58.249>it <00:25:58.399>in

564
00:25:58.515 --> 00:25:59.635
<00:25:58.515>your <00:25:59.019>configuration <00:25:59.523>file.

565
00:26:00.295 --> 00:26:02.475
<00:26:00.295>So <00:26:00.470>next <00:26:00.645>we <00:26:00.820>need <00:26:00.995>to <00:26:01.170>create <00:26:01.345>your <00:26:01.520>configuration <00:26:01.695>file

566
00:26:02.575 --> 00:26:04.555
<00:26:02.575>and <00:26:02.808>save <00:26:03.041>it <00:26:03.275>as <00:26:03.508>a <00:26:03.741>TF <00:26:03.975>file.

567
00:26:04.615 --> 00:26:07.195
<00:26:04.615>And <00:26:04.790>that's <00:26:04.965>how <00:26:05.140>Terraform <00:26:05.315>knows <00:26:05.490>what <00:26:05.665>to <00:26:05.840>look <00:26:06.015>at.

568
00:26:07.895 --> 00:26:09.115
<00:26:07.895>So <00:26:08.051>the <00:26:08.208>easiest <00:26:08.365>way <00:26:08.522>to <00:26:08.679>do <00:26:08.836>this <00:26:08.993>is

569
00:26:09.115 --> 00:26:10.675
<00:26:09.115>to <00:26:09.348>type <00:26:09.581>nano <00:26:09.815>in <00:26:10.048>the <00:26:10.281>file <00:26:10.515>name.

570
00:26:11.375 --> 00:26:16.315
<00:26:11.375>Um, <00:26:11.530>and <00:26:11.686>then <00:26:11.841>you're <00:26:11.997>going <00:26:12.152>to <00:26:12.308>insert <00:26:12.463>your <00:26:12.619>API <00:26:12.775>token.

571
00:26:16.315 --> 00:26:18.155
<00:26:16.315>You're <00:26:16.548>gonna <00:26:16.781>insert <00:26:17.015>your, <00:26:17.248>your <00:26:17.481>SSH <00:26:17.715>key,

572
00:26:18.155 --> 00:26:19.635
<00:26:18.155>those <00:26:18.345>are <00:26:18.535>the <00:26:18.725>two <00:26:18.916>that <00:26:19.106>you <00:26:19.296>just <00:26:19.487>created.

573
00:26:20.135 --> 00:26:22.035
<00:26:20.135>And <00:26:20.335>then <00:26:20.535>you're <00:26:20.735>gonna <00:26:20.935>enter <00:26:21.135>your <00:26:21.335>root <00:26:21.535>password.

574
00:26:22.255 --> 00:26:25.795
<00:26:22.255>So <00:26:22.410>the <00:26:22.566>resource <00:26:22.721>that <00:26:22.877>we're <00:26:23.032>creating <00:26:23.188>here, <00:26:23.343>this <00:26:23.499>is <00:26:23.655>a

575
00:26:26.315 --> 00:26:28.995
<00:26:26.315>anode <00:26:26.490>instance <00:26:26.665>and <00:26:26.840>we're <00:26:27.015>calling <00:26:27.190>this <00:26:27.365>Terraform <00:26:27.540>Web <00:26:27.715>example.

576
00:26:29.255 --> 00:26:30.555
<00:26:29.255>And <00:26:29.450>you <00:26:29.645>can <00:26:29.840>see <00:26:30.035>these <00:26:30.230>are <00:26:30.425>the

577
00:26:30.835 --> 00:26:32.075
<00:26:30.835>configurations <00:26:31.207>that <00:26:31.579>we're <00:26:31.951>using.

578
00:26:33.095 --> 00:26:35.515
<00:26:33.095>Um, <00:26:33.235>we're <00:26:33.375>saying <00:26:33.515>this <00:26:33.655>is <00:26:33.795>the <00:26:33.935>region, <00:26:34.075>this <00:26:34.215>is <00:26:34.355>the <00:26:34.495>type

579
00:26:35.535 --> 00:26:39.035
<00:26:35.535>of <00:26:35.662>instance <00:26:35.789>at <00:26:35.916>the <00:26:36.044>top <00:26:36.171>of <00:26:36.298>the <00:26:36.425>page, <00:26:36.553>you <00:26:36.680>can <00:26:36.807>see, <00:26:36.935>um,

580
00:26:39.545 --> 00:26:42.355
<00:26:39.545>that <00:26:39.745>we're <00:26:39.945>using <00:26:40.145>the <00:26:40.345>anode <00:26:40.545>provider <00:26:40.745>from <00:26:40.945>Terraform.

581
00:26:42.355 --> 00:26:44.325
<00:26:42.355>This <00:26:42.555>is <00:26:42.755>all <00:26:42.955>from <00:26:43.155>from <00:26:43.355>the <00:26:43.555>Terraform <00:26:43.755>registry.

582
00:26:45.145 --> 00:26:48.435
<00:26:45.145>Um, <00:26:45.425>and <00:26:45.705>again, <00:26:45.985>you <00:26:46.264>can <00:26:46.545>copy

583
00:26:48.495 --> 00:26:50.435
<00:26:48.495>and <00:26:48.728>paste <00:26:48.961>this <00:26:49.195>from <00:26:49.428>the <00:26:49.661>Terraform <00:26:49.895>registry.

584
00:26:51.015 --> 00:26:54.395
<00:26:51.015>So <00:26:51.170>once <00:26:51.326>we <00:26:51.481>deploy <00:26:51.637>this, <00:26:51.792>we're <00:26:51.948>gonna <00:26:52.103>see <00:26:52.259>this, <00:26:52.415>um,

585
00:26:54.545 --> 00:26:56.835
<00:26:54.545>Terraform <00:26:54.778>Web <00:26:55.011>example <00:26:55.245>inside <00:26:55.478>of <00:26:55.711>our <00:26:55.945>ui.

586
00:26:58.305 --> 00:26:59.715
<00:26:58.305>Next <00:26:58.728>we <00:26:59.151>run <00:26:59.573>Terraform

587
00:26:59.735 --> 00:27:02.035
<00:26:59.735>and <00:26:59.968>Knit, <00:27:00.201>which <00:27:00.435>is <00:27:00.668>gonna <00:27:00.901>initialize <00:27:01.135>Terraform.

588
00:27:02.265 --> 00:27:04.555
<00:27:02.265>Next <00:27:02.440>we <00:27:02.615>run <00:27:02.790>Terraform <00:27:02.965>Plan, <00:27:03.140>which <00:27:03.315>is <00:27:03.490>gonna <00:27:03.665>create

589
00:27:04.555 --> 00:27:05.715
<00:27:04.555>that <00:27:05.077>execution <00:27:05.599>plan.

590
00:27:05.935 --> 00:27:08.035
<00:27:05.935>So <00:27:06.135>what's <00:27:06.335>the <00:27:06.534>difference <00:27:06.735>between <00:27:06.935>what's <00:27:07.135>currently <00:27:07.335>in

591
00:27:08.035 --> 00:27:11.595
<00:27:08.035>production <00:27:08.315>versus, <00:27:08.595>um, <00:27:08.875>what <00:27:09.155>is, <00:27:09.435>uh,

592
00:27:11.945 --> 00:27:13.235
<00:27:11.945>what <00:27:12.235>I'm <00:27:12.525>trying <00:27:12.815>to <00:27:13.106>update.

593
00:27:14.945 --> 00:27:16.515
<00:27:14.945>Next, <00:27:15.294>we <00:27:15.645>run <00:27:15.995>Terraform <00:27:16.345>Apply

594
00:27:16.515 --> 00:27:19.835
<00:27:16.515>and <00:27:16.690>it's <00:27:16.865>going <00:27:17.040>to <00:27:17.215>apply <00:27:17.390>our <00:27:17.565>changes <00:27:17.740>for <00:27:17.915>us.

595
00:27:22.125 --> 00:27:24.025
<00:27:22.125>And <00:27:22.280>then <00:27:22.436>once <00:27:22.591>we <00:27:22.747>log <00:27:22.902>into <00:27:23.058>LE <00:27:23.213>node, <00:27:23.369>we're <00:27:23.525>gonna,

596
00:27:24.025 --> 00:27:27.105
<00:27:24.025>we're <00:27:24.200>gonna <00:27:24.375>see <00:27:24.550>this <00:27:24.725>Terraform <00:27:24.900>Web <00:27:25.075>web <00:27:25.250>example <00:27:25.425>created.

597
00:27:27.685 --> 00:27:29.785
<00:27:27.685>So <00:27:27.885>this <00:27:28.085>is <00:27:28.284>just <00:27:28.485>a <00:27:28.685>very <00:27:28.885>simple <00:27:29.085>example

598
00:27:30.285 --> 00:27:32.825
<00:27:30.285>of <00:27:30.460>building <00:27:30.635>your <00:27:30.810>infrastructure <00:27:30.985>with <00:27:31.160>Le <00:27:31.335>Node <00:27:31.510>and <00:27:31.685>Terraform.

599
00:27:32.825 --> 00:27:35.825
<00:27:32.825>Again, <00:27:32.965>here's <00:27:33.105>the <00:27:33.245>QR <00:27:33.385>code, <00:27:33.525>um, <00:27:33.665>where <00:27:33.805>you <00:27:33.945>can <00:27:34.085>go <00:27:34.225>in.

600
00:27:36.125 --> 00:27:38.945
<00:27:36.125>If <00:27:36.325>you <00:27:36.525>have <00:27:36.725>not <00:27:36.925>used <00:27:37.125>the <00:27:37.325>Terraform <00:27:37.525>registry,

601
00:27:39.105 --> 00:27:43.305
<00:27:39.105>I <00:27:39.385>highly <00:27:39.665>recommend, <00:27:39.945>um, <00:27:40.225>it's <00:27:40.505>registry.terraform.io.

602
00:27:43.805 --> 00:27:46.665
<00:27:43.805>Um, <00:27:44.038>there's <00:27:44.271>so <00:27:44.505>many <00:27:44.738>different <00:27:44.971>providers, <00:27:45.205>um,

603
00:27:46.765 --> 00:27:48.225
<00:27:46.765>so <00:27:47.093>many <00:27:47.422>different <00:27:47.750>resources <00:27:48.079>from

604
00:27:48.225 --> 00:27:49.625
<00:27:48.225>different <00:27:48.476>providers <00:27:48.729>that <00:27:48.981>you <00:27:49.233>can <00:27:49.485>use.

605
00:27:50.125 --> 00:27:54.345
<00:27:50.125>Um, <00:27:50.280>and <00:27:50.436>you <00:27:50.591>can <00:27:50.747>use, <00:27:50.902>um, <00:27:51.058>LE <00:27:51.213>Node <00:27:51.369>for, <00:27:51.525>uh,

606
00:27:54.925 --> 00:27:56.425
<00:27:54.925>for <00:27:55.375>those <00:27:55.825>cloud <00:27:56.274>resources.

607
00:27:56.425 --> 00:27:57.425
<00:27:56.425>We <00:27:56.605>do <00:27:56.784>have <00:27:56.965>a <00:27:57.145>free <00:27:57.325>version.

608
00:27:57.765 --> 00:28:01.265
<00:27:57.765>So, <00:27:57.920>um, <00:27:58.076>there's <00:27:58.231>also <00:27:58.387>some <00:27:58.542>more <00:27:58.698>resources <00:27:58.853>you <00:27:59.009>can <00:27:59.165>use

609
00:28:01.405 --> 00:28:02.425
<00:28:01.405>on <00:28:02.322>YouTube.

610
00:28:02.565 --> 00:28:04.625
<00:28:02.565>If <00:28:02.915>you <00:28:03.265>go <00:28:03.615>to <00:28:03.965>youtube.com/leno,

611
00:28:04.645 --> 00:28:08.225
<00:28:04.645>we <00:28:04.878>have <00:28:05.111>a <00:28:05.345>great <00:28:05.578>DevOps <00:28:05.811>community <00:28:06.045>leno.com/blog.

612
00:28:08.725 --> 00:28:12.185
<00:28:08.725>Um, <00:28:08.925>Terraform <00:28:09.125>again <00:28:09.324>is <00:28:09.524>an <00:28:09.725>open <00:28:09.925>source <00:28:10.125>project

613
00:28:12.205 --> 00:28:13.225
<00:28:12.205>you <00:28:12.511>can <00:28:12.817>contribute <00:28:13.122>to.

614
00:28:14.085 --> 00:28:18.225
<00:28:14.085>Um, <00:28:14.260>this <00:28:14.435>is <00:28:14.610>my <00:28:14.785>Twitter <00:28:14.960>account <00:28:15.135>at <00:28:15.310>Talia <00:28:15.485>Nazi.

615
00:28:18.385 --> 00:28:21.905
<00:28:18.385>I <00:28:18.540>also <00:28:18.696>just <00:28:18.851>created <00:28:19.007>a, <00:28:19.162>uh, <00:28:19.318>blog <00:28:19.473>and <00:28:19.629>a <00:28:19.785>website.

616
00:28:21.905 --> 00:28:23.665
<00:28:21.905>It's <00:28:22.254>called <00:28:22.605>Build <00:28:22.955>with <00:28:23.305>talia.com.

617
00:28:24.565 --> 00:28:26.145
<00:28:24.565>Um, <00:28:24.845>thank <00:28:25.125>you <00:28:25.405>all <00:28:25.685>for <00:28:25.965>joining

618
00:28:26.685 --> 00:28:30.345
<00:28:26.685>and <00:28:26.825>um, <00:28:26.965>please <00:28:27.105>reach <00:28:27.245>out <00:28:27.385>on <00:28:27.524>Twitter <00:28:27.665>if <00:28:27.804>you <00:28:27.945>guys <00:28:28.085>have

619
00:28:30.625 --> 00:28:33.625
<00:28:30.625>questions <00:28:30.825>or <00:28:31.025>comments, <00:28:31.225>and <00:28:31.425>have <00:28:31.625>a <00:28:31.825>great <00:28:32.025>day.