WEBVTT

1
00:00.000 --> 00:04.960
Now friends, everyone agrees that NetSpark Automation is absolutely awesome.

2
00:04.960 --> 00:07.040
Who could disagree after all?

3
00:07.040 --> 00:12.320
But the reality is there is more than one way to implement NetSpark Automation.

4
00:12.320 --> 00:15.500
So what I want to do in this particular video is to talk to you about the

5
00:15.500 --> 00:16.720
concept of agent

6
00:16.720 --> 00:21.960
based automation as well as what is known as agent less automation.

7
00:21.960 --> 00:26.050
And what we'll also do is mention some very common utilities that are used with

8
00:26.050 --> 00:26.920
this particular

9
00:26.920 --> 00:27.920
architecture.

10
00:27.920 --> 00:29.360
So let's talk about it.

11
00:29.360 --> 00:33.840
So the way I like to describe this is if you look at this little topology right
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

11
00:29.360 --> 00:33.840
So the way I like to describe this is if you look at this little topology right

12
00:33.840 --> 00:33.960
here,

13
00:33.960 --> 00:37.120
what I actually have are four Cisco switches.

14
00:37.120 --> 00:40.840
And over here, this is actually just my little Linux server.

15
00:40.840 --> 00:45.180
Basically this device here, this Linux machine can talk to all the devices in

16
00:45.180 --> 00:45.960
my topology.

17
00:45.960 --> 00:49.960
Now right now, I just said that these four devices were all Cisco based.

18
00:49.960 --> 00:54.600
Now what I would like you to do is to close your eyes, use your imagination.

19
00:54.600 --> 00:59.160
So let's just say that for the moment, they were all Linux servers.

20
00:59.160 --> 01:00.160
Okay, so this is Linux.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

20
00:59.160 --> 01:00.160
Okay, so this is Linux.

21
01:00.160 --> 01:01.160
This is Linux.

22
01:01.160 --> 01:02.840
As is this, as is this.

23
01:02.840 --> 01:04.000
And this one over here too.

24
01:04.000 --> 01:05.000
Okay.

25
01:05.000 --> 01:07.040
So a Linux environment is what we've got.

26
01:07.040 --> 01:10.600
So right now we're more doing automation for a system of administration as

27
01:10.600 --> 01:11.080
opposed to

28
01:11.080 --> 01:12.080
networking.

29
01:12.080 --> 01:13.240
Now here's the cool thing.

30
01:13.240 --> 01:18.120
This is the advantage of doing automation in the Linux world.

31
01:18.120 --> 01:20.240
Is it because they're just regular servers?

32
01:20.240 --> 01:23.720
What you can essentially do is install new software onto them.

33
01:23.720 --> 01:29.320
So this is something that you can't actually do on old legacy Cisco iOS devices

34
01:29.320 --> 01:29.400
.

35
01:29.400 --> 01:30.480
Let me show you what I mean.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

35
01:29.400 --> 01:30.480
Let me show you what I mean.

36
01:30.480 --> 01:34.620
If I go to this device here, as it is, open up a terminal window, what I can't

37
01:34.620 --> 01:35.080
say is

38
01:35.080 --> 01:38.480
you know, install the Python programming language.

39
01:38.480 --> 01:39.800
This is going to give me an error.

40
01:39.800 --> 01:43.880
Even if I type the actual correct syntax that I would use on a Linux machine,

41
01:43.880 --> 01:44.120
so the

42
01:44.120 --> 01:47.690
we have to install Python three, for example, or whatever it may be, still

43
01:47.690 --> 01:48.320
going to get

44
01:48.320 --> 01:49.320
an error.

45
01:49.320 --> 01:52.920
Because this particular operating system is really locked down.

46
01:52.920 --> 01:56.520
It's only going to accept Cisco specific syntax.

47
01:56.520 --> 02:00.030
So straight away, because we can actually install anything on this particular
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

47
01:56.520 --> 02:00.030
So straight away, because we can actually install anything on this particular

48
02:00.030 --> 02:00.640
device, we

49
02:00.640 --> 02:04.720
actually have a little bit of a hurdle when it comes to our automation tools.

50
02:04.720 --> 02:08.520
Because here is our first architecture, the agent based architecture.

51
02:08.520 --> 02:13.100
Now again, let's imagine that these are all Linux machines and I can install

