WEBVTT

1
00:00.000 --> 00:02.800
So friends, let me tell you a little bit of a secret.

2
00:02.800 --> 00:07.780
One of the best modules that you can use in order to troubleshoot and to debug

3
00:07.780 --> 00:08.720
your problems

4
00:08.720 --> 00:10.480
is indeed the debug module.

5
00:10.480 --> 00:14.480
Now we have just really been using this module to effectively print out

6
00:14.480 --> 00:16.000
particular messages.

7
00:16.000 --> 00:20.470
It really has been acting much more like a print module as opposed to a debug

8
00:20.470 --> 00:20.880
module,

9
00:20.880 --> 00:25.600
but by virtue of it being able to print out these messages, we can use it in

10
00:25.600 --> 00:26.400
such a way

11
00:26.400 --> 00:28.480
that it can help us debugish us.

12
00:28.480 --> 00:32.320
So how about we take some time to actually explore this module in the context
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

12
00:28.480 --> 00:32.320
So how about we take some time to actually explore this module in the context

13
00:32.320 --> 00:33.680
of fixing problems,

14
00:33.680 --> 00:37.760
and I think you'll get to see just how useful this particular module can be.

15
00:37.760 --> 00:40.240
So with that said, let's just get to it.

16
00:40.240 --> 00:43.120
Now just before we actually begin looking at a playbook,

17
00:43.120 --> 00:47.360
one of the big problems we can have with Ansible is actually ensuring that our

18
00:47.360 --> 00:48.240
variables have been

19
00:48.240 --> 00:49.520
correctly defined.

20
00:49.520 --> 00:54.240
Now, how do we actually know that Ansible is consuming the correct variables?

21
00:54.240 --> 00:58.880
Well, one of the ways we can do that is just simply to print out those variable

22
00:58.880 --> 00:59.440
values and

23
00:59.440 --> 01:02.640
see if they match what you expect them to actually be.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

23
00:59.440 --> 01:02.640
see if they match what you expect them to actually be.

24
01:02.640 --> 01:03.840
How are we going to print them out?

25
01:03.840 --> 01:06.320
Well, you guess that we're going to use that debug module.

26
01:06.320 --> 01:09.440
So let's just dive in and I'm going to my playbook right here.

27
01:09.440 --> 01:13.680
Let's just say Vim, Play 1 dot YML and to enter, going to insert mode,

28
01:13.680 --> 01:18.080
have our three hyphens at the top and we'll just say using the debug module to

29
01:18.080 --> 01:19.280
find issues.

30
01:19.280 --> 01:24.310
And let me just set my host to the value all and for now let's just set gather

31
01:24.310 --> 01:25.120
facts to the

32
01:25.120 --> 01:28.400
billion value false and now I'll define my tasks.

33
01:28.400 --> 01:32.720
So let's just maybe say I wanted to see what particular variables were being
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

33
01:28.400 --> 01:32.720
So let's just maybe say I wanted to see what particular variables were being

34
01:32.720 --> 01:33.680
consumed by

35
01:33.680 --> 01:35.200
what particular hosts.

36
01:35.200 --> 01:39.910
Now before we begin, as we know with Ansible, we have this concept of an

37
01:39.910 --> 01:40.960
inventory

38
01:40.960 --> 01:46.160
and with respect to our inventory, we can categorize different groups as well

39
01:46.160 --> 01:47.120
as different

40
01:47.120 --> 01:48.640
hosts within this inventory.

41
01:48.640 --> 01:53.270
Now the interesting thing is that depending on where you happen to define your

42
01:53.270 --> 01:54.160
variables,

43
01:54.160 --> 01:58.800
different hosts and different groups within that particular inventory can

44
01:58.800 --> 02:00.320
effectively inherit
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

44
01:58.800 --> 02:00.320
effectively inherit

45
02:00.320 --> 02:01.360
different values.

46
02:01.360 --> 02:05.360
Now if you happen to have a very simple inventory, like I have right here, if I

47
02:05.360 --> 02:06.320
go into my inventory

