1
00:00:00,120 --> 00:00:01,830
In this lesson, we're going to dive,

2
00:00:01,830 --> 00:00:03,960
into the world of virtualization technologies,

3
00:00:03,960 --> 00:00:06,360
because the cloud relies on virtualization

4
00:00:06,360 --> 00:00:08,280
to allow end-users to run virtual machines

5
00:00:08,280 --> 00:00:10,410
on these cloud-based servers.

6
00:00:10,410 --> 00:00:13,320
This, in turn, allows multiple organizations and customers

7
00:00:13,320 --> 00:00:15,060
to share one physical server

8
00:00:15,060 --> 00:00:17,070
while keeping their own virtualized servers safe

9
00:00:17,070 --> 00:00:19,560
and isolated from the other organizations located

10
00:00:19,560 --> 00:00:21,720
on that same physical server.

11
00:00:21,720 --> 00:00:25,050
Virtualization enables a much more efficient use of hardware

12
00:00:25,050 --> 00:00:26,760
and it can provide us with fault tolerance,

13
00:00:26,760 --> 00:00:29,250
disaster recovery, and scalability.

14
00:00:29,250 --> 00:00:31,770
This also is one of the main reasons why virtualization

15
00:00:31,770 --> 00:00:34,530
has become the foundation of cloud computing.

16
00:00:34,530 --> 00:00:36,870
Cloud providers virtualize all the resources

17
00:00:36,870 --> 00:00:38,880
that they want to make available to their customers

18
00:00:38,880 --> 00:00:42,060
in order to easily manage all of those given resources.

19
00:00:42,060 --> 00:00:44,520
This occurs in every model of cloud computing,

20
00:00:44,520 --> 00:00:47,310
including SaaS, PaaS, and IaaS.

21
00:00:47,310 --> 00:00:50,370
By using virtualization, an administrator can easily build

22
00:00:50,370 --> 00:00:53,130
and then later tear down an entire cluster of systems

23
00:00:53,130 --> 00:00:54,510
with a single action.

24
00:00:54,510 --> 00:00:57,270
Or they can completely automate this process

25
00:00:57,270 --> 00:00:59,880
in response to changes in the environmental conditions,

26
00:00:59,880 --> 00:01:01,590
so that new servers will come online

27
00:01:01,590 --> 00:01:03,150
during periods of high demand,

28
00:01:03,150 --> 00:01:05,850
and those same servers can be remove or shut down

29
00:01:05,850 --> 00:01:07,860
during periods of low demand.

30
00:01:07,860 --> 00:01:09,780
To run virtual machines on a server,

31
00:01:09,780 --> 00:01:12,900
the physical server must have a hypervisor installed.

32
00:01:12,900 --> 00:01:14,640
The hypervisor is a software layer

33
00:01:14,640 --> 00:01:16,860
that provides control between virtual machines

34
00:01:16,860 --> 00:01:18,480
and the physical hardware.

35
00:01:18,480 --> 00:01:20,760
It's going to manage the allocation of hardware,

36
00:01:20,760 --> 00:01:22,530
control all the networking functions

37
00:01:22,530 --> 00:01:25,500
and conduct all the administrative control of the systems.

38
00:01:25,500 --> 00:01:27,090
There are two types of hypervisors

39
00:01:27,090 --> 00:01:28,650
you're going to find out in the field,

40
00:01:28,650 --> 00:01:30,660
type one and type two.

41
00:01:30,660 --> 00:01:33,870
Type one hypervisors are going to run directly on the hardware

42
00:01:33,870 --> 00:01:36,180
in what is known as a bare metal configuration

43
00:01:36,180 --> 00:01:37,380
or deployment.

44
00:01:37,380 --> 00:01:40,530
Type one hypervisors tend to be more resource efficient,

45
00:01:40,530 --> 00:01:42,600
because they don't run an entire operating system

46
00:01:42,600 --> 00:01:46,170
like Linux, Windows, or OS X in order to operate.

47
00:01:46,170 --> 00:01:48,540
And so this frees up more physical resources

48
00:01:48,540 --> 00:01:50,550
such as processing power and memory

49
00:01:50,550 --> 00:01:53,790
to the virtual machines it host on that physical server.