52
02:13.100 --> 02:14.000
new software

53
02:14.000 --> 02:15.000
on them.

54
02:15.000 --> 02:17.830
Then what I can actually do is I can install a little agent on each of these

55
02:17.830 --> 02:18.480
machines.

56
02:18.480 --> 02:21.610
And this is just like on your phone if you download a new application, okay, it

57
02:21.610 --> 02:22.160
's a very

58
02:22.160 --> 02:25.600
particular piece of software that does a very particular thing.

59
02:25.600 --> 02:29.340
So I find all this agent, this piece of software on all the devices that I want

60
02:29.340 --> 02:30.120
to manage,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

60
02:29.340 --> 02:30.120
to manage,

61
02:30.120 --> 02:33.600
as well as over here, I install whatever software I need.

62
02:33.600 --> 02:37.800
Then what it does is that it gives my management station over here a way to

63
02:37.800 --> 02:38.800
communicate with

64
02:38.800 --> 02:40.480
the devices under my control.

65
02:40.480 --> 02:43.880
So we can have this nice detail conversation between each other.

66
02:43.880 --> 02:48.120
Let me just first begin by talking about a particular configuration management

67
02:48.120 --> 02:49.680
tool known as puppets,

68
02:49.680 --> 02:50.680
okay.

69
02:50.680 --> 02:54.330
Now puppets happens to be very well known in the world of automation and system

70
02:54.330 --> 02:55.200
administration

71
02:55.200 --> 02:57.920
i.e. managing servers with automation.

72
02:57.920 --> 03:00.120
And this is precisely what is going to happen.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

72
02:57.920 --> 03:00.120
And this is precisely what is going to happen.

73
03:00.120 --> 03:03.510
You happen to have, like say, for example, your Linux machine over here, you

74
03:03.510 --> 03:04.160
install the

75
03:04.160 --> 03:05.840
puppet software on it.

76
03:05.840 --> 03:09.490
And then all the devices that you're managing, you also install this little

77
03:09.490 --> 03:10.200
puppet agent,

78
03:10.200 --> 03:12.920
okay, every device gets the puppet agent.

79
03:12.920 --> 03:16.120
And the management point gets the full puppet software.

80
03:16.120 --> 03:19.360
And what this one is referred to is the puppet master.

81
03:19.360 --> 03:22.880
And this is where we decide what should actually happen within the network.

82
03:22.880 --> 03:27.840
Quite simply, what we do is we configure particular files on this device.

83
03:27.840 --> 03:30.480
And these are known as manifest files.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

83
03:27.840 --> 03:30.480
And these are known as manifest files.

84
03:30.480 --> 03:34.270
And this is used to describe what the configurations of all these devices here

85
03:34.270 --> 03:35.360
should actually be.

86
03:35.360 --> 03:39.290
Now here's what's going to happen because this device here actually has an

87
03:39.290 --> 03:40.520
agent installed.

88
03:40.520 --> 03:44.320
What it's going to do is going to continually talk back to the puppet master.

89
03:44.320 --> 03:47.480
And it's going to ask the question, is my configuration correct?

90
03:47.480 --> 03:52.120
Now at this point here, the puppet master is going to compare what is actually

91
03:52.120 --> 03:53.120
being sent

92
03:53.120 --> 03:57.170
from the agent right here and compare it against what it has in the manifest

93
03:57.170 --> 03:57.960
file i.e.

94
03:57.960 --> 04:00.240
what should the configuration actually be?
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

94
03:57.960 --> 04:00.240
what should the configuration actually be?

95
04:00.240 --> 04:03.760
Now let's imagine for whatever reason that happens to be some type of discrepan

96
04:03.760 --> 04:04.200
cy, maybe

97
04:04.200 --> 04:08.440
someone's logged into this machine remotely and made a configuration change.

98
04:08.440 --> 04:11.960
So if there is an error, then the puppet master is going to pretty much inform

99
04:11.960 --> 04:12.360
and say,

100
04:12.360 --> 04:14.960
hey, no, your configuration is wrong.

101
04:14.960 --> 04:16.960
You should have x, y, and z.

102
04:16.960 --> 04:21.230
Now at this stage here, having now been informed of this, the actual node is

103
04:21.230 --> 04:22.800
going to reach out

104
04:22.800 --> 04:26.530
to the actual puppet master and say, hey, send me the configurations that it