48
02:06.320 --> 02:10.650
for a moment, all I have are two devices in my group and each device belongs to

49
02:10.650 --> 02:11.040
its own

50
02:11.040 --> 02:12.160
geographical location.

51
02:12.160 --> 02:13.760
So this is very, very simple.

52
02:13.760 --> 02:19.190
But if you happen to have a massive inventory with many devices belonging to

53
02:19.190 --> 02:19.920
multiple different

54
02:19.920 --> 02:24.350
groups, it can be difficult to determine which particular values are going to

55
02:24.350 --> 02:25.120
be associated

56
02:25.120 --> 02:26.480
with which particular hosts.

57
02:26.480 --> 02:28.240
So let me give you a simple example here.

58
02:28.240 --> 02:33.040
If I go into my host first directory, I can see I have a host variable file for
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

58
02:28.240 --> 02:33.040
If I go into my host first directory, I can see I have a host variable file for

59
02:33.040 --> 02:33.360
each of

60
02:33.360 --> 02:36.160
my devices, my blue box as well as my yellow box.

61
02:36.160 --> 02:37.760
Let's go into the blue box right here.

62
02:37.760 --> 02:42.960
Let's give this particular device a DNS setting value of 8.8.8.8.

63
02:42.960 --> 02:45.120
That will be the IP address of the server here.

64
02:45.120 --> 02:49.440
Now in the case of the yellow box, this here is actually just empty.

65
02:49.440 --> 02:52.400
We have not defined any DNS configurations.

66
02:52.400 --> 02:56.960
So let's go back out and if I go back and I see the end to my group first and

67
02:56.960 --> 02:57.360
inside of

68
02:57.360 --> 03:02.120
my all.yaml file, I happen to specify the key DNS server at this particular
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

68
02:57.360 --> 03:02.120
my all.yaml file, I happen to specify the key DNS server at this particular

69
03:02.120 --> 03:02.720
level and

70
03:02.720 --> 03:05.520
I give it the value 192.168.1.1.

71
03:05.520 --> 03:08.400
So we have a potential clash here.

72
03:08.400 --> 03:09.760
Well, it's not really going to be a clash.

73
03:09.760 --> 03:12.320
It's going to be resolved as per the rows of Ansible.

74
03:12.320 --> 03:17.120
But as we can see, apparently in the all.yaml file, which should apply to all

75
03:17.120 --> 03:17.760
hosts and the

76
03:17.760 --> 03:21.840
inventory, the DNS server setting should be 192.168.1.1.

77
03:21.840 --> 03:28.000
Whereas if we look at the host first of the blue box, the DNS server is set to

78
03:28.000 --> 03:28.880
8.8.8.

79
03:28.880 --> 03:32.720
Now if you recall about inheritance, the more specific variables should win.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

79
03:28.880 --> 03:32.720
Now if you recall about inheritance, the more specific variables should win.

80
03:32.720 --> 03:37.110
So that means that the host variable value should override the group membership

81
03:37.110 --> 03:37.120
.

82
03:37.120 --> 03:40.160
But nevertheless, imagine like I say, it wasn't quite so simple.

83
03:40.160 --> 03:43.280
There were multiple groups at many different levels.

84
03:43.280 --> 03:45.040
Really, really nested that type of thing.

85
03:45.040 --> 03:50.820
We want a quick way to determine which devices in our inventory is going to get

86
03:50.820 --> 03:51.600
which particular

87
03:51.600 --> 03:55.120
value. So what we can just simply do is to use a debug module to print out that

88
03:55.120 --> 03:56.080
value straight away.

89
03:56.080 --> 04:00.360
If I go into my playbook here, we could just say printing the DNS value for the
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

89
03:56.080 --> 04:00.360
If I go into my playbook here, we could just say printing the DNS value for the

90
04:00.360 --> 04:00.720
host.

91
04:00.720 --> 04:04.710
And all I will do is use the Ansible built in a debug module and I'll specify

92
04:04.710 --> 04:05.520
the message.