50
00:01:53,790 --> 00:01:58,350
Some good examples of type one hypervisors are VMware's ESXi

51
00:01:58,350 --> 00:02:01,110
and Microsoft's Hyper-V implementations.

52
00:02:01,110 --> 00:02:03,930
Type two hypervisors are going to be run as a service

53
00:02:03,930 --> 00:02:06,330
on top of a locally installed operating system

54
00:02:06,330 --> 00:02:09,210
such as Linux, Windows, or OS X.

55
00:02:09,210 --> 00:02:12,360
These hypervisors require additional resources to operate

56
00:02:12,360 --> 00:02:15,150
because they first have to load up the full operating system

57
00:02:15,150 --> 00:02:16,680
and then the full hypervisor

58
00:02:16,680 --> 00:02:18,840
and then the guest virtual machine

59
00:02:18,840 --> 00:02:20,130
with its operating systems

60
00:02:20,130 --> 00:02:22,140
in order for everything to operate.

61
00:02:22,140 --> 00:02:25,920
Oracle's VirtualBox, VMware Fusion and QEMU

62
00:02:25,920 --> 00:02:29,370
are examples of commonly used type two hypervisors.

63
00:02:29,370 --> 00:02:30,690
Now, on Linux systems,

64
00:02:30,690 --> 00:02:34,423
you'll also find KVM or kernel based virtual machines.

65
00:02:34,423 --> 00:02:37,140
A KVM or kernel based virtual machine

66
00:02:37,140 --> 00:02:39,570
is a Linux based virtualization solution

67
00:02:39,570 --> 00:02:42,030
that can be added to most Linux distributions.

68
00:02:42,030 --> 00:02:43,980
It's going to enable the management of virtual machines

69
00:02:43,980 --> 00:02:46,950
on Linux platforms with attributes of both the type one

70
00:02:46,950 --> 00:02:49,050
and a type two hypervisor.

71
00:02:49,050 --> 00:02:51,330
KVM is really a fairly efficient way

72
00:02:51,330 --> 00:02:52,440
to host virtual machines

73
00:02:52,440 --> 00:02:54,030
if you're already running a Linux server

74
00:02:54,030 --> 00:02:57,180
as the operating system for that physical server.

75
00:02:57,180 --> 00:02:58,950
Now, when you're working with virtual machines,

76
00:02:58,950 --> 00:03:01,620
it's important to create and use virtual machine templates

77
00:03:01,620 --> 00:03:04,320
to make your deployments easier and more efficient.

78
00:03:04,320 --> 00:03:06,000
By using predefined templates,

79
00:03:06,000 --> 00:03:07,920
you can allow your administrators and end-users

80
00:03:07,920 --> 00:03:10,890
to deploy servers themselves in a self-service environment

81
00:03:10,890 --> 00:03:12,750
using those predefined templates

82
00:03:12,750 --> 00:03:15,300
by specifying different processors, memory,

83
00:03:15,300 --> 00:03:17,160
storage, and network configurations

84
00:03:17,160 --> 00:03:19,230
for the virtual machines that are going to be created

85
00:03:19,230 --> 00:03:21,120
and launched by those templates.

86
00:03:21,120 --> 00:03:23,040
There are different template files and formats

87
00:03:23,040 --> 00:03:24,630
that you might come across in the field

88
00:03:24,630 --> 00:03:26,220
as a system administrator.

89
00:03:26,220 --> 00:03:31,220
This includes OVF, JSON, YAML, and container images.

90
00:03:31,740 --> 00:03:35,460
Now, the open virtualization format or OVF is a format

91
00:03:35,460 --> 00:03:38,610
that contains the necessary configuration files, packages,

92
00:03:38,610 --> 00:03:41,790
and settings for virtual machines and network devices.

93
00:03:41,790 --> 00:03:43,680
These files may be used in the deployment

94
00:03:43,680 --> 00:03:46,350
of virtual machines in a virtualized cloud environment

95
00:03:46,350 --> 00:03:48,990
using automation and orchestration.

96
00:03:48,990 --> 00:03:53,880
JSON or JSON is the JavaScript object notation format,

97
00:03:53,880 --> 00:03:55,740
and it's used by most programming languages

98
00:03:55,740 --> 00:03:57,240
to store information.

99
00:03:57,240 --> 00:03:59,520
This makes JSON really easy to interpret