105
04:26.530 --> 04:27.480
should have.

106
04:27.480 --> 04:31.100
And what is going to happen is the puppet agent will then apply these configs
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

106
04:27.480 --> 04:31.100
And what is going to happen is the puppet agent will then apply these configs

107
04:31.100 --> 04:32.360
to the machine.

108
04:32.360 --> 04:34.760
And ultimately, any problems are going to be resolved.

109
04:34.760 --> 04:38.120
Now what we just talked about here was agent-based automation.

110
04:38.120 --> 04:42.080
Now the utility that I happen to specify was something known as puppets.

111
04:42.080 --> 04:46.080
And this is just one of the options that utilizes this particular architecture.

112
04:46.080 --> 04:49.940
Now just some things to note about puppet, it's written in the Ruby programming

113
04:49.940 --> 04:50.800
language.

114
04:50.800 --> 04:54.380
But the good news is that you do not have to know how to write Ruby code in

115
04:54.380 --> 04:55.080
order to use

116
04:55.080 --> 04:56.080
puppets.

117
04:56.080 --> 05:00.050
Instead of writing Ruby code, you just write these what are called manifest
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

117
04:56.080 --> 05:00.050
Instead of writing Ruby code, you just write these what are called manifest

118
05:00.050 --> 05:00.680
files that

119
05:00.680 --> 05:03.440
basically describe the state of your network.

120
05:03.440 --> 05:07.240
And ultimately, under the hood, puppet acts as a type of translation layer.

121
05:07.240 --> 05:09.400
So that was an example of an agent-based solution.

122
05:09.400 --> 05:12.120
Another one would be a tool called chef.

123
05:12.120 --> 05:16.130
Once again, very, very popular in the world of server administration for

124
05:16.130 --> 05:17.440
similar reasons.

125
05:17.440 --> 05:20.820
Because once again, chef involves that you actually install some type of

126
05:20.820 --> 05:22.000
software on the devices

127
05:22.000 --> 05:23.200
that you're going to be managing.

128
05:23.200 --> 05:25.920
In this case here, it is the chef client.

129
05:25.920 --> 05:29.880
So the chef client gets installed on all of the target devices to be managed.

130
05:29.880 --> 05:34.280
And on your management node, you just install the regular chef software.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

130
05:29.880 --> 05:34.280
And on your management node, you just install the regular chef software.

131
05:34.280 --> 05:37.690
Now in Shefflingo, as opposed to be known as a puppet master, this is just

132
05:37.690 --> 05:38.400
simply known

133
05:38.400 --> 05:39.960
as the chef server.

134
05:39.960 --> 05:43.480
So basically we've got the chef server as well as our chef clients.

135
05:43.480 --> 05:47.050
And in a similar way, because we have this ability to have this two-way

136
05:47.050 --> 05:48.200
conversation, the

137
05:48.200 --> 05:51.960
devices being managed can reach out to the actual server in check that the

138
05:51.960 --> 05:52.920
configurations

139
05:52.920 --> 05:53.920
are indeed correct.

140
05:53.920 --> 05:57.570
And if there are any problems, then once again, those configurations can be

141
05:57.570 --> 05:58.320
pulled in by

142
05:58.320 --> 05:59.760
the client and repaired.

143
05:59.760 --> 06:03.790
Now, one thing to note about chef, and this is not a small problem, is that it
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

143
05:59.760 --> 06:03.790
Now, one thing to note about chef, and this is not a small problem, is that it

144
06:03.790 --> 06:04.040
's

145
06:04.040 --> 06:06.000
kind of complex to use.

146
06:06.000 --> 06:09.840
This too is also written in the Ruby programming language.

147
06:09.840 --> 06:13.360
And in order to use chef effectively, you kind of really have to understand a

148
06:13.360 --> 06:13.960
little bit

149
06:13.960 --> 06:15.280
of Ruby programming.

150
06:15.280 --> 06:18.120
This is obviously a barrier of entry.

151
06:18.120 --> 06:21.990
And it's one of the reasons why chef did not take off in the world of network

152
06:21.990 --> 06:22.640
automation

153
06:22.640 --> 06:26.240
the way it did in the world of server administration automation.

154
06:26.240 --> 06:32.120
Okay, now here is the part where I abandoned all pretends entirely.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

154
06:26.240 --> 06:32.120
Okay, now here is the part where I abandoned all pretends entirely.