93
04:05.520 --> 04:09.620
And I can just say the message, the DNS setting for host and the way I can

94
04:09.620 --> 04:10.720
determine the host

95
04:10.720 --> 04:14.320
is going to be the inventory host name, magic variable.

96
04:14.320 --> 04:18.320
And then I could just effectively call the actual variable that I want to read,

97
04:18.320 --> 04:20.720
which in this case here would be DNS underscore server.

98
04:20.720 --> 04:22.560
So check this out right here.

99
04:22.560 --> 04:26.240
If I just say Ansible play with play with one dot yml and to enter.

100
04:26.240 --> 04:29.670
As we can see here, when Ansible runs through its process of a variable

101
04:29.670 --> 04:30.640
resolution,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

101
04:29.670 --> 04:30.640
resolution,

102
04:30.640 --> 04:35.040
for the blue box, it's going to resolve to the value 8.8.8.8.

103
04:35.040 --> 04:40.000
Which is the host specific value, whereas the yellow box given the fact that it

104
04:40.000 --> 04:40.480
doesn't have

105
04:40.480 --> 04:44.640
a host value specified for that particular variable, it is just getting the

106
04:44.640 --> 04:45.360
inheritance

107
04:45.360 --> 04:50.350
via its group membership easily identified just by a simple use of the debug

108
04:50.350 --> 04:51.120
module.

109
04:51.120 --> 04:54.160
Similarly, what could also happen is if I go into my group verse again,

110
04:54.160 --> 04:57.880
going to all dot yml, let's just remove the DNS server for this particular

111
04:57.880 --> 04:58.400
group.

112
04:58.400 --> 05:02.720
Therefore, what is going to happen? Well, when we happen to run the playbook
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

112
04:58.400 --> 05:02.720
Therefore, what is going to happen? Well, when we happen to run the playbook

113
05:02.720 --> 05:03.360
right here,

114
05:03.360 --> 05:07.120
the DNS server is going to be set in the host variables for the blue box,

115
05:07.120 --> 05:11.360
but it's not going to exist for anywhere in the case of the yellow box.

116
05:11.360 --> 05:15.680
So when we go to print out this particular variable, we're going to see here,

117
05:15.680 --> 05:17.120
we have a failure.

118
05:17.120 --> 05:21.600
It says here in the message, this task includes an option with an undefined

119
05:21.600 --> 05:22.160
variable.

120
05:22.160 --> 05:24.960
So it tells us straight away here that for the actual yellow box,

121
05:24.960 --> 05:28.000
we can see here we have the DNS server being undefined.

122
05:28.000 --> 05:31.440
And just by simply reading this error message, we know straight away,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

122
05:28.000 --> 05:31.440
And just by simply reading this error message, we know straight away,

123
05:31.440 --> 05:35.840
hey, if you want to use this particular value for a configuration on the yellow

124
05:35.840 --> 05:36.400
box,

125
05:36.400 --> 05:40.800
then we have to go and define that value somewhere within the inventory

126
05:40.800 --> 05:41.360
relating to

127
05:41.360 --> 05:44.800
the yellow box's configuration. Now, just to be aware here,

128
05:44.800 --> 05:49.130
if we happen to suspect that we may have many, many devices and you want to

129
05:49.130 --> 05:50.080
have a default

130
05:50.080 --> 05:54.560
value, let's say in the event that the DNS server variable is not defined,

131
05:54.560 --> 05:57.440
we can actually resolve this directly in the playbook itself.

132
05:57.440 --> 06:01.200
So obviously I could go and define the host variable files or the group var
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

132
05:57.440 --> 06:01.200
So obviously I could go and define the host variable files or the group var

133
06:01.200 --> 06:01.760
files.

134
06:01.760 --> 06:04.320
But in this case here, check this out if I just happened to say,

135
06:04.320 --> 06:07.360
inside my double color braces, if I use the pipe symbol,

136
06:07.360 --> 06:09.760
what I can do is use the default keywords.

137
06:09.760 --> 06:14.070
And then within parentheses, I'll have my single quotation marks and I can give