100
00:03:59,520 --> 00:04:02,430
and use inside of your automations and orchestrations

101
00:04:02,430 --> 00:04:05,280
whenever you're interacting with it programmatically.

102
00:04:05,280 --> 00:04:10,280
The next one we have is YAML, or YAML aint markup language.

103
00:04:10,380 --> 00:04:12,000
Now, the YAML format is used

104
00:04:12,000 --> 00:04:13,680
to store configuration information

105
00:04:13,680 --> 00:04:16,019
on newly deployed virtual machines.

106
00:04:16,019 --> 00:04:19,440
YAML is commonly used by cloud service providers like AWS

107
00:04:19,440 --> 00:04:21,630
to install software or create user accounts

108
00:04:21,630 --> 00:04:23,700
during a virtual machine's first boot,

109
00:04:23,700 --> 00:04:26,190
or by orchestration tools like Ansible

110
00:04:26,190 --> 00:04:28,620
during the deployment of virtual machines.

111
00:04:28,620 --> 00:04:29,700
The fourth type we have

112
00:04:29,700 --> 00:04:32,280
is known as a container image template file.

113
00:04:32,280 --> 00:04:33,510
And these are another format

114
00:04:33,510 --> 00:04:35,880
that's used by specialized types of virtual machines

115
00:04:35,880 --> 00:04:37,470
known as containers.

116
00:04:37,470 --> 00:04:39,660
These container files contain everything needed

117
00:04:39,660 --> 00:04:40,830
for that container,

118
00:04:40,830 --> 00:04:44,190
including the applications and supporting configurations.

119
00:04:44,190 --> 00:04:46,740
Now, let's talk for a minute about the boot process

120
00:04:46,740 --> 00:04:48,270
and bootstrapping.

121
00:04:48,270 --> 00:04:50,820
Bootstrapping refers to the adage of pulling yourself up

122
00:04:50,820 --> 00:04:51,960
by the bootstraps,

123
00:04:51,960 --> 00:04:53,820
which means that the operating system starts

124
00:04:53,820 --> 00:04:55,890
with simple layers and then moves upwards

125
00:04:55,890 --> 00:04:57,810
towards more complex functionality

126
00:04:57,810 --> 00:04:59,940
as the boot process progresses.

127
00:04:59,940 --> 00:05:02,640
With virtual machines, the bootstrapping steps are handled

128
00:05:02,640 --> 00:05:04,200
by the virtualization layer,

129
00:05:04,200 --> 00:05:06,240
and it's possible to modify the startup

130
00:05:06,240 --> 00:05:07,680
and the deployment of virtual machines

131
00:05:07,680 --> 00:05:09,780
during the bootstrapping sequences.

132
00:05:09,780 --> 00:05:12,090
There are three ways of managing bootstrapping,

133
00:05:12,090 --> 00:05:15,570
including Cloud-init, Anaconda and Kickstart.

134
00:05:15,570 --> 00:05:18,210
Cloud-init is a cloud-based Linux mechanism

135
00:05:18,210 --> 00:05:21,270
to customize a virtual machine during its first boot up.

136
00:05:21,270 --> 00:05:23,910
This customization might include security settings,

137
00:05:23,910 --> 00:05:26,820
software package installations, user and group creation

138
00:05:26,820 --> 00:05:28,290
and much more.

139
00:05:28,290 --> 00:05:31,770
Anaconda is another method used by many Linux distributions

140
00:05:31,770 --> 00:05:33,360
to manage their deployments.

141
00:05:33,360 --> 00:05:35,340
The Anaconda installer can provide prompts

142
00:05:35,340 --> 00:05:38,160
to an administrator to configure the new Linux server,

143
00:05:38,160 --> 00:05:40,860
or it can reference template files to customize

144
00:05:40,860 --> 00:05:43,950
the installation automatically using automation.

145
00:05:43,950 --> 00:05:46,080
The third type is known as Kickstart.

146
00:05:46,080 --> 00:05:48,540
Now, Kickstart is another method used by Linux

147
00:05:48,540 --> 00:05:51,270
to customize the installation and provide an automated

148
00:05:51,270 --> 00:05:54,300
and unattended installation of new virtual machines.