155
06:32.120 --> 06:37.450
The only reason I am talking to you about them is because they are listed on

156
06:37.450 --> 06:39.240
the exam objectives.

157
06:39.240 --> 06:43.360
Pretty much nobody uses chef or puppet to automate networks.

158
06:43.360 --> 06:45.040
It just simply is not a thing.

159
06:45.040 --> 06:48.840
Now don't think that this is a good reason just to skip over what we've talked

160
06:48.840 --> 06:49.440
about.

161
06:49.440 --> 06:53.320
The reality is you still might get a question on these particular technologies.

162
06:53.320 --> 06:57.760
So understanding that they can utilize agents and understanding the general

163
06:57.760 --> 06:58.680
workflow of

164
06:58.680 --> 07:01.480
these type of solutions is important to understand.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

164
06:58.680 --> 07:01.480
these type of solutions is important to understand.

165
07:01.480 --> 07:06.080
However, these tools do have some traction in the world of server admin.

166
07:06.080 --> 07:07.080
So what's the big difference?

167
07:07.080 --> 07:08.080
What is the problem?

168
07:08.080 --> 07:12.790
Let me tell you it again relates to this idea of an agent on these old dusty

169
07:12.790 --> 07:13.920
Cisco devices.

170
07:13.920 --> 07:16.600
We do not have the ability to install an agent.

171
07:16.600 --> 07:17.600
So would we do them?

172
07:17.600 --> 07:18.600
Do we just not automate?

173
07:18.600 --> 07:20.520
Well, that isn't a very good solution.

174
07:20.520 --> 07:25.000
Obviously, instead, what if we could have an agent less solution?

175
07:25.000 --> 07:29.970
Now this here, this would actually be very, very useful for us as network

176
07:29.970 --> 07:31.120
engineers.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

176
07:29.970 --> 07:31.120
engineers.

177
07:31.120 --> 07:36.100
And drumroll please, you'll be happy to hear that we actually do have such a

178
07:36.100 --> 07:37.040
solution.

179
07:37.040 --> 07:40.800
Now the way an agent less solution happens to operate is quite simply the

180
07:40.800 --> 07:41.440
devices that

181
07:41.440 --> 07:42.840
we're actually managing.

182
07:42.840 --> 07:44.160
We don't have to worry about them.

183
07:44.160 --> 07:45.960
Well, we do have to worry about them.

184
07:45.960 --> 07:46.960
We are managing them.

185
07:46.960 --> 07:50.850
But what I mean is we don't have to worry about installing any type of software

186
07:50.850 --> 07:51.280
on them,

187
07:51.280 --> 07:55.280
some specific agent in order to be able to automate the devices.

188
07:55.280 --> 07:59.950
In the case here, if these devices are simply capable of, say, for example,

189
07:59.950 --> 08:01.720
talking over SSH,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

189
07:59.950 --> 08:01.720
talking over SSH,

190
08:01.720 --> 08:05.880
we can use, say, for example, a Linux server over here, install some type of

191
08:05.880 --> 08:06.640
software on

192
08:06.640 --> 08:09.800
it, some type of agent less software.

193
08:09.800 --> 08:14.880
And all we'll do is utilize our SSH channel or maybe our HTTP channel.

194
08:14.880 --> 08:17.200
However it is, you can talk to these devices.

195
08:17.200 --> 08:20.890
And quite simply, you can just render all the automated configurations on the

196
08:20.890 --> 08:22.040
device itself

197
08:22.040 --> 08:25.880
and then just send those configs directly down an SSH channel.

198
08:25.880 --> 08:29.600
So these devices here could be made in the 1990s.

199
08:29.600 --> 08:34.360
So long as they're capable of SSH, then they can be automated in this agentless
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

199
08:29.600 --> 08:34.360
So long as they're capable of SSH, then they can be automated in this agentless

200
08:34.360 --> 08:35.080
manner.

201
08:35.080 --> 08:39.670
Now unlike Chef and unlike puppet, there is one mega monster in the world of

202
08:39.670 --> 08:40.280
network

203
08:40.280 --> 08:41.280
automation.

204
08:41.280 --> 08:42.600
Perhaps you have heard about it.

205
08:42.600 --> 08:44.960
This is the utility known as Ansible.

206
08:44.960 --> 08:47.480
So let's dive in and talk about the details.