138
06:14.070 --> 06:15.040
a default value.

139
06:15.040 --> 06:18.560
So let's just go with the value 1.1 and again, apologies for the ugly or lane

140
06:18.560 --> 06:19.440
wrapping right here.

141
06:19.440 --> 06:23.470
But check this out if I happen to just save this right now, if I read on the

142
06:23.470 --> 06:23.840
playbook,

143
06:23.840 --> 06:29.200
now we can see here in the event of any devices that do not have a particular

144
06:29.200 --> 06:30.320
value specified as
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

144
06:29.200 --> 06:30.320
value specified as

145
06:30.320 --> 06:34.270
we saw via the debug module right above here, we can configure a default

146
06:34.270 --> 06:35.520
variable value to be

147
06:35.520 --> 06:40.210
populated when the playbook is executed. Now another very important concept

148
06:40.210 --> 06:41.280
that we can utilize

149
06:41.280 --> 06:46.470
with respect to Ansible is we can also specify the verbosity of the output of

150
06:46.470 --> 06:47.600
the playbook itself.

151
06:47.600 --> 06:51.200
So realistically, when we go to run our playbook as we see right here,

152
06:51.200 --> 06:54.240
we just get to see the basic information about the playbook's execution.

153
06:54.240 --> 06:57.680
We get to see the play recap, we see if there's any changes, any failures,

154
06:57.680 --> 06:58.480
anything unreachable,

155
06:58.480 --> 07:01.840
that type of thing, along with any potential values we may have printed.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

155
06:58.480 --> 07:01.840
that type of thing, along with any potential values we may have printed.

156
07:01.840 --> 07:05.680
If I happen to run the playbook with a dash V, check this out right here.

157
07:05.680 --> 07:08.560
We're actually getting more information about the execution.

158
07:08.560 --> 07:13.110
We can see here in my case, this is the Ansible config file that's going to be

159
07:13.110 --> 07:13.760
used,

160
07:13.760 --> 07:16.720
which is this one right here inside my working directory.

161
07:16.720 --> 07:19.520
Now if I just happened to maybe rename this particular file,

162
07:19.520 --> 07:23.680
or just call this Ansible.Backup, if I just ran the playbook right here,

163
07:23.680 --> 07:26.720
it just says here we don't have any host been matched.

164
07:26.720 --> 07:31.600
However, just by specifying the dash V value here, we can see here, aha,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

164
07:26.720 --> 07:31.600
However, just by specifying the dash V value here, we can see here, aha,

165
07:31.600 --> 07:34.880
a different Ansible configuration file has now been used.

166
07:34.880 --> 07:39.670
It's been using the Etsy Ansible Ansible.CF to use the config files so we can

167
07:39.670 --> 07:40.320
go in here.

168
07:40.320 --> 07:44.480
And as we can see here, this file has not actually been populated with any

169
07:44.480 --> 07:45.040
values.

170
07:45.040 --> 07:47.680
So we can go back, watch the scape here.

171
07:47.680 --> 07:51.120
If I do an LS, we can see the actual file, which should be my Ansible

172
07:51.120 --> 07:52.400
configuration file,

173
07:52.400 --> 07:54.240
isn't actually using the correct convention.

174
07:54.240 --> 07:56.800
It should be called Ansible.CFG.

175
07:56.800 --> 07:59.600
So in the case of the playbook, we can see we're not using the correct file.

176
07:59.600 --> 08:04.120
So all I will do is simply change the name of this particular file to be Ans
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

176
07:59.600 --> 08:04.120
So all I will do is simply change the name of this particular file to be Ans

177
08:04.120 --> 08:05.120
ible.CFG.

178
08:05.120 --> 08:08.800
Now Ansible should identify this as the valid configuration file.

179
08:08.800 --> 08:12.720
And when I run the playbook with dash V, we can now see we're using the correct

180
08:12.720 --> 08:13.360
configuration

181
08:13.360 --> 08:16.080
file and we're getting the response as expected.

182
08:16.080 --> 08:19.840
Now what we can actually do here is effectively toggle the verbosity by