149
00:05:54,300 --> 00:05:56,970
The Kickstart file is going to provide all the information

150
00:05:56,970 --> 00:05:59,910
about partitions, packages, user accounts,

151
00:05:59,910 --> 00:06:01,650
software deployments and more

152
00:06:01,650 --> 00:06:03,600
that's going to be needed to install, set up

153
00:06:03,600 --> 00:06:06,570
and configure those new virtual machines.

154
00:06:06,570 --> 00:06:09,030
Another area we need to cover in terms of virtual machines

155
00:06:09,030 --> 00:06:12,210
is storage, because all these virtual machines need a method

156
00:06:12,210 --> 00:06:14,490
to store and process their data.

157
00:06:14,490 --> 00:06:16,230
With traditional physical computers,

158
00:06:16,230 --> 00:06:18,540
storage capacity is provided as physical space

159
00:06:18,540 --> 00:06:19,830
on a given hard disk

160
00:06:19,830 --> 00:06:23,010
or partition locate on one or more storage drives.

161
00:06:23,010 --> 00:06:24,450
With virtualization though,

162
00:06:24,450 --> 00:06:27,180
storage capacity itself can also be virtualized

163
00:06:27,180 --> 00:06:30,630
across a large RAID device or storage area networks.

164
00:06:30,630 --> 00:06:33,270
And then smaller portions of that larger storage

165
00:06:33,270 --> 00:06:34,890
can be presented to the virtual machines

166
00:06:34,890 --> 00:06:38,460
as virtual storage devices or virtual storage drives.

167
00:06:38,460 --> 00:06:40,740
The virtual storage drive is simply a file

168
00:06:40,740 --> 00:06:42,420
that resides on the physical drive

169
00:06:42,420 --> 00:06:45,690
like any other data file on that underlying hard drive,

170
00:06:45,690 --> 00:06:48,630
but the virtual machine treats that single file

171
00:06:48,630 --> 00:06:51,060
as if it was an entire physical drive.

172
00:06:51,060 --> 00:06:53,580
It's going to be partitioned and given a file system,

173
00:06:53,580 --> 00:06:55,080
a boot loader is going to be installed,

174
00:06:55,080 --> 00:06:57,660
and an operating system is going to be deployed all inside

175
00:06:57,660 --> 00:07:00,720
this virtual container of this data file.

176
00:07:00,720 --> 00:07:02,430
While the virtual drive is just a file

177
00:07:02,430 --> 00:07:04,710
from our perspective as system administrators,

178
00:07:04,710 --> 00:07:06,480
the virtual machine truly believes

179
00:07:06,480 --> 00:07:08,220
that this is a real physical device

180
00:07:08,220 --> 00:07:10,650
just like any other hard disk drive.

181
00:07:10,650 --> 00:07:12,480
Now, when you're deploying virtual machines,

182
00:07:12,480 --> 00:07:15,300
you may be offered the option of configuring thin storage

183
00:07:15,300 --> 00:07:16,830
or thick storage.

184
00:07:16,830 --> 00:07:19,530
Thin storage refers to a virtual storage device file

185
00:07:19,530 --> 00:07:23,070
that's going to grow on demand up to a maximum file size.

186
00:07:23,070 --> 00:07:25,770
This tends to be a more efficient use of your drive space,

187
00:07:25,770 --> 00:07:28,920
but it does have the drawback of having slower performance

188
00:07:28,920 --> 00:07:30,870
than a thick storage system.

189
00:07:30,870 --> 00:07:32,730
Thin provisioning is most appropriate

190
00:07:32,730 --> 00:07:34,140
in environments where the cost

191
00:07:34,140 --> 00:07:37,350
of maintaining large storage pools is much more of a concern

192
00:07:37,350 --> 00:07:40,020
than the risk of temporarily running out of storage.

193
00:07:40,020 --> 00:07:42,210
For example, if you're running virtual box

194
00:07:42,210 --> 00:07:43,890
on your workstation to install Linux

195
00:07:43,890 --> 00:07:46,920
as your virtual machine, you can choose thin provisioning

196
00:07:46,920 --> 00:07:48,540
since we don't really want to use up a ton

197
00:07:48,540 --> 00:07:49,770
of your hard drive space

198
00:07:49,770 --> 00:07:52,410
when we initially create a virtual machine.

