1.. _cisco.nxos.nxos_telemetry_module:
2
3
4*************************
5cisco.nxos.nxos_telemetry
6*************************
7
8**TELEMETRY resource module**
9
10
11Version added: 1.0.0
12
13.. contents::
14   :local:
15   :depth: 1
16
17
18Synopsis
19--------
20- Manages Telemetry Monitoring Service (TMS) configuration
21
22
23
24
25Parameters
26----------
27
28.. raw:: html
29
30    <table  border=0 cellpadding=0 class="documentation-table">
31        <tr>
32            <th colspan="4">Parameter</th>
33            <th>Choices/<font color="blue">Defaults</font></th>
34            <th width="100%">Comments</th>
35        </tr>
36            <tr>
37                <td colspan="4">
38                    <div class="ansibleOptionAnchor" id="parameter-"></div>
39                    <b>config</b>
40                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
41                    <div style="font-size: small">
42                        <span style="color: purple">dictionary</span>
43                    </div>
44                </td>
45                <td>
46                </td>
47                <td>
48                        <div>The provided configuration</div>
49                </td>
50            </tr>
51                                <tr>
52                    <td class="elbow-placeholder"></td>
53                <td colspan="3">
54                    <div class="ansibleOptionAnchor" id="parameter-"></div>
55                    <b>certificate</b>
56                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
57                    <div style="font-size: small">
58                        <span style="color: purple">dictionary</span>
59                    </div>
60                </td>
61                <td>
62                </td>
63                <td>
64                        <div>Certificate SSL/TLS and hostname values.</div>
65                        <div>Value must be a dict defining values for keys (key and hostname).</div>
66                </td>
67            </tr>
68                                <tr>
69                    <td class="elbow-placeholder"></td>
70                    <td class="elbow-placeholder"></td>
71                <td colspan="2">
72                    <div class="ansibleOptionAnchor" id="parameter-"></div>
73                    <b>hostname</b>
74                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
75                    <div style="font-size: small">
76                        <span style="color: purple">string</span>
77                    </div>
78                </td>
79                <td>
80                </td>
81                <td>
82                        <div>Certificate hostname</div>
83                </td>
84            </tr>
85            <tr>
86                    <td class="elbow-placeholder"></td>
87                    <td class="elbow-placeholder"></td>
88                <td colspan="2">
89                    <div class="ansibleOptionAnchor" id="parameter-"></div>
90                    <b>key</b>
91                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
92                    <div style="font-size: small">
93                        <span style="color: purple">string</span>
94                    </div>
95                </td>
96                <td>
97                </td>
98                <td>
99                        <div>Certificate key</div>
100                </td>
101            </tr>
102
103            <tr>
104                    <td class="elbow-placeholder"></td>
105                <td colspan="3">
106                    <div class="ansibleOptionAnchor" id="parameter-"></div>
107                    <b>compression</b>
108                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
109                    <div style="font-size: small">
110                        <span style="color: purple">string</span>
111                    </div>
112                </td>
113                <td>
114                        <ul style="margin: 0; padding: 0"><b>Choices:</b>
115                                    <li>gzip</li>
116                        </ul>
117                </td>
118                <td>
119                        <div>Destination profile compression method.</div>
120                </td>
121            </tr>
122            <tr>
123                    <td class="elbow-placeholder"></td>
124                <td colspan="3">
125                    <div class="ansibleOptionAnchor" id="parameter-"></div>
126                    <b>destination_groups</b>
127                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
128                    <div style="font-size: small">
129                        <span style="color: purple">list</span>
130                         / <span style="color: purple">elements=raw</span>
131                    </div>
132                </td>
133                <td>
134                </td>
135                <td>
136                        <div>List of telemetry destination groups.</div>
137                </td>
138            </tr>
139                                <tr>
140                    <td class="elbow-placeholder"></td>
141                    <td class="elbow-placeholder"></td>
142                <td colspan="2">
143                    <div class="ansibleOptionAnchor" id="parameter-"></div>
144                    <b>destination</b>
145                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
146                    <div style="font-size: small">
147                        <span style="color: purple">dictionary</span>
148                    </div>
149                </td>
150                <td>
151                </td>
152                <td>
153                        <div>Group destination ipv4, port, protocol and encoding values.</div>
154                        <div>Value must be a dict defining values for keys (ip, port, protocol, encoding).</div>
155                </td>
156            </tr>
157                                <tr>
158                    <td class="elbow-placeholder"></td>
159                    <td class="elbow-placeholder"></td>
160                    <td class="elbow-placeholder"></td>
161                <td colspan="1">
162                    <div class="ansibleOptionAnchor" id="parameter-"></div>
163                    <b>encoding</b>
164                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
165                    <div style="font-size: small">
166                        <span style="color: purple">string</span>
167                    </div>
168                </td>
169                <td>
170                        <ul style="margin: 0; padding: 0"><b>Choices:</b>
171                                    <li>GPB</li>
172                                    <li>JSON</li>
173                        </ul>
174                </td>
175                <td>
176                        <div>Destination group encoding.</div>
177                </td>
178            </tr>
179            <tr>
180                    <td class="elbow-placeholder"></td>
181                    <td class="elbow-placeholder"></td>
182                    <td class="elbow-placeholder"></td>
183                <td colspan="1">
184                    <div class="ansibleOptionAnchor" id="parameter-"></div>
185                    <b>ip</b>
186                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
187                    <div style="font-size: small">
188                        <span style="color: purple">string</span>
189                    </div>
190                </td>
191                <td>
192                </td>
193                <td>
194                        <div>Destination group IP address.</div>
195                </td>
196            </tr>
197            <tr>
198                    <td class="elbow-placeholder"></td>
199                    <td class="elbow-placeholder"></td>
200                    <td class="elbow-placeholder"></td>
201                <td colspan="1">
202                    <div class="ansibleOptionAnchor" id="parameter-"></div>
203                    <b>port</b>
204                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
205                    <div style="font-size: small">
206                        <span style="color: purple">integer</span>
207                    </div>
208                </td>
209                <td>
210                </td>
211                <td>
212                        <div>Destination group port number.</div>
213                </td>
214            </tr>
215            <tr>
216                    <td class="elbow-placeholder"></td>
217                    <td class="elbow-placeholder"></td>
218                    <td class="elbow-placeholder"></td>
219                <td colspan="1">
220                    <div class="ansibleOptionAnchor" id="parameter-"></div>
221                    <b>protocol</b>
222                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
223                    <div style="font-size: small">
224                        <span style="color: purple">string</span>
225                    </div>
226                </td>
227                <td>
228                        <ul style="margin: 0; padding: 0"><b>Choices:</b>
229                                    <li>HTTP</li>
230                                    <li>TCP</li>
231                                    <li>UDP</li>
232                                    <li>gRPC</li>
233                        </ul>
234                </td>
235                <td>
236                        <div>Destination group protocol.</div>
237                </td>
238            </tr>
239
240            <tr>
241                    <td class="elbow-placeholder"></td>
242                    <td class="elbow-placeholder"></td>
243                <td colspan="2">
244                    <div class="ansibleOptionAnchor" id="parameter-"></div>
245                    <b>id</b>
246                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
247                    <div style="font-size: small">
248                        <span style="color: purple">integer</span>
249                    </div>
250                </td>
251                <td>
252                </td>
253                <td>
254                        <div>Destination group identifier.</div>
255                        <div>Value must be a int representing the destination group identifier.</div>
256                </td>
257            </tr>
258
259            <tr>
260                    <td class="elbow-placeholder"></td>
261                <td colspan="3">
262                    <div class="ansibleOptionAnchor" id="parameter-"></div>
263                    <b>sensor_groups</b>
264                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
265                    <div style="font-size: small">
266                        <span style="color: purple">list</span>
267                         / <span style="color: purple">elements=raw</span>
268                    </div>
269                </td>
270                <td>
271                </td>
272                <td>
273                        <div>List of telemetry sensor groups.</div>
274                </td>
275            </tr>
276                                <tr>
277                    <td class="elbow-placeholder"></td>
278                    <td class="elbow-placeholder"></td>
279                <td colspan="2">
280                    <div class="ansibleOptionAnchor" id="parameter-"></div>
281                    <b>data_source</b>
282                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
283                    <div style="font-size: small">
284                        <span style="color: purple">string</span>
285                    </div>
286                </td>
287                <td>
288                        <ul style="margin: 0; padding: 0"><b>Choices:</b>
289                                    <li>NX-API</li>
290                                    <li>DME</li>
291                                    <li>YANG</li>
292                        </ul>
293                </td>
294                <td>
295                        <div>Telemetry data source.</div>
296                </td>
297            </tr>
298            <tr>
299                    <td class="elbow-placeholder"></td>
300                    <td class="elbow-placeholder"></td>
301                <td colspan="2">
302                    <div class="ansibleOptionAnchor" id="parameter-"></div>
303                    <b>id</b>
304                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
305                    <div style="font-size: small">
306                        <span style="color: purple">integer</span>
307                    </div>
308                </td>
309                <td>
310                </td>
311                <td>
312                        <div>Sensor group identifier.</div>
313                        <div>Value must be a int representing the sensor group identifier.</div>
314                </td>
315            </tr>
316            <tr>
317                    <td class="elbow-placeholder"></td>
318                    <td class="elbow-placeholder"></td>
319                <td colspan="2">
320                    <div class="ansibleOptionAnchor" id="parameter-"></div>
321                    <b>path</b>
322                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
323                    <div style="font-size: small">
324                        <span style="color: purple">dictionary</span>
325                    </div>
326                </td>
327                <td>
328                </td>
329                <td>
330                        <div>Telemetry sensor path.</div>
331                        <div>Value must be a dict defining values for keys (name, depth, filter_condition, query_condition).</div>
332                        <div>Mandatory Keys (name)</div>
333                        <div>Optional Keys  (depth, filter_condition, query_condition)</div>
334                </td>
335            </tr>
336                                <tr>
337                    <td class="elbow-placeholder"></td>
338                    <td class="elbow-placeholder"></td>
339                    <td class="elbow-placeholder"></td>
340                <td colspan="1">
341                    <div class="ansibleOptionAnchor" id="parameter-"></div>
342                    <b>depth</b>
343                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
344                    <div style="font-size: small">
345                        <span style="color: purple">string</span>
346                    </div>
347                </td>
348                <td>
349                </td>
350                <td>
351                        <div>Sensor group depth.</div>
352                </td>
353            </tr>
354            <tr>
355                    <td class="elbow-placeholder"></td>
356                    <td class="elbow-placeholder"></td>
357                    <td class="elbow-placeholder"></td>
358                <td colspan="1">
359                    <div class="ansibleOptionAnchor" id="parameter-"></div>
360                    <b>filter_condition</b>
361                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
362                    <div style="font-size: small">
363                        <span style="color: purple">string</span>
364                    </div>
365                </td>
366                <td>
367                </td>
368                <td>
369                        <div>Sensor group filter condition.</div>
370                </td>
371            </tr>
372            <tr>
373                    <td class="elbow-placeholder"></td>
374                    <td class="elbow-placeholder"></td>
375                    <td class="elbow-placeholder"></td>
376                <td colspan="1">
377                    <div class="ansibleOptionAnchor" id="parameter-"></div>
378                    <b>name</b>
379                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
380                    <div style="font-size: small">
381                        <span style="color: purple">string</span>
382                    </div>
383                </td>
384                <td>
385                </td>
386                <td>
387                        <div>Sensor group path name.</div>
388                </td>
389            </tr>
390            <tr>
391                    <td class="elbow-placeholder"></td>
392                    <td class="elbow-placeholder"></td>
393                    <td class="elbow-placeholder"></td>
394                <td colspan="1">
395                    <div class="ansibleOptionAnchor" id="parameter-"></div>
396                    <b>query_condition</b>
397                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
398                    <div style="font-size: small">
399                        <span style="color: purple">string</span>
400                    </div>
401                </td>
402                <td>
403                </td>
404                <td>
405                        <div>Sensor group query condition.</div>
406                </td>
407            </tr>
408
409
410            <tr>
411                    <td class="elbow-placeholder"></td>
412                <td colspan="3">
413                    <div class="ansibleOptionAnchor" id="parameter-"></div>
414                    <b>source_interface</b>
415                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
416                    <div style="font-size: small">
417                        <span style="color: purple">string</span>
418                    </div>
419                </td>
420                <td>
421                </td>
422                <td>
423                        <div>Destination profile source interface.</div>
424                        <div>Valid value is a str representing the source interface name.</div>
425                </td>
426            </tr>
427            <tr>
428                    <td class="elbow-placeholder"></td>
429                <td colspan="3">
430                    <div class="ansibleOptionAnchor" id="parameter-"></div>
431                    <b>subscriptions</b>
432                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
433                    <div style="font-size: small">
434                        <span style="color: purple">list</span>
435                         / <span style="color: purple">elements=raw</span>
436                    </div>
437                </td>
438                <td>
439                </td>
440                <td>
441                        <div>List of telemetry subscriptions.</div>
442                </td>
443            </tr>
444                                <tr>
445                    <td class="elbow-placeholder"></td>
446                    <td class="elbow-placeholder"></td>
447                <td colspan="2">
448                    <div class="ansibleOptionAnchor" id="parameter-"></div>
449                    <b>destination_group</b>
450                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
451                    <div style="font-size: small">
452                        <span style="color: purple">integer</span>
453                    </div>
454                </td>
455                <td>
456                </td>
457                <td>
458                        <div>Associated destination group.</div>
459                </td>
460            </tr>
461            <tr>
462                    <td class="elbow-placeholder"></td>
463                    <td class="elbow-placeholder"></td>
464                <td colspan="2">
465                    <div class="ansibleOptionAnchor" id="parameter-"></div>
466                    <b>id</b>
467                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
468                    <div style="font-size: small">
469                        <span style="color: purple">integer</span>
470                    </div>
471                </td>
472                <td>
473                </td>
474                <td>
475                        <div>Subscription identifier.</div>
476                        <div>Value must be a int representing the subscription identifier.</div>
477                </td>
478            </tr>
479            <tr>
480                    <td class="elbow-placeholder"></td>
481                    <td class="elbow-placeholder"></td>
482                <td colspan="2">
483                    <div class="ansibleOptionAnchor" id="parameter-"></div>
484                    <b>sensor_group</b>
485                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
486                    <div style="font-size: small">
487                        <span style="color: purple">dictionary</span>
488                    </div>
489                </td>
490                <td>
491                </td>
492                <td>
493                        <div>Associated sensor group.</div>
494                        <div>Value must be a dict defining values for keys (id, sample_interval).</div>
495                </td>
496            </tr>
497                                <tr>
498                    <td class="elbow-placeholder"></td>
499                    <td class="elbow-placeholder"></td>
500                    <td class="elbow-placeholder"></td>
501                <td colspan="1">
502                    <div class="ansibleOptionAnchor" id="parameter-"></div>
503                    <b>id</b>
504                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
505                    <div style="font-size: small">
506                        <span style="color: purple">integer</span>
507                    </div>
508                </td>
509                <td>
510                </td>
511                <td>
512                        <div>Associated sensor group id.</div>
513                </td>
514            </tr>
515            <tr>
516                    <td class="elbow-placeholder"></td>
517                    <td class="elbow-placeholder"></td>
518                    <td class="elbow-placeholder"></td>
519                <td colspan="1">
520                    <div class="ansibleOptionAnchor" id="parameter-"></div>
521                    <b>sample_interval</b>
522                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
523                    <div style="font-size: small">
524                        <span style="color: purple">integer</span>
525                    </div>
526                </td>
527                <td>
528                </td>
529                <td>
530                        <div>Associated sensor group id sample interval.</div>
531                </td>
532            </tr>
533
534
535            <tr>
536                    <td class="elbow-placeholder"></td>
537                <td colspan="3">
538                    <div class="ansibleOptionAnchor" id="parameter-"></div>
539                    <b>vrf</b>
540                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
541                    <div style="font-size: small">
542                        <span style="color: purple">string</span>
543                    </div>
544                </td>
545                <td>
546                </td>
547                <td>
548                        <div>Destination profile vrf.</div>
549                        <div>Valid value is a str representing the vrf name.</div>
550                </td>
551            </tr>
552
553            <tr>
554                <td colspan="4">
555                    <div class="ansibleOptionAnchor" id="parameter-"></div>
556                    <b>state</b>
557                    <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
558                    <div style="font-size: small">
559                        <span style="color: purple">string</span>
560                    </div>
561                </td>
562                <td>
563                        <ul style="margin: 0; padding: 0"><b>Choices:</b>
564                                    <li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
565                                    <li>replaced</li>
566                                    <li>deleted</li>
567                                    <li>gathered</li>
568                        </ul>
569                </td>
570                <td>
571                        <div>Final configuration state</div>
572                </td>
573            </tr>
574    </table>
575    <br/>
576
577
578Notes
579-----
580
581.. note::
582   - Supported on N9k Version 7.0(3)I7(5) and later.
583   - Unsupported for Cisco MDS
584
585
586
587Examples
588--------
589
590.. code-block:: yaml
591
592    # Using deleted
593    # This action will delete all telemetry configuration on the device
594
595    - name: Delete Telemetry Configuration
596      cisco.nxos.nxos_telemetry:
597        state: deleted
598
599
600    # Using merged
601    # This action will merge telemetry configuration defined in the playbook with
602    # telemetry configuration that is already on the device.
603
604    - name: Merge Telemetry Configuration
605      cisco.nxos.nxos_telemetry:
606        config:
607          certificate:
608            key: /bootflash/server.key
609            hostname: localhost
610          compression: gzip
611          source_interface: Ethernet1/1
612          vrf: management
613          destination_groups:
614          - id: 2
615            destination:
616              ip: 192.168.0.2
617              port: 50001
618              protocol: gPRC
619              encoding: GPB
620          - id: 55
621            destination:
622              ip: 192.168.0.55
623              port: 60001
624              protocol: gPRC
625              encoding: GPB
626          sensor_groups:
627          - id: 1
628            data_source: NX-API
629            path:
630              name: '"show lldp neighbors detail"'
631              depth: 0
632          - id: 55
633            data_source: DME
634            path:
635              name: sys/ch
636              depth: unbounded
637              filter_condition: ne(eqptFt.operSt,"ok")
638          subscriptions:
639          - id: 5
640            destination_group: 55
641            sensor_group:
642              id: 1
643              sample_interval: 1000
644          - id: 6
645            destination_group: 2
646            sensor_group:
647              id: 55
648              sample_interval: 2000
649        state: merged
650
651
652    # Using replaced
653    # This action will replace telemetry configuration on the device with the
654    # telemetry configuration defined in the playbook.
655
656    - name: Override Telemetry Configuration
657      cisco.nxos.nxos_telemetry:
658        config:
659          certificate:
660            key: /bootflash/server.key
661            hostname: localhost
662          compression: gzip
663          source_interface: Ethernet1/1
664          vrf: management
665          destination_groups:
666          - id: 2
667            destination:
668              ip: 192.168.0.2
669              port: 50001
670              protocol: gPRC
671              encoding: GPB
672          subscriptions:
673          - id: 5
674            destination_group: 55
675        state: replaced
676
677
678
679Return Values
680-------------
681Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module:
682
683.. raw:: html
684
685    <table border=0 cellpadding=0 class="documentation-table">
686        <tr>
687            <th colspan="1">Key</th>
688            <th>Returned</th>
689            <th width="100%">Description</th>
690        </tr>
691            <tr>
692                <td colspan="1">
693                    <div class="ansibleOptionAnchor" id="return-"></div>
694                    <b>after</b>
695                    <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
696                    <div style="font-size: small">
697                      <span style="color: purple">dictionary</span>
698                    </div>
699                </td>
700                <td>when changed</td>
701                <td>
702                            <div>The configuration as structured data after module completion.</div>
703                    <br/>
704                        <div style="font-size: smaller"><b>Sample:</b></div>
705                        <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format
706     of the parameters above.</div>
707                </td>
708            </tr>
709            <tr>
710                <td colspan="1">
711                    <div class="ansibleOptionAnchor" id="return-"></div>
712                    <b>before</b>
713                    <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
714                    <div style="font-size: small">
715                      <span style="color: purple">dictionary</span>
716                    </div>
717                </td>
718                <td>always</td>
719                <td>
720                            <div>The configuration as structured data prior to module invocation.</div>
721                    <br/>
722                        <div style="font-size: smaller"><b>Sample:</b></div>
723                        <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format
724     of the parameters above.</div>
725                </td>
726            </tr>
727            <tr>
728                <td colspan="1">
729                    <div class="ansibleOptionAnchor" id="return-"></div>
730                    <b>commands</b>
731                    <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
732                    <div style="font-size: small">
733                      <span style="color: purple">list</span>
734                    </div>
735                </td>
736                <td>always</td>
737                <td>
738                            <div>The set of commands pushed to the remote device.</div>
739                    <br/>
740                        <div style="font-size: smaller"><b>Sample:</b></div>
741                        <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;command 1&#x27;, &#x27;command 2&#x27;, &#x27;command 3&#x27;]</div>
742                </td>
743            </tr>
744    </table>
745    <br/><br/>
746
747
748Status
749------
750
751
752Authors
753~~~~~~~
754
755- Mike Wiebe (@mikewiebe)
756