GLPI
This playbook is designed to run Automations against GLPI. The intented usage is for a workflow wherein you create a ticket (optionally with template), create a ticket task with the notes/details of the automation and then close the ticket after recording time and marking the ticket task as closed.
If this playbook is used with AWX / Ansible Automation Platform, artifacts are set with ticket and task creation used at the start of the workflow and the closing of the ticket at the end. As artifacts are set the workflow will pass these to each node of the flow.
Playbook AWX / Ansible Automation Platform Template Import
This playbook includes the AWX feature where it imports the playbook as job templates in to AWX / Ansible Automation Platform. The following job templates that will be created:
-
ITIL/GLPI/Plugin/FormCreator/Delete/Form_Answer Delete the specified form answer from the GLPI Plugin formcreator.
-
ITIL/GLPI/Plugin/FormCreator/to_JSON_Object Fetch a Form Creator Plugin formcreator.
-
ITIL/GLPI/Ticket/Assign/Error Assigns the ticket to the specified user on error.
-
ITIL/GLPI/Ticket/Close Close a ticket in GLPI
-
ITIL/GLPI/Ticket/Create Create a ticket in GLPI
-
ITIL/GLPI/Ticket/Task/Create Create a ticket task
-
ITIL/GLPI/Ticket/Template/From_ITIL_Category Provide an ITIL Category and this play will fetch and generate the ticket template.
On import to AWX / Ansible Automation Platform a credential type will also be created, playbook/glpi/api
that can be used to supply the required secrets and glpi FQDN.
Plugin - FormCreator Form to JSON Object
- Job tag is
plugin_form_fetch_json
This task fetches a single form only that has the lowest ID. The intent is that after you have processed the form it is deleted.
This play utilizes the following variables.
nfc_pb_glpi_form_to_ticket: false # Optional, boolean. Used to Create the variables required to create a ticket
# with the form added to a ticket task in JSON format
nfc_pb_glpi_ticket_task_category: 0 # Mandatory*, integer. Only Mandatory if `nfc_pb_glpi_form_to_ticket=false. otherwise Optional`
# This value is the ITIL Task Category from GLPI.
nfc_pb_glpi_no_log_sensitive_data: true # Optional, boolean. used to turn `no_log` on/off for logging sensitive data
# NOTE: Sensitive data will be logged. i.e. user and app token.
Within the playbook, this task runs first. This is by design so that a ticket forms can be gathered and in the same play have the ticket created with the form data saved within a ticket task.
Tip
If you wish to create the ticket and fetch the form ensure job tags plugin_form_fetch_json
ticket_template_from_itil_category
ticket_create
ticket_task_create
plugin_form_delete_answer
are set and no other variables outside of this task.
Specifying the variables for the below tasks for creating a ticket and ticket task, the details from the form will not be used.
Prior to the play completing the following artifact/stats are set:
{
"nfc_pb_glpi": {
"ticket":{
"approval": {}, // dict. generated if the form has approval configured.
}
},
// The variables below this line are only created if variable 'nfc_pb_glpi_form_to_ticket=true'
"nfc_pb_glpi_itil_category": 0,
"nfc_pb_glpi_ticket_create": {},
"nfc_pb_glpi_ticket_task_create": {},
"nfc_pb_glpi_ticket_type": "request"
}
Ticket Template From ITIL Category
- Job tag is
ticket_template_from_itil_category
This play utilizes the following variables.
nfc_pb_glpi_host: glpi.hostname.tld # Mandatory, string. FQDN that forms part of the url. Don't specify http|https.
nfc_pb_glpi_app_token: '' # Mandatory, string. application token as generated from GLPI.
nfc_pb_glpi_user_token: '' # Mandatory, string. user token as generated from GLPI.
nfc_pb_glpi_itil_category: 4 # Mandatory, integer. The ITIL Category to use from GLPI.
nfc_pb_glpi_ticket_type: request # Mandatory, string. Choice incident|request
nfc_pb_glpi_no_log_sensitive_data: true # Optional, boolean. used to turn `no_log` on/off for logging sensitive data
# NOTE: Sensitive data will be logged. i.e. user and app token.
Prior to the play completing the following artifact/stats are set:
{
"nfc_pb_glpi": {
"ticket":{
"template": {}, // dict. generated ticket template in the same format as would be used to send to the GLPI API
"mandatory_fields": [] // list. field names that are set as required from the ticket template.
}
}
}
Create Ticket
- Job tag is
ticket_create
Tip
Aditionally you can specify tag ticket_template_from_itil_category
to collect the ticket template from the ITIL category which will be used to create the ticket.
This play utilizes the following variables.
nfc_pb_glpi_host: glpi.hostname.tld # Mandatory, string. FQDN that forms part of the url. Don't specify http|https.
nfc_pb_awx_hostname: host.domain.tld # Optional, String. FQDN of the awx host. used to build job url for ticket description.
nfc_pb_glpi_app_token: '' # Mandatory, string. application token as generated from GLPI.
nfc_pb_glpi_user_token: '' # Mandatory, string. user token as generated from GLPI.
nfc_pb_glpi_ticket_create: # Mandatory, dict. The ticket body in API Format.
name: "" # Mandatory, string. Title of the ticket. If using ticket template will be appended to existing.
content: "" # Mandatory, string. The ticket description. If using ticket template will be appended to existing.
entities_id: 0 # Mandatory, integer. entities ID for ticket to be created in.
type: 1 # Mandatory, choice. 1=incident|2=Request
itilcategories_id: 0 # Mandatory*, integer. the ticket category. ONLY mandatory for create
nfc_pb_glpi_no_log_sensitive_data: true # Optional, boolean. used to turn `no_log` on/off for logging sensitive data
# NOTE: Sensitive data will be logged. i.e. user and app token.
nfc_pb_glpi_assign_ticket: true # Optional, boolean. Default=true. Assign the ticket to the API user.
nfc_pb_glpi_ticket_assign_error_user: 0 # Optional, integer. Default= Not specified. Assign the ticket to the specified user on error.
Prior to the play completing the following artifact/stats are set:
{
"nfc_pb_glpi": {
"ticket":{
"assembled": {}, // dict. Assembled ticket in API format
"create": {}, // dict. contents of 'nfc_pb_glpi_ticket_create' variable
"items_id": [] // list. List of items to be assosiated to a tickeck on creation in API format
}
}
}
If there is an error during the play and artifact variable nfc_automation.error
is updated to integer 1
, when this playbook next runs, on the proviso that there is an existing ticket, the ticket will be assigned to the user in variable nfc_pb_glpi_ticket_assign_error_user
.
Tip
Using the ticket assignment on error as a node within an AWX / Ansible Automation Platform workflow can be done by simply specifying job_tags: always
and variable nfc_pb_glpi_ticket_assign_error_user: {glpi_user_id}
. This node could then be used as a path from any node on error to notify the user.
Create Ticket Task
- Job tag is
ticket_task_create
Tip
Aditionally you can specify tags ticket_template_from_itil_category
and ticket_create
to collect the ticket template from the ITIL category which will be used to create the ticket, with the ticket task being created as the last step.
This play utilizes the following variables.
nfc_pb_glpi_host: glpi.hostname.tld # Mandatory, string. FQDN that forms part of the url. Don't specify http|https.
nfc_pb_glpi_app_token: '' # Mandatory, string. application token as generated from GLPI.
nfc_pb_glpi_user_token: '' # Mandatory, string. user token as generated from GLPI.
nfc_pb_glpi_ticket_task_create: # Mandatory, dict. The ticket task body in API Format.
id: 1 # Optional, integer. if specified will update the task. NOTE: the tickets_id must be specified
taskcategories_id: 1 # Mandatory, integer. task ITIL Category (ONLY Mandatory for create)
tickets_id: 64 # Optional, integer. Only required if not creating a ticket first. Mandatory if 'id' specified
content: "" # Mandatory, string. The content of the ticket task.
state: 1 # Optional, choice. 0=Information|1=todo|2=Done.
actiontime: 0 # Optional, integer. time in seconds for task duration
is_private: 0 # Optional, choice 0=public|1=private
users_id_tech: 0 # Optional, integer. the user id of the person to assign the task.
nfc_pb_glpi_no_log_sensitive_data: true # Optional, boolean. used to turn `no_log` on/off for logging sensitive data
# NOTE: Sensitive data will be logged. i.e. user and app token.
Prior to the play completing the following artifact/stats are set:
Plugin - Delete FormCreator Form
- Job tag is
plugin_form_delete_answer
This Deletes a form answer from the GLPI Plugin Form Creator. Within the playbook, this task is placed to run before ticket close/solve and can safely be ran with the other tasks as listed above.
This play utilizes the following variables.
nfc_pb_glpi_plugin_formcreator_delete_id: 0 # Mandatory*, integer or list of integer. ID of the form answers to delete. Only required if task ran alone.
# Note: This var takes precedence over artifact 'nfc_pb_glpi.plugins.form_creator.answer_id'
nfc_pb_glpi_no_log_sensitive_data: true # Optional, boolean. used to turn `no_log` on/off for logging sensitive data
# NOTE: Sensitive data will be logged. i.e. user and app token.
Tip
If you wish to delete multiple forms you can by setting variable nfc_pb_glpi_plugin_formcreator_delete_id
as a JSON list. i.e.
Closing the Ticket
- Job tag is
ticket_close
This task is completely automagic. The artifacts from the ticket and task creation runs are used for the wizardry to close the ticket and ticket task if it exists. The Automation time is added to the ticket task as well.
Playbook Definition
common.yaml | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 |
|
About:
This page forms part of our Project Ansible Playbooks.
Page Metadata
Version: ToDo: place files short git commit hereDate Created: 2023-12-11
Date Edited: 2024-02-07
Contribution:
Would You like to contribute to our Ansible Playbooks project? You can assist in the following ways:
- Edit This Page If there is a mistake or a way you can improve it.
- Add a Page to the Manual if you would like to add an item to our manual
- Raise an Issue if there is something about this page you would like to improve, and git is unfamiliar to you.
ToDo: Add the page list of contributors