183
08:19.840 --> 08:21.040
specifying more v's.

184
08:21.040 --> 08:26.480
If I do dash vv, hit enter, if I scroll on it, notice we're getting even more

185
08:26.480 --> 08:27.840
information about

186
08:27.840 --> 08:28.960
the execution itself.

187
08:28.960 --> 08:31.600
We get to see where the Python module collection is.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

187
08:28.960 --> 08:31.600
We get to see where the Python module collection is.

188
08:31.600 --> 08:35.070
We see things relating to the ginger templating line that we happen to be using

189
08:35.070 --> 08:35.280
.

190
08:35.280 --> 08:38.950
We see the execution location for where the Ansible playbook binary is actually

191
08:38.950 --> 08:39.680
being called.

192
08:39.680 --> 08:43.500
And again, if we just crank up the verbosity once more, as we can see here, we

193
08:43.500 --> 08:43.920
're getting

194
08:43.920 --> 08:45.760
even more information again.

195
08:45.760 --> 08:49.960
Now what we can actually do here is within our playbooks, we can correlate the

196
08:49.960 --> 08:50.560
printing of

197
08:50.560 --> 08:54.720
particular variables if we so wish with a specified verbosity level.

198
08:54.720 --> 08:55.680
Let me show you what I mean.

199
08:55.680 --> 08:56.560
So let's go back.

200
08:56.560 --> 09:00.240
So let's tell you all this and let's maybe say I define some variable values.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

200
08:56.560 --> 09:00.240
So let's tell you all this and let's maybe say I define some variable values.

201
09:00.240 --> 09:01.760
Let's just call this test var.

202
09:01.760 --> 09:02.240
Okay.

203
09:02.240 --> 09:04.320
And let's just make the variable value pizza.

204
09:04.320 --> 09:07.250
So if I create a task and let's just call the name test task, it doesn't

205
09:07.250 --> 09:08.240
actually matter so much,

206
09:08.240 --> 09:11.120
I will use the Ansible built-in debug module once again.

207
09:11.120 --> 09:14.480
And the variable I want to print out is going to be my test for.

208
09:14.480 --> 09:18.480
Now, like I say, if I happen to just run this right here and I hit enter,

209
09:18.480 --> 09:21.200
notice the value of the variable happened to be printed out.

210
09:21.200 --> 09:25.130
But what we can do here is we can go back in and let's say we just wanted to

211
09:25.130 --> 09:25.600
only print

212
09:25.600 --> 09:30.660
out this particular value when we wanted to use more verbosity on our playbooks
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

212
09:25.600 --> 09:30.660
out this particular value when we wanted to use more verbosity on our playbooks

213
09:30.660 --> 09:30.960
.

214
09:30.960 --> 09:35.040
What I could do is I could assign the printing of this variable only when the

215
09:35.040 --> 09:36.000
verbosity hits a

216
09:36.000 --> 09:36.800
certain level.

217
09:36.800 --> 09:39.520
So let's say the verbosity is at one.

218
09:39.520 --> 09:40.000
Okay.

219
09:40.000 --> 09:45.520
So if I use dash v, which is one v or greater, this variable will be printed

220
09:45.520 --> 09:46.560
otherwise it won't be

221
09:46.560 --> 09:47.360
to check this out.

222
09:47.360 --> 09:50.400
So let's run a playbook without any verbosity, hit enter.

223
09:50.400 --> 09:52.160
Nothing actually happens.

224
09:52.160 --> 09:54.160
The task happens to be skipped.

225
09:54.160 --> 09:59.520
However, if I say dash v and I enter, now the task is going to execute and we

226
09:59.520 --> 10:00.080
do print it.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

226
09:59.520 --> 10:00.080
do print it.

227
10:00.080 --> 10:03.520
And again, if we go even more verbose, then it also still will be printed.

228
10:03.520 --> 10:06.880
Once again, we actually print out the test var.

229
10:06.880 --> 10:09.760
Now, we don't actually have to just assign this with a particular variable.