199
00:07:52,410 --> 00:07:54,120
Thick provisioning on the other hand

200
00:07:54,120 --> 00:07:56,400
is going to immediately reserve the allocated space

201
00:07:56,400 --> 00:07:58,170
for use by the virtual device,

202
00:07:58,170 --> 00:08:00,480
regardless of whether or not that much capacity

203
00:08:00,480 --> 00:08:02,040
is actually needed.

204
00:08:02,040 --> 00:08:04,260
So if you've installed a virtual machine

205
00:08:04,260 --> 00:08:05,700
and set up the virtual drive

206
00:08:05,700 --> 00:08:08,010
to have a one terabyte volume size,

207
00:08:08,010 --> 00:08:11,190
it's actually going to create a one terabyte file immediately

208
00:08:11,190 --> 00:08:13,050
during the virtual machine creation,

209
00:08:13,050 --> 00:08:15,330
if you choose to use this thick provisioning.

210
00:08:15,330 --> 00:08:17,400
Now, even if the initial Linux operating system

211
00:08:17,400 --> 00:08:19,350
you're installing in that virtual machine

212
00:08:19,350 --> 00:08:21,480
only needs eight gigabytes to install,

213
00:08:21,480 --> 00:08:22,560
it's still going to go ahead

214
00:08:22,560 --> 00:08:25,770
and reserve the entire one terabytes of file space.

215
00:08:25,770 --> 00:08:27,600
Now, the benefit of thick provisioning

216
00:08:27,600 --> 00:08:28,920
is that the performance is better

217
00:08:28,920 --> 00:08:30,750
and that you're guaranteed to have the space available

218
00:08:30,750 --> 00:08:31,920
whenever you need it.

219
00:08:31,920 --> 00:08:33,270
But its drawback

220
00:08:33,270 --> 00:08:36,419
is that you instantly used up a ton of physical disk space

221
00:08:36,419 --> 00:08:38,429
even if you really didn't need it all.

222
00:08:38,429 --> 00:08:41,010
Thick provisioning is most appropriate in the environments

223
00:08:41,010 --> 00:08:43,470
where disruptions to the continuous storage process

224
00:08:43,470 --> 00:08:45,810
presents a larger risk and you're less concerned

225
00:08:45,810 --> 00:08:47,370
with increasing your storage costs

226
00:08:47,370 --> 00:08:49,980
than you are with mitigating that risk.

227
00:08:49,980 --> 00:08:52,380
Data can also be stored in multiple different ways

228
00:08:52,380 --> 00:08:54,300
when you're interacting in the cloud.

229
00:08:54,300 --> 00:08:57,240
One of these is to use a traditional SQL database

230
00:08:57,240 --> 00:08:59,820
like MariaDB or MySQL.

231
00:08:59,820 --> 00:09:02,910
It's also possible to store data in an unstructured manner,

232
00:09:02,910 --> 00:09:04,830
which is referred to as a blob,

233
00:09:04,830 --> 00:09:06,480
as Microsoft Azure likes to call it,

234
00:09:06,480 --> 00:09:09,540
or a bucket, as AWS likes to call it.

235
00:09:09,540 --> 00:09:12,540
Now, a blob really stands for binary large object,

236
00:09:12,540 --> 00:09:14,160
and it really is the same thing we're talking

237
00:09:14,160 --> 00:09:15,180
about with buckets,

238
00:09:15,180 --> 00:09:17,670
which is just an example of object storage.

239
00:09:17,670 --> 00:09:21,060
If you hear blob or bucket, they mean the exact same thing.

240
00:09:21,060 --> 00:09:22,020
The only difference

241
00:09:22,020 --> 00:09:24,210
is which cloud provider you're referring to.

242
00:09:24,210 --> 00:09:25,860
Blobs are used by Azure.

243
00:09:25,860 --> 00:09:27,960
Buckets are used by AWS.

244
00:09:27,960 --> 00:09:30,330
Blobs and buckets can be used to store audio,

245
00:09:30,330 --> 00:09:33,270
video, multimedia, and text files.

246
00:09:33,270 --> 00:09:35,730
Now, the data that's actually written to the storage device,

247
00:09:35,730 --> 00:09:38,040
whether it's physical or a virtual device,

