1.. _community.aws.aws_codepipeline_module: 2 3 4****************************** 5community.aws.aws_codepipeline 6****************************** 7 8**Create or delete AWS CodePipelines** 9 10 11Version added: 1.0.0 12 13.. contents:: 14 :local: 15 :depth: 1 16 17 18Synopsis 19-------- 20- Create or delete a CodePipeline on AWS. 21 22 23 24Requirements 25------------ 26The below requirements are needed on the host that executes this module. 27 28- boto 29- boto3 30- botocore 31- python >= 2.6 32 33 34Parameters 35---------- 36 37.. raw:: html 38 39 <table border=0 cellpadding=0 class="documentation-table"> 40 <tr> 41 <th colspan="2">Parameter</th> 42 <th>Choices/<font color="blue">Defaults</font></th> 43 <th width="100%">Comments</th> 44 </tr> 45 <tr> 46 <td colspan="2"> 47 <div class="ansibleOptionAnchor" id="parameter-"></div> 48 <b>artifact_store</b> 49 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 50 <div style="font-size: small"> 51 <span style="color: purple">dictionary</span> 52 / <span style="color: red">required</span> 53 </div> 54 </td> 55 <td> 56 </td> 57 <td> 58 <div>Location information where artifacts are stored (on S3). Dictionary with fields type and location.</div> 59 </td> 60 </tr> 61 <tr> 62 <td class="elbow-placeholder"></td> 63 <td colspan="1"> 64 <div class="ansibleOptionAnchor" id="parameter-"></div> 65 <b>location</b> 66 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 67 <div style="font-size: small"> 68 <span style="color: purple">string</span> 69 </div> 70 </td> 71 <td> 72 </td> 73 <td> 74 <div>Bucket name for artifacts.</div> 75 </td> 76 </tr> 77 <tr> 78 <td class="elbow-placeholder"></td> 79 <td colspan="1"> 80 <div class="ansibleOptionAnchor" id="parameter-"></div> 81 <b>type</b> 82 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 83 <div style="font-size: small"> 84 <span style="color: purple">string</span> 85 </div> 86 </td> 87 <td> 88 </td> 89 <td> 90 <div>Type of the artifacts storage (only 'S3' is currently supported).</div> 91 </td> 92 </tr> 93 94 <tr> 95 <td colspan="2"> 96 <div class="ansibleOptionAnchor" id="parameter-"></div> 97 <b>aws_access_key</b> 98 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 99 <div style="font-size: small"> 100 <span style="color: purple">string</span> 101 </div> 102 </td> 103 <td> 104 </td> 105 <td> 106 <div>AWS access key. If not set then the value of the AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY or EC2_ACCESS_KEY environment variable is used.</div> 107 <div>If <em>profile</em> is set this parameter is ignored.</div> 108 <div>Passing the <em>aws_access_key</em> and <em>profile</em> options at the same time has been deprecated and the options will be made mutually exclusive after 2022-06-01.</div> 109 <div style="font-size: small; color: darkgreen"><br/>aliases: ec2_access_key, access_key</div> 110 </td> 111 </tr> 112 <tr> 113 <td colspan="2"> 114 <div class="ansibleOptionAnchor" id="parameter-"></div> 115 <b>aws_ca_bundle</b> 116 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 117 <div style="font-size: small"> 118 <span style="color: purple">path</span> 119 </div> 120 </td> 121 <td> 122 </td> 123 <td> 124 <div>The location of a CA Bundle to use when validating SSL certificates.</div> 125 <div>Only used for boto3 based modules.</div> 126 <div>Note: The CA Bundle is read 'module' side and may need to be explicitly copied from the controller if not run locally.</div> 127 </td> 128 </tr> 129 <tr> 130 <td colspan="2"> 131 <div class="ansibleOptionAnchor" id="parameter-"></div> 132 <b>aws_config</b> 133 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 134 <div style="font-size: small"> 135 <span style="color: purple">dictionary</span> 136 </div> 137 </td> 138 <td> 139 </td> 140 <td> 141 <div>A dictionary to modify the botocore configuration.</div> 142 <div>Parameters can be found at <a href='https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config'>https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config</a>.</div> 143 <div>Only the 'user_agent' key is used for boto modules. See <a href='http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto'>http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto</a> for more boto configuration.</div> 144 </td> 145 </tr> 146 <tr> 147 <td colspan="2"> 148 <div class="ansibleOptionAnchor" id="parameter-"></div> 149 <b>aws_secret_key</b> 150 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 151 <div style="font-size: small"> 152 <span style="color: purple">string</span> 153 </div> 154 </td> 155 <td> 156 </td> 157 <td> 158 <div>AWS secret key. If not set then the value of the AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY, or EC2_SECRET_KEY environment variable is used.</div> 159 <div>If <em>profile</em> is set this parameter is ignored.</div> 160 <div>Passing the <em>aws_secret_key</em> and <em>profile</em> options at the same time has been deprecated and the options will be made mutually exclusive after 2022-06-01.</div> 161 <div style="font-size: small; color: darkgreen"><br/>aliases: ec2_secret_key, secret_key</div> 162 </td> 163 </tr> 164 <tr> 165 <td colspan="2"> 166 <div class="ansibleOptionAnchor" id="parameter-"></div> 167 <b>debug_botocore_endpoint_logs</b> 168 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 169 <div style="font-size: small"> 170 <span style="color: purple">boolean</span> 171 </div> 172 </td> 173 <td> 174 <ul style="margin: 0; padding: 0"><b>Choices:</b> 175 <li><div style="color: blue"><b>no</b> ←</div></li> 176 <li>yes</li> 177 </ul> 178 </td> 179 <td> 180 <div>Use a botocore.endpoint logger to parse the unique (rather than total) "resource:action" API calls made during a task, outputing the set to the resource_actions key in the task results. Use the aws_resource_action callback to output to total list made during a playbook. The ANSIBLE_DEBUG_BOTOCORE_LOGS environment variable may also be used.</div> 181 </td> 182 </tr> 183 <tr> 184 <td colspan="2"> 185 <div class="ansibleOptionAnchor" id="parameter-"></div> 186 <b>ec2_url</b> 187 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 188 <div style="font-size: small"> 189 <span style="color: purple">string</span> 190 </div> 191 </td> 192 <td> 193 </td> 194 <td> 195 <div>Url to use to connect to EC2 or your Eucalyptus cloud (by default the module will use EC2 endpoints). Ignored for modules where region is required. Must be specified for all other modules if region is not used. If not set then the value of the EC2_URL environment variable, if any, is used.</div> 196 <div style="font-size: small; color: darkgreen"><br/>aliases: aws_endpoint_url, endpoint_url</div> 197 </td> 198 </tr> 199 <tr> 200 <td colspan="2"> 201 <div class="ansibleOptionAnchor" id="parameter-"></div> 202 <b>name</b> 203 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 204 <div style="font-size: small"> 205 <span style="color: purple">string</span> 206 / <span style="color: red">required</span> 207 </div> 208 </td> 209 <td> 210 </td> 211 <td> 212 <div>Name of the pipeline</div> 213 </td> 214 </tr> 215 <tr> 216 <td colspan="2"> 217 <div class="ansibleOptionAnchor" id="parameter-"></div> 218 <b>profile</b> 219 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 220 <div style="font-size: small"> 221 <span style="color: purple">string</span> 222 </div> 223 </td> 224 <td> 225 </td> 226 <td> 227 <div>Uses a boto profile. Only works with boto >= 2.24.0.</div> 228 <div>Using <em>profile</em> will override <em>aws_access_key</em>, <em>aws_secret_key</em> and <em>security_token</em> and support for passing them at the same time as <em>profile</em> has been deprecated.</div> 229 <div><em>aws_access_key</em>, <em>aws_secret_key</em> and <em>security_token</em> will be made mutually exclusive with <em>profile</em> after 2022-06-01.</div> 230 <div style="font-size: small; color: darkgreen"><br/>aliases: aws_profile</div> 231 </td> 232 </tr> 233 <tr> 234 <td colspan="2"> 235 <div class="ansibleOptionAnchor" id="parameter-"></div> 236 <b>region</b> 237 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 238 <div style="font-size: small"> 239 <span style="color: purple">string</span> 240 </div> 241 </td> 242 <td> 243 </td> 244 <td> 245 <div>The AWS region to use. If not specified then the value of the AWS_REGION or EC2_REGION environment variable, if any, is used. See <a href='http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region'>http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region</a></div> 246 <div style="font-size: small; color: darkgreen"><br/>aliases: aws_region, ec2_region</div> 247 </td> 248 </tr> 249 <tr> 250 <td colspan="2"> 251 <div class="ansibleOptionAnchor" id="parameter-"></div> 252 <b>role_arn</b> 253 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 254 <div style="font-size: small"> 255 <span style="color: purple">string</span> 256 / <span style="color: red">required</span> 257 </div> 258 </td> 259 <td> 260 </td> 261 <td> 262 <div>ARN of the IAM role to use when executing the pipeline</div> 263 </td> 264 </tr> 265 <tr> 266 <td colspan="2"> 267 <div class="ansibleOptionAnchor" id="parameter-"></div> 268 <b>security_token</b> 269 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 270 <div style="font-size: small"> 271 <span style="color: purple">string</span> 272 </div> 273 </td> 274 <td> 275 </td> 276 <td> 277 <div>AWS STS security token. If not set then the value of the AWS_SECURITY_TOKEN or EC2_SECURITY_TOKEN environment variable is used.</div> 278 <div>If <em>profile</em> is set this parameter is ignored.</div> 279 <div>Passing the <em>security_token</em> and <em>profile</em> options at the same time has been deprecated and the options will be made mutually exclusive after 2022-06-01.</div> 280 <div style="font-size: small; color: darkgreen"><br/>aliases: aws_security_token, access_token</div> 281 </td> 282 </tr> 283 <tr> 284 <td colspan="2"> 285 <div class="ansibleOptionAnchor" id="parameter-"></div> 286 <b>stages</b> 287 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 288 <div style="font-size: small"> 289 <span style="color: purple">list</span> 290 / <span style="color: purple">elements=dictionary</span> 291 / <span style="color: red">required</span> 292 </div> 293 </td> 294 <td> 295 </td> 296 <td> 297 <div>List of stages to perform in the CodePipeline. List of dictionaries containing name and actions for each stage.</div> 298 </td> 299 </tr> 300 <tr> 301 <td class="elbow-placeholder"></td> 302 <td colspan="1"> 303 <div class="ansibleOptionAnchor" id="parameter-"></div> 304 <b>actions</b> 305 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 306 <div style="font-size: small"> 307 <span style="color: purple">list</span> 308 / <span style="color: purple">elements=dictionary</span> 309 </div> 310 </td> 311 <td> 312 </td> 313 <td> 314 <div>List of action configurations for that stage.</div> 315 <div>See the boto3 documentation for full documentation of suboptions:</div> 316 <div><a href='https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codepipeline.html#CodePipeline.Client.create_pipeline'>https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codepipeline.html#CodePipeline.Client.create_pipeline</a></div> 317 </td> 318 </tr> 319 <tr> 320 <td class="elbow-placeholder"></td> 321 <td colspan="1"> 322 <div class="ansibleOptionAnchor" id="parameter-"></div> 323 <b>name</b> 324 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 325 <div style="font-size: small"> 326 <span style="color: purple">string</span> 327 </div> 328 </td> 329 <td> 330 </td> 331 <td> 332 <div>Name of the stage (step) in the codepipeline</div> 333 </td> 334 </tr> 335 336 <tr> 337 <td colspan="2"> 338 <div class="ansibleOptionAnchor" id="parameter-"></div> 339 <b>state</b> 340 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 341 <div style="font-size: small"> 342 <span style="color: purple">string</span> 343 </div> 344 </td> 345 <td> 346 <ul style="margin: 0; padding: 0"><b>Choices:</b> 347 <li><div style="color: blue"><b>present</b> ←</div></li> 348 <li>absent</li> 349 </ul> 350 </td> 351 <td> 352 <div>Create or remove code pipeline</div> 353 </td> 354 </tr> 355 <tr> 356 <td colspan="2"> 357 <div class="ansibleOptionAnchor" id="parameter-"></div> 358 <b>validate_certs</b> 359 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 360 <div style="font-size: small"> 361 <span style="color: purple">boolean</span> 362 </div> 363 </td> 364 <td> 365 <ul style="margin: 0; padding: 0"><b>Choices:</b> 366 <li>no</li> 367 <li><div style="color: blue"><b>yes</b> ←</div></li> 368 </ul> 369 </td> 370 <td> 371 <div>When set to "no", SSL certificates will not be validated for boto versions >= 2.6.0.</div> 372 </td> 373 </tr> 374 <tr> 375 <td colspan="2"> 376 <div class="ansibleOptionAnchor" id="parameter-"></div> 377 <b>version</b> 378 <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> 379 <div style="font-size: small"> 380 <span style="color: purple">integer</span> 381 </div> 382 </td> 383 <td> 384 </td> 385 <td> 386 <div>Version number of the pipeline. This number is automatically incremented when a pipeline is updated.</div> 387 </td> 388 </tr> 389 </table> 390 <br/> 391 392 393Notes 394----- 395 396.. note:: 397 - for details of the parameters and returns see http://boto3.readthedocs.io/en/latest/reference/services/codepipeline.html 398 - If parameters are not set within the module, the following environment variables can be used in decreasing order of precedence ``AWS_URL`` or ``EC2_URL``, ``AWS_PROFILE`` or ``AWS_DEFAULT_PROFILE``, ``AWS_ACCESS_KEY_ID`` or ``AWS_ACCESS_KEY`` or ``EC2_ACCESS_KEY``, ``AWS_SECRET_ACCESS_KEY`` or ``AWS_SECRET_KEY`` or ``EC2_SECRET_KEY``, ``AWS_SECURITY_TOKEN`` or ``EC2_SECURITY_TOKEN``, ``AWS_REGION`` or ``EC2_REGION``, ``AWS_CA_BUNDLE`` 399 - Ansible uses the boto configuration file (typically ~/.boto) if no credentials are provided. See https://boto.readthedocs.io/en/latest/boto_config_tut.html 400 - ``AWS_REGION`` or ``EC2_REGION`` can be typically be used to specify the AWS region, when required, but this can also be configured in the boto config file 401 402 403 404Examples 405-------- 406 407.. code-block:: yaml 408 409 # Note: These examples do not set authentication details, see the AWS Guide for details. 410 411 # Example for creating a pipeline for continuous deploy of Github code to an ECS cluster (container) 412 - community.aws.aws_codepipeline: 413 name: my_deploy_pipeline 414 role_arn: arn:aws:iam::123456:role/AWS-CodePipeline-Service 415 artifact_store: 416 type: S3 417 location: my_s3_codepipline_bucket 418 stages: 419 - name: Get_source 420 actions: 421 - 422 name: Git_pull 423 actionTypeId: 424 category: Source 425 owner: ThirdParty 426 provider: GitHub 427 version: '1' 428 outputArtifacts: 429 - { name: my-app-source } 430 configuration: 431 Owner: mediapeers 432 Repo: my_gh_repo 433 PollForSourceChanges: 'true' 434 Branch: master 435 # Generate token like this: 436 # https://docs.aws.amazon.com/codepipeline/latest/userguide/GitHub-rotate-personal-token-CLI.html 437 # GH Link: https://github.com/settings/tokens 438 OAuthToken: 'abc123def456' 439 runOrder: 1 440 - name: Build 441 actions: 442 - 443 name: CodeBuild 444 actionTypeId: 445 category: Build 446 owner: AWS 447 provider: CodeBuild 448 version: '1' 449 inputArtifacts: 450 - { name: my-app-source } 451 outputArtifacts: 452 - { name: my-app-build } 453 configuration: 454 # A project with that name needs to be setup on AWS CodeBuild already (use code_build module). 455 ProjectName: codebuild-project-name 456 runOrder: 1 457 - name: ECS_deploy 458 actions: 459 - 460 name: ECS_deploy 461 actionTypeId: 462 category: Deploy 463 owner: AWS 464 provider: ECS 465 version: '1' 466 inputArtifacts: 467 - { name: vod-api-app-build } 468 configuration: 469 # an ECS cluster with that name needs to be setup on AWS ECS already (use ecs_cluster and ecs_service module) 470 ClusterName: ecs-cluster-name 471 ServiceName: ecs-cluster-service-name 472 FileName: imagedefinitions.json 473 region: us-east-1 474 state: present 475 476 477 478Return Values 479------------- 480Common 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: 481 482.. raw:: html 483 484 <table border=0 cellpadding=0 class="documentation-table"> 485 <tr> 486 <th colspan="3">Key</th> 487 <th>Returned</th> 488 <th width="100%">Description</th> 489 </tr> 490 <tr> 491 <td colspan="3"> 492 <div class="ansibleOptionAnchor" id="return-"></div> 493 <b>pipeline</b> 494 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 495 <div style="font-size: small"> 496 <span style="color: purple">complex</span> 497 </div> 498 </td> 499 <td>success</td> 500 <td> 501 <div>Returns the dictionary describing the code pipeline configuration.</div> 502 <br/> 503 </td> 504 </tr> 505 <tr> 506 <td class="elbow-placeholder"> </td> 507 <td colspan="2"> 508 <div class="ansibleOptionAnchor" id="return-"></div> 509 <b>artifact_store</b> 510 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 511 <div style="font-size: small"> 512 <span style="color: purple">complex</span> 513 </div> 514 </td> 515 <td>always</td> 516 <td> 517 <div>Information about where the build artifacts are stored</div> 518 <br/> 519 </td> 520 </tr> 521 <tr> 522 <td class="elbow-placeholder"> </td> 523 <td class="elbow-placeholder"> </td> 524 <td colspan="1"> 525 <div class="ansibleOptionAnchor" id="return-"></div> 526 <b>encryption_key</b> 527 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 528 <div style="font-size: small"> 529 <span style="color: purple">string</span> 530 </div> 531 </td> 532 <td>when configured</td> 533 <td> 534 <div>The encryption key used to encrypt the artifacts store, such as an AWS KMS key.</div> 535 <br/> 536 </td> 537 </tr> 538 <tr> 539 <td class="elbow-placeholder"> </td> 540 <td class="elbow-placeholder"> </td> 541 <td colspan="1"> 542 <div class="ansibleOptionAnchor" id="return-"></div> 543 <b>location</b> 544 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 545 <div style="font-size: small"> 546 <span style="color: purple">string</span> 547 </div> 548 </td> 549 <td>always</td> 550 <td> 551 <div>The location of the artifacts storage (s3 bucket name)</div> 552 <br/> 553 <div style="font-size: smaller"><b>Sample:</b></div> 554 <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">my_s3_codepipline_bucket</div> 555 </td> 556 </tr> 557 <tr> 558 <td class="elbow-placeholder"> </td> 559 <td class="elbow-placeholder"> </td> 560 <td colspan="1"> 561 <div class="ansibleOptionAnchor" id="return-"></div> 562 <b>type</b> 563 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 564 <div style="font-size: small"> 565 <span style="color: purple">string</span> 566 </div> 567 </td> 568 <td>always</td> 569 <td> 570 <div>The type of the artifacts store, such as S3</div> 571 <br/> 572 <div style="font-size: smaller"><b>Sample:</b></div> 573 <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">S3</div> 574 </td> 575 </tr> 576 577 <tr> 578 <td class="elbow-placeholder"> </td> 579 <td colspan="2"> 580 <div class="ansibleOptionAnchor" id="return-"></div> 581 <b>name</b> 582 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 583 <div style="font-size: small"> 584 <span style="color: purple">string</span> 585 </div> 586 </td> 587 <td>always</td> 588 <td> 589 <div>Name of the CodePipeline</div> 590 <br/> 591 <div style="font-size: smaller"><b>Sample:</b></div> 592 <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">my_deploy_pipeline</div> 593 </td> 594 </tr> 595 <tr> 596 <td class="elbow-placeholder"> </td> 597 <td colspan="2"> 598 <div class="ansibleOptionAnchor" id="return-"></div> 599 <b>role_arn</b> 600 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 601 <div style="font-size: small"> 602 <span style="color: purple">string</span> 603 </div> 604 </td> 605 <td>always</td> 606 <td> 607 <div>ARN of the IAM role attached to the code pipeline</div> 608 <br/> 609 <div style="font-size: smaller"><b>Sample:</b></div> 610 <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">arn:aws:iam::123123123:role/codepipeline-service-role</div> 611 </td> 612 </tr> 613 <tr> 614 <td class="elbow-placeholder"> </td> 615 <td colspan="2"> 616 <div class="ansibleOptionAnchor" id="return-"></div> 617 <b>stages</b> 618 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 619 <div style="font-size: small"> 620 <span style="color: purple">list</span> 621 </div> 622 </td> 623 <td>always</td> 624 <td> 625 <div>List of stages configured for this pipeline</div> 626 <br/> 627 </td> 628 </tr> 629 <tr> 630 <td class="elbow-placeholder"> </td> 631 <td colspan="2"> 632 <div class="ansibleOptionAnchor" id="return-"></div> 633 <b>version</b> 634 <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> 635 <div style="font-size: small"> 636 <span style="color: purple">integer</span> 637 </div> 638 </td> 639 <td>always</td> 640 <td> 641 <div>The version number of the pipeline. This number is auto incremented when pipeline params are changed.</div> 642 <br/> 643 </td> 644 </tr> 645 646 </table> 647 <br/><br/> 648 649 650Status 651------ 652 653 654Authors 655~~~~~~~ 656 657- Stefan Horning (@stefanhorning) <horning@mediapeers.com> 658