230
10:09.760 --> 10:10.640
Let's go back in.

231
10:10.640 --> 10:12.720
It could be really similar to what we saw before.

232
10:12.720 --> 10:17.200
I could just have a task pretty much saying print the DNS vars for the host.

233
10:17.200 --> 10:20.480
Let's use the Ansible Belt and Debug module with the message.

234
10:20.480 --> 10:25.360
Just say the DNS setting for this host is DNS_server.

235
10:25.360 --> 10:28.080
And let me just change this to the blue box since the blue box is the only one

236
10:28.080 --> 10:28.320
with a

237
10:28.320 --> 10:29.600
DNS setting right now.

238
10:29.600 --> 10:32.960
And again, of course, you could be defining a whole bunch of other tasks.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

238
10:29.600 --> 10:32.960
And again, of course, you could be defining a whole bunch of other tasks.

239
10:32.960 --> 10:36.320
Let's imagine you wanted to use the Ansible Belt and Copy module.

240
10:36.320 --> 10:39.840
I could just say copy some info and I'll specify that the content is going to

241
10:39.840 --> 10:40.240
be

242
10:40.240 --> 10:44.400
the DNS setting is and I'll pass in the DNS server value.

243
10:44.400 --> 10:48.180
And I specify that the destination is going to be any file and attempt

244
10:48.180 --> 10:48.720
directory,

245
10:48.720 --> 10:50.960
just called test.txt.

246
10:50.960 --> 10:54.160
Now, like I say, this part here is really just a test.

247
10:54.160 --> 10:57.120
It doesn't do anything but give us information.

248
10:57.120 --> 11:02.080
And it only really would be valuable if the actual task here wasn't performed
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

248
10:57.120 --> 11:02.080
And it only really would be valuable if the actual task here wasn't performed

249
11:02.080 --> 11:02.960
as expected.

250
11:02.960 --> 11:07.040
Now, if it is performed as expected, we don't necessarily want to see this

251
11:07.040 --> 11:07.520
information.

252
11:07.520 --> 11:11.040
So what we can do is, like I say, we can specify that this particular message

253
11:11.040 --> 11:11.680
is only going to

254
11:11.680 --> 11:15.950
be printed when we require a verbosity level of what's maybe say to in this

255
11:15.950 --> 11:16.480
case.

256
11:16.480 --> 11:18.800
In fact, let's just call this task debug_print.

257
11:18.800 --> 11:19.360
Okay.

258
11:19.360 --> 11:20.160
So check this out.

259
11:20.160 --> 11:23.520
If I just run the playbook as it is right now and hit enter, we're going to

260
11:23.520 --> 11:24.560
actually skip

261
11:24.560 --> 11:28.560
the printing of this variable because I didn't actually specify the verbosity.

262
11:28.560 --> 11:31.920
Now, for whatever reason, if I was making configurations across many different
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

262
11:28.560 --> 11:31.920
Now, for whatever reason, if I was making configurations across many different

263
11:31.920 --> 11:32.480
devices

264
11:32.480 --> 11:36.870
and some of the configurations in those files were not the value that you

265
11:36.870 --> 11:37.680
expected,

266
11:37.680 --> 11:39.840
then you could invoke the require verbosity.

267
11:39.840 --> 11:44.240
Like I say, if we just do -v one time, it's still not going to show.

268
11:44.240 --> 11:46.000
You see that the task has still been skipped.

269
11:46.000 --> 11:48.240
The verbosity threshold was not met.

270
11:48.240 --> 11:51.680
But if we run it again with double verbosity and hit enter,

271
11:51.680 --> 11:54.960
now we're going to be actually printing out the debug message.

272
11:54.960 --> 11:58.960
So quite honestly, the debug module is a very, very important utility

273
11:58.960 --> 12:03.360
when ensuring that your playbooks are executing correctly and particularly
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

273
11:58.960 --> 12:03.360
when ensuring that your playbooks are executing correctly and particularly

274
12:03.360 --> 12:07.120
when dealing with variable values in any complex environments.