248
00:09:38,040 --> 00:09:40,050
are actually going to be put there in small chunks.

249
00:09:40,050 --> 00:09:41,970
And we call these blocks.

250
00:09:41,970 --> 00:09:44,340
These blocks are the fundamental storage areas

251
00:09:44,340 --> 00:09:45,690
of your hard drive.

252
00:09:45,690 --> 00:09:47,430
Now, most files are going to be too large

253
00:09:47,430 --> 00:09:49,260
should be stored in a single block.

254
00:09:49,260 --> 00:09:50,730
So the broken down into pieces

255
00:09:50,730 --> 00:09:52,980
that are then written into these blocks.

256
00:09:52,980 --> 00:09:55,080
Later on when you want to read that file,

257
00:09:55,080 --> 00:09:56,670
the hard drive or storage device

258
00:09:56,670 --> 00:09:58,680
is going to grab all those different blocks,

259
00:09:58,680 --> 00:10:00,660
reassemble them into the complete file

260
00:10:00,660 --> 00:10:03,120
and present that to you as a user.

261
00:10:03,120 --> 00:10:06,660
All right, let's talk about networking and virtualization.

262
00:10:06,660 --> 00:10:09,060
The virtualization hypervisor can be configured

263
00:10:09,060 --> 00:10:11,070
to provide access to networking services

264
00:10:11,070 --> 00:10:12,810
in several different ways.

265
00:10:12,810 --> 00:10:14,250
The virtual machine can be configured

266
00:10:14,250 --> 00:10:17,880
with one or more virtual NICs or network interface cards.

267
00:10:17,880 --> 00:10:19,650
These virtual NICs can then be connected

268
00:10:19,650 --> 00:10:22,710
to virtual switches within that hypervisor as well.

269
00:10:22,710 --> 00:10:25,080
Those virtual switches can then be given access

270
00:10:25,080 --> 00:10:27,990
to the host computers physical network interface card

271
00:10:27,990 --> 00:10:30,030
and there's some different configuration options

272
00:10:30,030 --> 00:10:31,080
that you can use.

273
00:10:31,080 --> 00:10:32,790
Things like no networking.

274
00:10:32,790 --> 00:10:34,950
This is an option that simulates a computer

275
00:10:34,950 --> 00:10:36,930
that does not have a NIC cart at all,

276
00:10:36,930 --> 00:10:38,970
and therefore, there's no network connectivity

277
00:10:38,970 --> 00:10:40,680
for that virtual machine.

278
00:10:40,680 --> 00:10:43,500
The internal option is where the VM is going to be connected

279
00:10:43,500 --> 00:10:46,200
to a virtual switch that permits network communication

280
00:10:46,200 --> 00:10:48,090
with other virtual machines connected

281
00:10:48,090 --> 00:10:50,010
to that same virtual switch.

282
00:10:50,010 --> 00:10:52,020
This will not allow them to have network communication

283
00:10:52,020 --> 00:10:53,460
with the host operating system

284
00:10:53,460 --> 00:10:55,890
or the physical network interface card,

285
00:10:55,890 --> 00:10:57,840
only other virtual machines connected

286
00:10:57,840 --> 00:10:59,490
to that virtual switch.

287
00:10:59,490 --> 00:11:01,740
The private option allows the virtual machine

288
00:11:01,740 --> 00:11:03,570
to be connected to a virtual switch

289
00:11:03,570 --> 00:11:04,860
that permits network communication

290
00:11:04,860 --> 00:11:06,450
with other virtual machines

291
00:11:06,450 --> 00:11:08,850
and the host operating system too.

292
00:11:08,850 --> 00:11:10,800
But there is no network connectivity

293
00:11:10,800 --> 00:11:12,210
out to the physical NIC,

294
00:11:12,210 --> 00:11:14,730
and therefore, not to the public internet.

295
00:11:14,730 --> 00:11:16,800
Finally, we have the public option.

296
00:11:16,800 --> 00:11:19,140
The public option is where the virtual machine is connected

297
00:11:19,140 --> 00:11:21,600
to a virtual switch that permits network communication

298
00:11:21,600 --> 00:11:23,010
with other virtual machines,

299
00:11:23,010 --> 00:11:26,190
the host operating system and the physical NIC.

300
00:11:26,190 --> 00:11:28,530
This configuration will expose the virtual machine

301
00:11:28,530 --> 00:11:30,810
to the business network and to the internet

302
00:11:30,810 --> 00:11:31,800
where it can then participate

303
00:11:31,800 --> 00:11:34,890
as if it was a regular physical client or server.

304
00:11:34,890 --> 00:11:36,750
Now, networking and virtual environments

305
00:11:36,750 --> 00:11:39,750
is as flexible as it is in physical environments.

306
00:11:39,750 --> 00:11:42,720
Services like network address translation, or NAT,

307
00:11:42,720 --> 00:11:45,480
can still provide the same functionality in virtual networks

308
00:11:45,480 --> 00:11:47,370
as they do in physical networks.

309
00:11:47,370 --> 00:11:49,680
When you use NTA, it's going to be used to translate

310
00:11:49,680 --> 00:11:52,200
between the reserved private IP address ranges

311
00:11:52,200 --> 00:11:55,680
and the public internet accessible IP address ranges.

312
00:11:55,680 --> 00:11:57,810
These virtualized networks can also be thought of

313
00:11:57,810 --> 00:12:01,050
as overlay networks, especially when they're deployed inside

314
00:12:01,050 --> 00:12:02,430
of a cloud environment.

315
00:12:02,430 --> 00:12:04,470
The term overlay network simply means

316
00:12:04,470 --> 00:12:07,320
that one network is built on top of another.

317
00:12:07,320 --> 00:12:10,050
Virtualized network environments also support bridging,

318
00:12:10,050 --> 00:12:11,490
which connects two networks together

319
00:12:11,490 --> 00:12:13,260
into a single managed unit,

320
00:12:13,260 --> 00:12:14,910
whether those are two virtual networks

321
00:12:14,910 --> 00:12:17,310
or a virtual and physical network.

322
00:12:17,310 --> 00:12:20,190
Now, most virtual host servers are going to run Linux

323
00:12:20,190 --> 00:12:22,200
without a graphical user interface

324
00:12:22,200 --> 00:12:25,230
in order to save on memory and processing resources.

325
00:12:25,230 --> 00:12:27,660
Now, this is often referred to as a headless mode

326
00:12:27,660 --> 00:12:30,330
because there is no graphical user interface.

327
00:12:30,330 --> 00:12:32,250
Management of these virtual machines then

328
00:12:32,250 --> 00:12:34,560
has to occur using a command line interface

329
00:12:34,560 --> 00:12:37,140
usually by remotely accessing the virtual machines

330
00:12:37,140 --> 00:12:39,210
over an SSH connection.

331
00:12:39,210 --> 00:12:42,900
Alternatively though, you can use the virsh command

332
00:12:42,900 --> 00:12:46,110
as an interactive shell to control the virtual machines.

333
00:12:46,110 --> 00:12:48,450
This stands for virtual shell.

334
00:12:48,450 --> 00:12:50,340
Now, there are various subcommands you can use

335
00:12:50,340 --> 00:12:52,230
with virsh.

336
00:12:52,230 --> 00:12:54,390
The help subcommand is going to be used to get help

337
00:12:54,390 --> 00:12:56,640
with the virsh command.

338
00:12:56,640 --> 00:12:58,920
The list subcommand is going to be used to get a list

339
00:12:58,920 --> 00:13:02,790
of recognized virtual machines by the virsh command.

340
00:13:02,790 --> 00:13:05,370
The shutdown VM subcommand is going to be used

341
00:13:05,370 --> 00:13:07,410
to gracefully shut down a virtual machine

342
00:13:07,410 --> 00:13:08,850
using this utility.

343
00:13:08,850 --> 00:13:10,650
The start virtual machine subcommand

344
00:13:10,650 --> 00:13:13,080
is going to be used to start a virtual machine.

345
00:13:13,080 --> 00:13:14,870
The reboot virtual machine subcommand

346
00:13:14,870 --> 00:13:17,520
is going to be used to reboot a virtual machine.

347
00:13:17,520 --> 00:13:20,430
The create and then an XML file name subcommand

348
00:13:20,430 --> 00:13:23,550
is going to create a virtual machine from an XML file

349
00:13:23,550 --> 00:13:25,920
that contains all the parameters you need.

350
00:13:25,920 --> 00:13:28,590
The save virtual machine file name subcommand

351
00:13:28,590 --> 00:13:31,140
is going to save the current state of that virtual machine

352
00:13:31,140 --> 00:13:33,660
with the given file name that you specified.

353
00:13:33,660 --> 00:13:35,600
And the console virtual machine subcommand

354
00:13:35,600 --> 00:13:38,130
is going to open up a console to that virtual machine,

355
00:13:38,130 --> 00:13:40,410
so you can interact with it directly.

356
00:13:40,410 --> 00:13:43,080
Now, Linux virtualization solutions are usually built

357
00:13:43,080 --> 00:13:47,190
on top of libvirt, or libvirt,

358
00:13:47,190 --> 00:13:50,430
which is an application programming interface or API

359
00:13:50,430 --> 00:13:52,080
that provides the software building blocks

360
00:13:52,080 --> 00:13:55,470
for developers to write their own virtualization solutions.

361
00:13:55,470 --> 00:13:57,930
These solutions can also be composed of a DAMON

362
00:13:57,930 --> 00:13:59,280
and a management interface

363
00:13:59,280 --> 00:14:01,710
to have more of a client server model here.

364
00:14:01,710 --> 00:14:05,220
There are several hypervisors, including VMware's ESXi,

365
00:14:05,220 --> 00:14:10,220
KVM, and QEMU, that are all built using the libvirt

366
00:14:10,290 --> 00:14:12,060
as it provides a solid foundation

367
00:14:12,060 --> 00:14:14,220
for Linux based virtualization.

368
00:14:14,220 --> 00:14:17,700
For example, the virsh tool that we just talked about

369
00:14:17,700 --> 00:14:21,480
is actually part of the libvirt API tool set.

370
00:14:21,480 --> 00:14:22,350
Now, if you're using

371
00:14:22,350 --> 00:14:24,690
a graphical user based Linux distribution

372
00:14:24,690 --> 00:14:26,820
that has the known desktop environment,

373
00:14:26,820 --> 00:14:30,060
you can also use a graphical user interface based way

374
00:14:30,060 --> 00:14:31,620
to manage your virtual machines

375
00:14:31,620 --> 00:14:35,640
known as Gnome virtual machine manager or VMM.

376
00:14:35,640 --> 00:14:37,890
The Gnome virtual machine manager utility

377
00:14:37,890 --> 00:14:40,440
can be used from managing connectivity to virtual machines

378
00:14:40,440 --> 00:14:42,930
and enable the deployment, management and removal

379
00:14:42,930 --> 00:14:44,310
of those virtual machines

380
00:14:44,310 --> 00:14:47,190
using a more intuitive graphical interface.

381
00:14:47,190 --> 00:14:51,390
You can download and install the virt-manager package

382
00:14:51,390 --> 00:14:53,400
if you want to be able to use VMM

383
00:14:53,400 --> 00:14:55,680
or the virtual machine manager.

384
00:14:55,680 --> 00:14:56,513
Wow.

385
00:14:56,513 --> 00:14:58,230
Now, I know that was a lot of information

386
00:14:58,230 --> 00:15:00,150
but the good news is that most of that

387
00:15:00,150 --> 00:15:01,140
should have been reviewed

388
00:15:01,140 --> 00:15:04,500
from your A+, Network+ and Security+ studies.

389
00:15:04,500 --> 00:15:06,540
The only really new things we discussed here

390
00:15:06,540 --> 00:15:07,813
are the different tools used in Linux

391
00:15:07,813 --> 00:15:10,350
to be able to create, install, setup

392
00:15:10,350 --> 00:15:13,320
and configure virtual machines, such as the file formats

393
00:15:13,320 --> 00:15:18,270
of OVF, JSON, YAML, and container images,

394
00:15:18,270 --> 00:15:20,370
the bootstrapping concepts that included things

395
00:15:20,370 --> 00:15:23,160
like Cloud-init, Anaconda and Kickstart

396
00:15:23,160 --> 00:15:25,200
as well as the Linux utilities that are used

397
00:15:25,200 --> 00:15:29,460
with virtual machines such as the virsh, libvirt,

398
00:15:29,460 --> 00:15:31,233
and VMM utilities.

