1--- 2 3- name: Registering service name 4 set_fact: 5 service_name: "{{ name_prefix ~ '-options' }}" 6 7- name: Registering service name 8 set_fact: 9 service_names: "{{ service_names + [service_name] }}" 10 11#################################################################### 12## args ############################################################ 13#################################################################### 14 15- name: args 16 docker_swarm_service: 17 name: "{{ service_name }}" 18 image: "{{ docker_test_image_alpine }}" 19 resolve_image: no 20 args: 21 - sleep 22 - "3600" 23 register: args_1 24 25- name: args (idempotency) 26 docker_swarm_service: 27 name: "{{ service_name }}" 28 image: "{{ docker_test_image_alpine }}" 29 resolve_image: no 30 args: 31 - sleep 32 - "3600" 33 register: args_2 34 35- name: args (change) 36 docker_swarm_service: 37 name: "{{ service_name }}" 38 image: "{{ docker_test_image_alpine }}" 39 resolve_image: no 40 args: 41 - sleep 42 - "3400" 43 register: args_3 44 45- name: args (empty) 46 docker_swarm_service: 47 name: "{{ service_name }}" 48 image: "{{ docker_test_image_alpine }}" 49 resolve_image: no 50 args: [] 51 register: args_4 52 53- name: args (empty idempotency) 54 docker_swarm_service: 55 name: "{{ service_name }}" 56 image: "{{ docker_test_image_alpine }}" 57 resolve_image: no 58 args: [] 59 register: args_5 60 61- name: cleanup 62 docker_swarm_service: 63 name: "{{ service_name }}" 64 state: absent 65 diff: no 66 67- assert: 68 that: 69 - args_1 is changed 70 - args_2 is not changed 71 - args_3 is changed 72 - args_4 is changed 73 - args_5 is not changed 74 75#################################################################### 76## command ######################################################### 77#################################################################### 78 79- name: command 80 docker_swarm_service: 81 name: "{{ service_name }}" 82 image: "{{ docker_test_image_alpine }}" 83 resolve_image: no 84 command: '/bin/sh -v -c "sleep 10m"' 85 register: command_1 86 87- name: command (idempotency) 88 docker_swarm_service: 89 name: "{{ service_name }}" 90 image: "{{ docker_test_image_alpine }}" 91 resolve_image: no 92 command: '/bin/sh -v -c "sleep 10m"' 93 register: command_2 94 95- name: command (less parameters) 96 docker_swarm_service: 97 name: "{{ service_name }}" 98 image: "{{ docker_test_image_alpine }}" 99 resolve_image: no 100 command: '/bin/sh -c "sleep 10m"' 101 register: command_3 102 103- name: command (as list) 104 docker_swarm_service: 105 name: "{{ service_name }}" 106 image: "{{ docker_test_image_alpine }}" 107 resolve_image: no 108 command: 109 - "/bin/sh" 110 - "-c" 111 - "sleep 10m" 112 register: command_4 113 114- name: command (empty) 115 docker_swarm_service: 116 name: "{{ service_name }}" 117 image: "{{ docker_test_image_alpine }}" 118 resolve_image: no 119 command: [] 120 register: command_5 121 122- name: command (empty idempotency) 123 docker_swarm_service: 124 name: "{{ service_name }}" 125 image: "{{ docker_test_image_alpine }}" 126 resolve_image: no 127 command: [] 128 register: command_6 129 130- name: command (string failure) 131 docker_swarm_service: 132 name: "{{ service_name }}" 133 image: "{{ docker_test_image_alpine }}" 134 resolve_image: no 135 command: yes 136 register: command_7 137 ignore_errors: yes 138 139- name: command (list failure) 140 docker_swarm_service: 141 name: "{{ service_name }}" 142 image: "{{ docker_test_image_alpine }}" 143 resolve_image: no 144 command: 145 - "/bin/sh" 146 - yes 147 register: command_8 148 ignore_errors: yes 149 150- name: cleanup 151 docker_swarm_service: 152 name: "{{ service_name }}" 153 state: absent 154 diff: no 155 156- assert: 157 that: 158 - command_1 is changed 159 - command_2 is not changed 160 - command_3 is changed 161 - command_4 is not changed 162 - command_5 is changed 163 - command_6 is not changed 164 - command_7 is failed 165 - command_8 is failed 166 167#################################################################### 168## container_labels ################################################ 169#################################################################### 170 171- name: container_labels 172 docker_swarm_service: 173 name: "{{ service_name }}" 174 image: "{{ docker_test_image_alpine }}" 175 resolve_image: no 176 command: '/bin/sh -v -c "sleep 10m"' 177 container_labels: 178 test_1: "1" 179 test_2: "2" 180 register: container_labels_1 181 182- name: container_labels (idempotency) 183 docker_swarm_service: 184 name: "{{ service_name }}" 185 image: "{{ docker_test_image_alpine }}" 186 resolve_image: no 187 command: '/bin/sh -v -c "sleep 10m"' 188 container_labels: 189 test_1: "1" 190 test_2: "2" 191 register: container_labels_2 192 193- name: container_labels (change) 194 docker_swarm_service: 195 name: "{{ service_name }}" 196 image: "{{ docker_test_image_alpine }}" 197 resolve_image: no 198 command: '/bin/sh -v -c "sleep 10m"' 199 container_labels: 200 test_1: "1" 201 test_2: "3" 202 register: container_labels_3 203 204- name: container_labels (empty) 205 docker_swarm_service: 206 name: "{{ service_name }}" 207 image: "{{ docker_test_image_alpine }}" 208 resolve_image: no 209 command: '/bin/sh -v -c "sleep 10m"' 210 container_labels: {} 211 register: container_labels_4 212 213- name: container_labels (empty idempotency) 214 docker_swarm_service: 215 name: "{{ service_name }}" 216 image: "{{ docker_test_image_alpine }}" 217 resolve_image: no 218 command: '/bin/sh -v -c "sleep 10m"' 219 container_labels: {} 220 register: container_labels_5 221 222- name: cleanup 223 docker_swarm_service: 224 name: "{{ service_name }}" 225 state: absent 226 diff: no 227 228- assert: 229 that: 230 - container_labels_1 is changed 231 - container_labels_2 is not changed 232 - container_labels_3 is changed 233 - container_labels_4 is changed 234 - container_labels_5 is not changed 235 236#################################################################### 237## dns ############################################################# 238#################################################################### 239 240- name: dns 241 docker_swarm_service: 242 name: "{{ service_name }}" 243 image: "{{ docker_test_image_alpine }}" 244 resolve_image: no 245 command: '/bin/sh -v -c "sleep 10m"' 246 dns: 247 - 1.1.1.1 248 - 8.8.8.8 249 register: dns_1 250 ignore_errors: yes 251 252- name: dns (idempotency) 253 docker_swarm_service: 254 name: "{{ service_name }}" 255 image: "{{ docker_test_image_alpine }}" 256 resolve_image: no 257 command: '/bin/sh -v -c "sleep 10m"' 258 dns: 259 - 1.1.1.1 260 - 8.8.8.8 261 register: dns_2 262 ignore_errors: yes 263 264- name: dns_servers (changed order) 265 docker_swarm_service: 266 name: "{{ service_name }}" 267 image: "{{ docker_test_image_alpine }}" 268 resolve_image: no 269 command: '/bin/sh -v -c "sleep 10m"' 270 dns: 271 - 8.8.8.8 272 - 1.1.1.1 273 register: dns_3 274 ignore_errors: yes 275 276- name: dns_servers (changed elements) 277 docker_swarm_service: 278 name: "{{ service_name }}" 279 image: "{{ docker_test_image_alpine }}" 280 resolve_image: no 281 command: '/bin/sh -v -c "sleep 10m"' 282 dns: 283 - 8.8.8.8 284 - 9.9.9.9 285 register: dns_4 286 ignore_errors: yes 287 288- name: dns_servers (empty) 289 docker_swarm_service: 290 name: "{{ service_name }}" 291 image: "{{ docker_test_image_alpine }}" 292 resolve_image: no 293 command: '/bin/sh -v -c "sleep 10m"' 294 dns: [] 295 register: dns_5 296 ignore_errors: yes 297 298- name: dns_servers (empty idempotency) 299 docker_swarm_service: 300 name: "{{ service_name }}" 301 image: "{{ docker_test_image_alpine }}" 302 resolve_image: no 303 command: '/bin/sh -v -c "sleep 10m"' 304 dns: [] 305 register: dns_6 306 ignore_errors: yes 307 308- name: cleanup 309 docker_swarm_service: 310 name: "{{ service_name }}" 311 state: absent 312 diff: no 313 314- assert: 315 that: 316 - dns_1 is changed 317 - dns_2 is not changed 318 - dns_3 is changed 319 - dns_4 is changed 320 - dns_5 is changed 321 - dns_6 is not changed 322 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=') 323- assert: 324 that: 325 - dns_1 is failed 326 - "'Minimum version required' in dns_1.msg" 327 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<') 328 329#################################################################### 330## dns_options ##################################################### 331#################################################################### 332 333- name: dns_options 334 docker_swarm_service: 335 name: "{{ service_name }}" 336 image: "{{ docker_test_image_alpine }}" 337 resolve_image: no 338 command: '/bin/sh -v -c "sleep 10m"' 339 dns_options: 340 - "timeout:10" 341 - rotate 342 register: dns_options_1 343 ignore_errors: yes 344 345- name: dns_options (idempotency) 346 docker_swarm_service: 347 name: "{{ service_name }}" 348 image: "{{ docker_test_image_alpine }}" 349 resolve_image: no 350 command: '/bin/sh -v -c "sleep 10m"' 351 dns_options: 352 - "timeout:10" 353 - rotate 354 register: dns_options_2 355 ignore_errors: yes 356 357- name: dns_options (change) 358 docker_swarm_service: 359 name: "{{ service_name }}" 360 image: "{{ docker_test_image_alpine }}" 361 resolve_image: no 362 command: '/bin/sh -v -c "sleep 10m"' 363 dns_options: 364 - "timeout:10" 365 - no-check-names 366 register: dns_options_3 367 ignore_errors: yes 368 369- name: dns_options (order idempotency) 370 docker_swarm_service: 371 name: "{{ service_name }}" 372 image: "{{ docker_test_image_alpine }}" 373 resolve_image: no 374 command: '/bin/sh -v -c "sleep 10m"' 375 dns_options: 376 - no-check-names 377 - "timeout:10" 378 register: dns_options_4 379 ignore_errors: yes 380 381- name: dns_options (empty) 382 docker_swarm_service: 383 name: "{{ service_name }}" 384 image: "{{ docker_test_image_alpine }}" 385 resolve_image: no 386 command: '/bin/sh -v -c "sleep 10m"' 387 dns_options: [] 388 register: dns_options_5 389 ignore_errors: yes 390 391- name: dns_options (empty idempotency) 392 docker_swarm_service: 393 name: "{{ service_name }}" 394 image: "{{ docker_test_image_alpine }}" 395 resolve_image: no 396 command: '/bin/sh -v -c "sleep 10m"' 397 dns_options: [] 398 register: dns_options_6 399 ignore_errors: yes 400 401- name: cleanup 402 docker_swarm_service: 403 name: "{{ service_name }}" 404 state: absent 405 diff: no 406 407- assert: 408 that: 409 - dns_options_1 is changed 410 - dns_options_2 is not changed 411 - dns_options_3 is changed 412 - dns_options_4 is not changed 413 - dns_options_5 is changed 414 - dns_options_6 is not changed 415 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=') 416- assert: 417 that: 418 - dns_options_1 is failed 419 - "'Minimum version required' in dns_options_1.msg" 420 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<') 421 422#################################################################### 423## dns_search ###################################################### 424#################################################################### 425 426- name: dns_search 427 docker_swarm_service: 428 name: "{{ service_name }}" 429 image: "{{ docker_test_image_alpine }}" 430 resolve_image: no 431 command: '/bin/sh -v -c "sleep 10m"' 432 dns_search: 433 - example.com 434 - example.org 435 register: dns_search_1 436 ignore_errors: yes 437 438- name: dns_search (idempotency) 439 docker_swarm_service: 440 name: "{{ service_name }}" 441 image: "{{ docker_test_image_alpine }}" 442 resolve_image: no 443 command: '/bin/sh -v -c "sleep 10m"' 444 dns_search: 445 - example.com 446 - example.org 447 register: dns_search_2 448 ignore_errors: yes 449 450- name: dns_search (different order) 451 docker_swarm_service: 452 name: "{{ service_name }}" 453 image: "{{ docker_test_image_alpine }}" 454 resolve_image: no 455 command: '/bin/sh -v -c "sleep 10m"' 456 dns_search: 457 - example.org 458 - example.com 459 register: dns_search_3 460 ignore_errors: yes 461 462- name: dns_search (changed elements) 463 docker_swarm_service: 464 name: "{{ service_name }}" 465 image: "{{ docker_test_image_alpine }}" 466 resolve_image: no 467 command: '/bin/sh -v -c "sleep 10m"' 468 dns_search: 469 - ansible.com 470 - example.com 471 register: dns_search_4 472 ignore_errors: yes 473 474- name: dns_search (empty) 475 docker_swarm_service: 476 name: "{{ service_name }}" 477 image: "{{ docker_test_image_alpine }}" 478 resolve_image: no 479 command: '/bin/sh -v -c "sleep 10m"' 480 dns_search: [] 481 register: dns_search_5 482 ignore_errors: yes 483 484- name: dns_search (empty idempotency) 485 docker_swarm_service: 486 name: "{{ service_name }}" 487 image: "{{ docker_test_image_alpine }}" 488 resolve_image: no 489 command: '/bin/sh -v -c "sleep 10m"' 490 dns_search: [] 491 register: dns_search_6 492 ignore_errors: yes 493 494- name: cleanup 495 docker_swarm_service: 496 name: "{{ service_name }}" 497 state: absent 498 diff: no 499 500- assert: 501 that: 502 - dns_search_1 is changed 503 - dns_search_2 is not changed 504 - dns_search_3 is changed 505 - dns_search_4 is changed 506 - dns_search_5 is changed 507 - dns_search_6 is not changed 508 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=') 509- assert: 510 that: 511 - dns_search_1 is failed 512 - "'Minimum version required' in dns_search_1.msg" 513 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<') 514 515#################################################################### 516## endpoint_mode ################################################### 517#################################################################### 518 519- name: endpoint_mode 520 docker_swarm_service: 521 name: "{{ service_name }}" 522 image: "{{ docker_test_image_alpine }}" 523 resolve_image: no 524 command: '/bin/sh -v -c "sleep 10m"' 525 endpoint_mode: "dnsrr" 526 register: endpoint_mode_1 527 ignore_errors: yes 528 529- name: endpoint_mode (idempotency) 530 docker_swarm_service: 531 name: "{{ service_name }}" 532 image: "{{ docker_test_image_alpine }}" 533 resolve_image: no 534 command: '/bin/sh -v -c "sleep 10m"' 535 endpoint_mode: "dnsrr" 536 register: endpoint_mode_2 537 ignore_errors: yes 538 539- name: endpoint_mode (changes) 540 docker_swarm_service: 541 name: "{{ service_name }}" 542 image: "{{ docker_test_image_alpine }}" 543 resolve_image: no 544 command: '/bin/sh -v -c "sleep 10m"' 545 endpoint_mode: "vip" 546 register: endpoint_mode_3 547 ignore_errors: yes 548 549- name: cleanup 550 docker_swarm_service: 551 name: "{{ service_name }}" 552 state: absent 553 diff: no 554 555- assert: 556 that: 557 - endpoint_mode_1 is changed 558 - endpoint_mode_2 is not changed 559 - endpoint_mode_3 is changed 560 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('3.0.0', '>=') 561- assert: 562 that: 563 - endpoint_mode_1 is failed 564 - "'Minimum version required' in endpoint_mode_1.msg" 565 when: docker_api_version is version('1.25', '<') or docker_py_version is version('3.0.0', '<') 566 567#################################################################### 568## env ############################################################# 569#################################################################### 570 571- name: env 572 docker_swarm_service: 573 name: "{{ service_name }}" 574 image: "{{ docker_test_image_alpine }}" 575 resolve_image: no 576 command: '/bin/sh -v -c "sleep 10m"' 577 env: 578 - "TEST1=val1" 579 - "TEST2=val2" 580 register: env_1 581 582- name: env (idempotency) 583 docker_swarm_service: 584 name: "{{ service_name }}" 585 image: "{{ docker_test_image_alpine }}" 586 resolve_image: no 587 command: '/bin/sh -v -c "sleep 10m"' 588 env: 589 TEST1: val1 590 TEST2: val2 591 register: env_2 592 593- name: env (changes) 594 docker_swarm_service: 595 name: "{{ service_name }}" 596 image: "{{ docker_test_image_alpine }}" 597 resolve_image: no 598 command: '/bin/sh -v -c "sleep 10m"' 599 env: 600 - "TEST1=val1" 601 - "TEST2=val3" 602 register: env_3 603 604- name: env (order idempotency) 605 docker_swarm_service: 606 name: "{{ service_name }}" 607 image: "{{ docker_test_image_alpine }}" 608 resolve_image: no 609 command: '/bin/sh -v -c "sleep 10m"' 610 env: 611 - "TEST2=val3" 612 - "TEST1=val1" 613 register: env_4 614 615- name: env (empty) 616 docker_swarm_service: 617 name: "{{ service_name }}" 618 image: "{{ docker_test_image_alpine }}" 619 resolve_image: no 620 command: '/bin/sh -v -c "sleep 10m"' 621 env: [] 622 register: env_5 623 624- name: env (empty idempotency) 625 docker_swarm_service: 626 name: "{{ service_name }}" 627 image: "{{ docker_test_image_alpine }}" 628 resolve_image: no 629 command: '/bin/sh -v -c "sleep 10m"' 630 env: [] 631 register: env_6 632 633- name: env (fail unwrapped values) 634 docker_swarm_service: 635 name: "{{ service_name }}" 636 image: "{{ docker_test_image_alpine }}" 637 resolve_image: no 638 env: 639 TEST1: true 640 register: env_7 641 ignore_errors: yes 642 643- name: env (fail invalid formatted string) 644 docker_swarm_service: 645 name: "{{ service_name }}" 646 image: "{{ docker_test_image_alpine }}" 647 resolve_image: no 648 env: 649 - "TEST1=val3" 650 - "TEST2" 651 register: env_8 652 ignore_errors: yes 653 654- name: cleanup 655 docker_swarm_service: 656 name: "{{ service_name }}" 657 state: absent 658 diff: no 659 660- assert: 661 that: 662 - env_1 is changed 663 - env_2 is not changed 664 - env_3 is changed 665 - env_4 is not changed 666 - env_5 is changed 667 - env_6 is not changed 668 - env_7 is failed 669 - env_8 is failed 670 671#################################################################### 672## env_files ####################################################### 673#################################################################### 674 675- name: Copy env-files 676 copy: 677 src: "{{ item }}" 678 dest: "{{ remote_tmp_dir }}/{{ item }}" 679 loop: 680 - env-file-1 681 - env-file-2 682 683- name: env_files 684 docker_swarm_service: 685 name: "{{ service_name }}" 686 image: "{{ docker_test_image_alpine }}" 687 resolve_image: no 688 env_files: 689 - "{{ remote_tmp_dir }}/env-file-1" 690 register: env_file_1 691 692- name: env_files (idempotency) 693 docker_swarm_service: 694 name: "{{ service_name }}" 695 image: "{{ docker_test_image_alpine }}" 696 resolve_image: no 697 env_files: 698 - "{{ remote_tmp_dir }}/env-file-1" 699 register: env_file_2 700 701- name: env_files (more items) 702 docker_swarm_service: 703 name: "{{ service_name }}" 704 image: "{{ docker_test_image_alpine }}" 705 resolve_image: no 706 env_files: 707 - "{{ remote_tmp_dir }}/env-file-1" 708 - "{{ remote_tmp_dir }}/env-file-2" 709 register: env_file_3 710 711- name: env_files (order) 712 docker_swarm_service: 713 name: "{{ service_name }}" 714 image: "{{ docker_test_image_alpine }}" 715 resolve_image: no 716 env_files: 717 - "{{ remote_tmp_dir }}/env-file-2" 718 - "{{ remote_tmp_dir }}/env-file-1" 719 register: env_file_4 720 721- name: env_files (multiple idempotency) 722 docker_swarm_service: 723 name: "{{ service_name }}" 724 image: "{{ docker_test_image_alpine }}" 725 resolve_image: no 726 env_files: 727 - "{{ remote_tmp_dir }}/env-file-2" 728 - "{{ remote_tmp_dir }}/env-file-1" 729 register: env_file_5 730 731- name: env_files (empty) 732 docker_swarm_service: 733 name: "{{ service_name }}" 734 image: "{{ docker_test_image_alpine }}" 735 resolve_image: no 736 env_files: [] 737 register: env_file_6 738 739- name: env_files (empty idempotency) 740 docker_swarm_service: 741 name: "{{ service_name }}" 742 image: "{{ docker_test_image_alpine }}" 743 resolve_image: no 744 env_files: [] 745 register: env_file_7 746 747- name: cleanup 748 docker_swarm_service: 749 name: "{{ service_name }}" 750 state: absent 751 diff: no 752 753- assert: 754 that: 755 - env_file_1 is changed 756 - env_file_2 is not changed 757 - env_file_3 is changed 758 - env_file_4 is changed 759 - env_file_5 is not changed 760 - env_file_6 is changed 761 - env_file_7 is not changed 762 763################################################################### 764## force_update ################################################### 765################################################################### 766 767- name: force_update 768 docker_swarm_service: 769 name: "{{ service_name }}" 770 image: "{{ docker_test_image_alpine }}" 771 resolve_image: no 772 command: '/bin/sh -v -c "sleep 10m"' 773 args: 774 - sleep 775 - "3600" 776 force_update: yes 777 register: force_update_1 778 ignore_errors: yes 779 780- name: force_update (idempotency) 781 docker_swarm_service: 782 name: "{{ service_name }}" 783 image: "{{ docker_test_image_alpine }}" 784 resolve_image: no 785 command: '/bin/sh -v -c "sleep 10m"' 786 args: 787 - sleep 788 - "3600" 789 force_update: yes 790 register: force_update_2 791 ignore_errors: yes 792 793- name: cleanup 794 docker_swarm_service: 795 name: "{{ service_name }}" 796 state: absent 797 diff: no 798 799- assert: 800 that: 801 - force_update_1 is changed 802 - force_update_2 is changed 803 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=') 804- assert: 805 that: 806 - force_update_1 is failed 807 - "'Minimum version required' in force_update_1.msg" 808 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.1.0', '<') 809 810#################################################################### 811## groups ########################################################## 812#################################################################### 813 814- name: groups 815 docker_swarm_service: 816 name: "{{ service_name }}" 817 image: "{{ docker_test_image_alpine }}" 818 resolve_image: no 819 command: '/bin/sh -v -c "sleep 10m"' 820 groups: 821 - "1234" 822 - "5678" 823 register: groups_1 824 ignore_errors: yes 825 826- name: groups (idempotency) 827 docker_swarm_service: 828 name: "{{ service_name }}" 829 image: "{{ docker_test_image_alpine }}" 830 resolve_image: no 831 command: '/bin/sh -v -c "sleep 10m"' 832 groups: 833 - "1234" 834 - "5678" 835 register: groups_2 836 ignore_errors: yes 837 838- name: groups (order idempotency) 839 docker_swarm_service: 840 name: "{{ service_name }}" 841 image: "{{ docker_test_image_alpine }}" 842 resolve_image: no 843 command: '/bin/sh -v -c "sleep 10m"' 844 groups: 845 - "5678" 846 - "1234" 847 register: groups_3 848 ignore_errors: yes 849 850- name: groups (change) 851 docker_swarm_service: 852 name: "{{ service_name }}" 853 image: "{{ docker_test_image_alpine }}" 854 resolve_image: no 855 command: '/bin/sh -v -c "sleep 10m"' 856 groups: 857 - "1234" 858 register: groups_4 859 ignore_errors: yes 860 861- name: groups (empty) 862 docker_swarm_service: 863 name: "{{ service_name }}" 864 image: "{{ docker_test_image_alpine }}" 865 resolve_image: no 866 command: '/bin/sh -v -c "sleep 10m"' 867 groups: [] 868 register: groups_5 869 ignore_errors: yes 870 871- name: groups (empty idempotency) 872 docker_swarm_service: 873 name: "{{ service_name }}" 874 image: "{{ docker_test_image_alpine }}" 875 resolve_image: no 876 command: '/bin/sh -v -c "sleep 10m"' 877 groups: [] 878 register: groups_6 879 ignore_errors: yes 880 881- name: cleanup 882 docker_swarm_service: 883 name: "{{ service_name }}" 884 state: absent 885 diff: no 886 887- assert: 888 that: 889 - groups_1 is changed 890 - groups_2 is not changed 891 - groups_3 is not changed 892 - groups_4 is changed 893 - groups_5 is changed 894 - groups_6 is not changed 895 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=') 896- assert: 897 that: 898 - groups_1 is failed 899 - "'Minimum version required' in groups_1.msg" 900 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<') 901 902#################################################################### 903## healthcheck ##################################################### 904#################################################################### 905 906- name: healthcheck 907 docker_swarm_service: 908 name: "{{ service_name }}" 909 image: "{{ docker_test_image_alpine }}" 910 resolve_image: no 911 command: '/bin/sh -v -c "sleep 10m"' 912 healthcheck: 913 test: 914 - CMD 915 - sleep 916 - "1" 917 timeout: 2s 918 interval: 0h0m2s3ms4us 919 retries: 2 920 start_period: 20s 921 register: healthcheck_1 922 ignore_errors: yes 923 924- name: healthcheck (idempotency) 925 docker_swarm_service: 926 name: "{{ service_name }}" 927 image: "{{ docker_test_image_alpine }}" 928 resolve_image: no 929 command: '/bin/sh -v -c "sleep 10m"' 930 healthcheck: 931 test: 932 - CMD 933 - sleep 934 - 1 935 timeout: 2s 936 interval: 0h0m2s3ms4us 937 retries: 2 938 start_period: 20s 939 register: healthcheck_2 940 ignore_errors: yes 941 942- name: healthcheck (changed) 943 docker_swarm_service: 944 name: "{{ service_name }}" 945 image: "{{ docker_test_image_alpine }}" 946 resolve_image: no 947 command: '/bin/sh -v -c "sleep 10m"' 948 healthcheck: 949 test: 950 - CMD 951 - sleep 952 - "1" 953 timeout: 3s 954 interval: 0h1m2s3ms4us 955 retries: 3 956 register: healthcheck_3 957 ignore_errors: yes 958 959- name: healthcheck (disabled) 960 docker_swarm_service: 961 name: "{{ service_name }}" 962 image: "{{ docker_test_image_alpine }}" 963 resolve_image: no 964 command: '/bin/sh -v -c "sleep 10m"' 965 healthcheck: 966 test: 967 - NONE 968 register: healthcheck_4 969 ignore_errors: yes 970 971- name: healthcheck (disabled, idempotency) 972 docker_swarm_service: 973 name: "{{ service_name }}" 974 image: "{{ docker_test_image_alpine }}" 975 resolve_image: no 976 command: '/bin/sh -v -c "sleep 10m"' 977 healthcheck: 978 test: 979 - NONE 980 register: healthcheck_5 981 ignore_errors: yes 982 983- name: healthcheck (string in healthcheck test, changed) 984 docker_swarm_service: 985 name: "{{ service_name }}" 986 image: "{{ docker_test_image_alpine }}" 987 resolve_image: no 988 command: '/bin/sh -v -c "sleep 10m"' 989 healthcheck: 990 test: "sleep 1" 991 register: healthcheck_6 992 ignore_errors: yes 993 994- name: healthcheck (string in healthcheck test, idempotency) 995 docker_swarm_service: 996 name: "{{ service_name }}" 997 image: "{{ docker_test_image_alpine }}" 998 resolve_image: no 999 command: '/bin/sh -v -c "sleep 10m"' 1000 healthcheck: 1001 test: "sleep 1" 1002 register: healthcheck_7 1003 ignore_errors: yes 1004 1005- name: healthcheck (empty) 1006 docker_swarm_service: 1007 name: "{{ service_name }}" 1008 image: "{{ docker_test_image_alpine }}" 1009 resolve_image: no 1010 command: '/bin/sh -v -c "sleep 10m"' 1011 healthcheck: {} 1012 register: healthcheck_8 1013 ignore_errors: yes 1014 1015- name: healthcheck (empty idempotency) 1016 docker_swarm_service: 1017 name: "{{ service_name }}" 1018 image: "{{ docker_test_image_alpine }}" 1019 resolve_image: no 1020 command: '/bin/sh -v -c "sleep 10m"' 1021 healthcheck: {} 1022 register: healthcheck_9 1023 ignore_errors: yes 1024 1025- name: cleanup 1026 docker_swarm_service: 1027 name: "{{ service_name }}" 1028 state: absent 1029 diff: no 1030 1031- assert: 1032 that: 1033 - healthcheck_1 is changed 1034 - healthcheck_2 is not changed 1035 - healthcheck_3 is changed 1036 - healthcheck_4 is changed 1037 - healthcheck_5 is not changed 1038 - healthcheck_6 is changed 1039 - healthcheck_7 is not changed 1040 - healthcheck_8 is changed 1041 - healthcheck_9 is not changed 1042 when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.6.0', '>=') 1043- assert: 1044 that: 1045 - healthcheck_1 is failed 1046 - "'Minimum version required' in healthcheck_1.msg" 1047 when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.6.0', '<') 1048 1049################################################################### 1050## hostname ####################################################### 1051################################################################### 1052 1053- name: hostname 1054 docker_swarm_service: 1055 name: "{{ service_name }}" 1056 image: "{{ docker_test_image_alpine }}" 1057 resolve_image: no 1058 command: '/bin/sh -v -c "sleep 10m"' 1059 hostname: me.example.com 1060 register: hostname_1 1061 ignore_errors: yes 1062 1063- name: hostname (idempotency) 1064 docker_swarm_service: 1065 name: "{{ service_name }}" 1066 image: "{{ docker_test_image_alpine }}" 1067 resolve_image: no 1068 command: '/bin/sh -v -c "sleep 10m"' 1069 hostname: me.example.com 1070 register: hostname_2 1071 ignore_errors: yes 1072 1073- name: hostname (change) 1074 docker_swarm_service: 1075 name: "{{ service_name }}" 1076 image: "{{ docker_test_image_alpine }}" 1077 resolve_image: no 1078 command: '/bin/sh -v -c "sleep 10m"' 1079 hostname: me.example.org 1080 register: hostname_3 1081 ignore_errors: yes 1082 1083- name: cleanup 1084 docker_swarm_service: 1085 name: "{{ service_name }}" 1086 state: absent 1087 diff: no 1088 1089- assert: 1090 that: 1091 - hostname_1 is changed 1092 - hostname_2 is not changed 1093 - hostname_3 is changed 1094 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.2.0', '>=') 1095- assert: 1096 that: 1097 - hostname_1 is failed 1098 - "'Minimum version required' in hostname_1.msg" 1099 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.2.0', '<') 1100 1101################################################################### 1102## hosts ########################################################## 1103################################################################### 1104 1105- name: hosts 1106 docker_swarm_service: 1107 name: "{{ service_name }}" 1108 image: "{{ docker_test_image_alpine }}" 1109 resolve_image: no 1110 command: '/bin/sh -v -c "sleep 10m"' 1111 hosts: 1112 example.com: 1.2.3.4 1113 example.org: 4.3.2.1 1114 register: hosts_1 1115 ignore_errors: yes 1116 1117- name: hosts (idempotency) 1118 docker_swarm_service: 1119 name: "{{ service_name }}" 1120 image: "{{ docker_test_image_alpine }}" 1121 resolve_image: no 1122 command: '/bin/sh -v -c "sleep 10m"' 1123 hosts: 1124 example.com: 1.2.3.4 1125 example.org: 4.3.2.1 1126 register: hosts_2 1127 ignore_errors: yes 1128 1129- name: hosts (change) 1130 docker_swarm_service: 1131 name: "{{ service_name }}" 1132 image: "{{ docker_test_image_alpine }}" 1133 resolve_image: no 1134 command: '/bin/sh -v -c "sleep 10m"' 1135 hosts: 1136 example.com: 1.2.3.4 1137 register: hosts_3 1138 ignore_errors: yes 1139 1140- name: cleanup 1141 docker_swarm_service: 1142 name: "{{ service_name }}" 1143 state: absent 1144 diff: no 1145 1146- assert: 1147 that: 1148 - hosts_1 is changed 1149 - hosts_2 is not changed 1150 - hosts_3 is changed 1151 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=') 1152- assert: 1153 that: 1154 - hosts_1 is failed 1155 - "'Minimum version required' in hosts_1.msg" 1156 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<') 1157 1158 1159################################################################### 1160## image ########################################################## 1161################################################################### 1162 1163- name: image 1164 docker_swarm_service: 1165 name: "{{ service_name }}" 1166 image: "{{ docker_test_image_alpine }}" 1167 resolve_image: no 1168 command: '/bin/sh -v -c "sleep 10m"' 1169 register: image_1 1170 1171- name: image (idempotency) 1172 docker_swarm_service: 1173 name: "{{ service_name }}" 1174 image: "{{ docker_test_image_alpine }}" 1175 resolve_image: no 1176 command: '/bin/sh -v -c "sleep 10m"' 1177 register: image_2 1178 1179- name: image (change) 1180 docker_swarm_service: 1181 name: "{{ service_name }}" 1182 image: "{{ docker_test_image_alpine_different }}" 1183 register: image_3 1184 1185- name: cleanup 1186 docker_swarm_service: 1187 name: "{{ service_name }}" 1188 state: absent 1189 diff: no 1190 1191- assert: 1192 that: 1193 - image_1 is changed 1194 - image_2 is not changed 1195 - image_3 is changed 1196 1197#################################################################### 1198## labels ########################################################## 1199#################################################################### 1200 1201- name: labels 1202 docker_swarm_service: 1203 name: "{{ service_name }}" 1204 image: "{{ docker_test_image_alpine }}" 1205 resolve_image: no 1206 command: '/bin/sh -v -c "sleep 10m"' 1207 labels: 1208 test_1: "1" 1209 test_2: "2" 1210 register: labels_1 1211 1212- name: labels (idempotency) 1213 docker_swarm_service: 1214 name: "{{ service_name }}" 1215 image: "{{ docker_test_image_alpine }}" 1216 resolve_image: no 1217 command: '/bin/sh -v -c "sleep 10m"' 1218 labels: 1219 test_1: "1" 1220 test_2: "2" 1221 register: labels_2 1222 1223- name: labels (changes) 1224 docker_swarm_service: 1225 name: "{{ service_name }}" 1226 image: "{{ docker_test_image_alpine }}" 1227 resolve_image: no 1228 command: '/bin/sh -v -c "sleep 10m"' 1229 labels: 1230 test_1: "1" 1231 test_2: "2" 1232 test_3: "3" 1233 register: labels_3 1234 1235- name: labels (empty) 1236 docker_swarm_service: 1237 name: "{{ service_name }}" 1238 image: "{{ docker_test_image_alpine }}" 1239 resolve_image: no 1240 command: '/bin/sh -v -c "sleep 10m"' 1241 labels: {} 1242 register: labels_4 1243 1244- name: labels (empty idempotency) 1245 docker_swarm_service: 1246 name: "{{ service_name }}" 1247 image: "{{ docker_test_image_alpine }}" 1248 resolve_image: no 1249 command: '/bin/sh -v -c "sleep 10m"' 1250 labels: {} 1251 register: labels_5 1252 1253- name: cleanup 1254 docker_swarm_service: 1255 name: "{{ service_name }}" 1256 state: absent 1257 diff: no 1258 1259- assert: 1260 that: 1261 - labels_1 is changed 1262 - labels_2 is not changed 1263 - labels_3 is changed 1264 - labels_4 is changed 1265 - labels_5 is not changed 1266 1267################################################################### 1268## mode ########################################################### 1269################################################################### 1270 1271- name: mode 1272 docker_swarm_service: 1273 name: "{{ service_name }}" 1274 image: "{{ docker_test_image_alpine }}" 1275 resolve_image: no 1276 command: '/bin/sh -v -c "sleep 10m"' 1277 mode: "replicated" 1278 replicas: 1 1279 register: mode_1 1280 1281- name: mode (idempotency) 1282 docker_swarm_service: 1283 name: "{{ service_name }}" 1284 image: "{{ docker_test_image_alpine }}" 1285 resolve_image: no 1286 command: '/bin/sh -v -c "sleep 10m"' 1287 mode: "replicated" 1288 replicas: 1 1289 register: mode_2 1290 1291- name: mode (change) 1292 docker_swarm_service: 1293 name: "{{ service_name }}" 1294 image: "{{ docker_test_image_alpine }}" 1295 resolve_image: no 1296 command: '/bin/sh -v -c "sleep 10m"' 1297 mode: "global" 1298 replicas: 1 1299 register: mode_3 1300 1301- name: cleanup 1302 docker_swarm_service: 1303 name: "{{ service_name }}" 1304 state: absent 1305 diff: no 1306 1307- assert: 1308 that: 1309 - mode_1 is changed 1310 - mode_2 is not changed 1311 - mode_3 is changed 1312 1313#################################################################### 1314## stop_grace_period ############################################### 1315#################################################################### 1316 1317- name: stop_grace_period 1318 docker_swarm_service: 1319 name: "{{ service_name }}" 1320 image: "{{ docker_test_image_alpine }}" 1321 resolve_image: no 1322 command: '/bin/sh -v -c "sleep 10m"' 1323 stop_grace_period: 60s 1324 register: stop_grace_period_1 1325 1326- name: stop_grace_period (idempotency) 1327 docker_swarm_service: 1328 name: "{{ service_name }}" 1329 image: "{{ docker_test_image_alpine }}" 1330 resolve_image: no 1331 command: '/bin/sh -v -c "sleep 10m"' 1332 stop_grace_period: 60s 1333 register: stop_grace_period_2 1334 1335- name: stop_grace_period (change) 1336 docker_swarm_service: 1337 name: "{{ service_name }}" 1338 image: "{{ docker_test_image_alpine }}" 1339 resolve_image: no 1340 command: '/bin/sh -v -c "sleep 10m"' 1341 stop_grace_period: 1m30s 1342 register: stop_grace_period_3 1343 1344- name: cleanup 1345 docker_swarm_service: 1346 name: "{{ service_name }}" 1347 state: absent 1348 diff: no 1349 1350- assert: 1351 that: 1352 - stop_grace_period_1 is changed 1353 - stop_grace_period_2 is not changed 1354 - stop_grace_period_3 is changed 1355 1356#################################################################### 1357## stop_signal ##################################################### 1358#################################################################### 1359 1360- name: stop_signal 1361 docker_swarm_service: 1362 name: "{{ service_name }}" 1363 image: "{{ docker_test_image_alpine }}" 1364 resolve_image: no 1365 command: '/bin/sh -v -c "sleep 10m"' 1366 stop_signal: "30" 1367 register: stop_signal_1 1368 ignore_errors: yes 1369 1370- name: stop_signal (idempotency) 1371 docker_swarm_service: 1372 name: "{{ service_name }}" 1373 image: "{{ docker_test_image_alpine }}" 1374 resolve_image: no 1375 command: '/bin/sh -v -c "sleep 10m"' 1376 stop_signal: "30" 1377 register: stop_signal_2 1378 ignore_errors: yes 1379 1380- name: stop_signal (change) 1381 docker_swarm_service: 1382 name: "{{ service_name }}" 1383 image: "{{ docker_test_image_alpine }}" 1384 resolve_image: no 1385 command: '/bin/sh -v -c "sleep 10m"' 1386 stop_signal: "9" 1387 register: stop_signal_3 1388 ignore_errors: yes 1389 1390- name: cleanup 1391 docker_swarm_service: 1392 name: "{{ service_name }}" 1393 state: absent 1394 diff: no 1395 1396- assert: 1397 that: 1398 - stop_signal_1 is changed 1399 - stop_signal_2 is not changed 1400 - stop_signal_3 is changed 1401 when: docker_api_version is version('1.28', '>=') and docker_py_version is version('2.6.0', '>=') 1402- assert: 1403 that: 1404 - stop_signal_1 is failed 1405 - "'Minimum version required' in stop_signal_1.msg" 1406 when: docker_api_version is version('1.28', '<') or docker_py_version is version('2.6.0', '<') 1407 1408#################################################################### 1409## publish ######################################################### 1410#################################################################### 1411 1412- name: publish 1413 docker_swarm_service: 1414 name: "{{ service_name }}" 1415 image: "{{ docker_test_image_alpine }}" 1416 resolve_image: no 1417 command: '/bin/sh -v -c "sleep 10m"' 1418 publish: 1419 - protocol: tcp 1420 published_port: 60001 1421 target_port: 60001 1422 - protocol: udp 1423 published_port: 60002 1424 target_port: 60002 1425 register: publish_1 1426 ignore_errors: yes 1427 1428- name: publish (idempotency) 1429 docker_swarm_service: 1430 name: "{{ service_name }}" 1431 image: "{{ docker_test_image_alpine }}" 1432 resolve_image: no 1433 command: '/bin/sh -v -c "sleep 10m"' 1434 publish: 1435 - protocol: udp 1436 published_port: 60002 1437 target_port: 60002 1438 - published_port: 60001 1439 target_port: 60001 1440 register: publish_2 1441 ignore_errors: yes 1442 1443- name: publish (change) 1444 docker_swarm_service: 1445 name: "{{ service_name }}" 1446 image: "{{ docker_test_image_alpine }}" 1447 resolve_image: no 1448 command: '/bin/sh -v -c "sleep 10m"' 1449 publish: 1450 - protocol: tcp 1451 published_port: 60002 1452 target_port: 60003 1453 - protocol: udp 1454 published_port: 60001 1455 target_port: 60001 1456 register: publish_3 1457 ignore_errors: yes 1458 1459- name: publish (mode) 1460 docker_swarm_service: 1461 name: "{{ service_name }}" 1462 image: "{{ docker_test_image_alpine }}" 1463 resolve_image: no 1464 command: '/bin/sh -v -c "sleep 10m"' 1465 publish: 1466 - protocol: tcp 1467 published_port: 60002 1468 target_port: 60003 1469 mode: host 1470 - protocol: udp 1471 published_port: 60001 1472 target_port: 60001 1473 mode: host 1474 register: publish_4 1475 ignore_errors: yes 1476 1477- name: publish (mode idempotency) 1478 docker_swarm_service: 1479 name: "{{ service_name }}" 1480 image: "{{ docker_test_image_alpine }}" 1481 resolve_image: no 1482 command: '/bin/sh -v -c "sleep 10m"' 1483 publish: 1484 - protocol: udp 1485 published_port: 60001 1486 target_port: 60001 1487 mode: host 1488 - protocol: tcp 1489 published_port: 60002 1490 target_port: 60003 1491 mode: host 1492 register: publish_5 1493 ignore_errors: yes 1494 1495- name: publish (empty) 1496 docker_swarm_service: 1497 name: "{{ service_name }}" 1498 image: "{{ docker_test_image_alpine }}" 1499 resolve_image: no 1500 command: '/bin/sh -v -c "sleep 10m"' 1501 publish: [] 1502 register: publish_6 1503 ignore_errors: yes 1504 1505- name: publish (empty idempotency) 1506 docker_swarm_service: 1507 name: "{{ service_name }}" 1508 image: "{{ docker_test_image_alpine }}" 1509 resolve_image: no 1510 command: '/bin/sh -v -c "sleep 10m"' 1511 publish: [] 1512 register: publish_7 1513 ignore_errors: yes 1514 1515- name: publish (publishes the same port with both protocols) 1516 docker_swarm_service: 1517 name: "{{ service_name }}" 1518 image: "{{ docker_test_image_alpine }}" 1519 resolve_image: no 1520 command: '/bin/sh -v -c "sleep 10m"' 1521 publish: 1522 - protocol: udp 1523 published_port: 60001 1524 target_port: 60001 1525 mode: host 1526 - protocol: tcp 1527 published_port: 60001 1528 target_port: 60001 1529 mode: host 1530 register: publish_8 1531 ignore_errors: yes 1532- name: gather service info 1533 docker_swarm_service_info: 1534 name: "{{ service_name }}" 1535 register: publish_8_info 1536 1537- name: publish (without published_port) 1538 docker_swarm_service: 1539 name: "{{ service_name }}" 1540 image: "{{ docker_test_image_alpine }}" 1541 resolve_image: no 1542 command: '/bin/sh -v -c "sleep 10m"' 1543 publish: 1544 - protocol: udp 1545 target_port: 60001 1546 mode: host 1547 register: publish_9 1548 ignore_errors: yes 1549- name: gather service info 1550 docker_swarm_service_info: 1551 name: "{{ service_name }}" 1552 register: publish_9_info 1553 1554- name: publish (without published_port, idempotence) 1555 docker_swarm_service: 1556 name: "{{ service_name }}" 1557 image: "{{ docker_test_image_alpine }}" 1558 resolve_image: no 1559 command: '/bin/sh -v -c "sleep 10m"' 1560 publish: 1561 - protocol: udp 1562 target_port: 60001 1563 mode: host 1564 register: publish_10 1565 ignore_errors: yes 1566- name: gather service info 1567 docker_swarm_service_info: 1568 name: "{{ service_name }}" 1569 register: publish_10_info 1570 1571- name: cleanup 1572 docker_swarm_service: 1573 name: "{{ service_name }}" 1574 state: absent 1575 diff: no 1576 1577- assert: 1578 that: 1579 - publish_1 is changed 1580 - publish_2 is not changed 1581 - publish_3 is changed 1582 - publish_4 is changed 1583 - publish_5 is not changed 1584 - publish_6 is changed 1585 - publish_7 is not changed 1586 - publish_8 is changed 1587 - (publish_8_info.service.Endpoint.Ports | length) == 2 1588 - publish_9 is changed 1589 - publish_10 is not changed 1590 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('3.0.0', '>=') 1591- assert: 1592 that: 1593 - publish_1 is failed 1594 - "'Minimum version required' in publish_1.msg" 1595 when: docker_api_version is version('1.25', '<') or docker_py_version is version('3.0.0', '<') 1596 1597################################################################### 1598## read_only ###################################################### 1599################################################################### 1600 1601- name: read_only 1602 docker_swarm_service: 1603 name: "{{ service_name }}" 1604 image: "{{ docker_test_image_alpine }}" 1605 resolve_image: no 1606 command: '/bin/sh -v -c "sleep 10m"' 1607 read_only: true 1608 register: read_only_1 1609 ignore_errors: yes 1610 1611- name: read_only (idempotency) 1612 docker_swarm_service: 1613 name: "{{ service_name }}" 1614 image: "{{ docker_test_image_alpine }}" 1615 resolve_image: no 1616 command: '/bin/sh -v -c "sleep 10m"' 1617 read_only: true 1618 register: read_only_2 1619 ignore_errors: yes 1620 1621- name: read_only (change) 1622 docker_swarm_service: 1623 name: "{{ service_name }}" 1624 image: "{{ docker_test_image_alpine }}" 1625 resolve_image: no 1626 command: '/bin/sh -v -c "sleep 10m"' 1627 read_only: false 1628 register: read_only_3 1629 ignore_errors: yes 1630 1631- name: cleanup 1632 docker_swarm_service: 1633 name: "{{ service_name }}" 1634 state: absent 1635 diff: no 1636 1637- assert: 1638 that: 1639 - read_only_1 is changed 1640 - read_only_2 is not changed 1641 - read_only_3 is changed 1642 when: docker_api_version is version('1.28', '>=') and docker_py_version is version('2.6.0', '>=') 1643- assert: 1644 that: 1645 - read_only_1 is failed 1646 - "'Minimum version required' in read_only_1.msg" 1647 when: docker_api_version is version('1.28', '<') or docker_py_version is version('2.6.0', '<') 1648 1649################################################################### 1650## replicas ####################################################### 1651################################################################### 1652 1653- name: replicas 1654 docker_swarm_service: 1655 name: "{{ service_name }}" 1656 image: "{{ docker_test_image_alpine }}" 1657 resolve_image: no 1658 command: '/bin/sh -v -c "sleep 10m"' 1659 replicas: 2 1660 register: replicas_1 1661 1662- name: replicas (idempotency) 1663 docker_swarm_service: 1664 name: "{{ service_name }}" 1665 image: "{{ docker_test_image_alpine }}" 1666 resolve_image: no 1667 command: '/bin/sh -v -c "sleep 10m"' 1668 replicas: 2 1669 register: replicas_2 1670 1671- name: replicas (change) 1672 docker_swarm_service: 1673 name: "{{ service_name }}" 1674 image: "{{ docker_test_image_alpine }}" 1675 resolve_image: no 1676 command: '/bin/sh -v -c "sleep 10m"' 1677 replicas: 3 1678 register: replicas_3 1679 1680- name: cleanup 1681 docker_swarm_service: 1682 name: "{{ service_name }}" 1683 state: absent 1684 diff: no 1685 1686- assert: 1687 that: 1688 - replicas_1 is changed 1689 - replicas_2 is not changed 1690 - replicas_3 is changed 1691 1692################################################################### 1693# resolve_image ################################################### 1694################################################################### 1695 1696- name: resolve_image (false) 1697 docker_swarm_service: 1698 name: "{{ service_name }}" 1699 image: "{{ docker_test_image_alpine }}" 1700 command: '/bin/sh -v -c "sleep 10m"' 1701 resolve_image: false 1702 register: resolve_image_1 1703 1704- name: resolve_image (false idempotency) 1705 docker_swarm_service: 1706 name: "{{ service_name }}" 1707 image: "{{ docker_test_image_alpine }}" 1708 command: '/bin/sh -v -c "sleep 10m"' 1709 resolve_image: false 1710 register: resolve_image_2 1711 1712- name: resolve_image (change) 1713 docker_swarm_service: 1714 name: "{{ service_name }}" 1715 image: "{{ docker_test_image_alpine }}" 1716 command: '/bin/sh -v -c "sleep 10m"' 1717 resolve_image: true 1718 register: resolve_image_3 1719 ignore_errors: yes 1720 1721- name: cleanup 1722 docker_swarm_service: 1723 name: "{{ service_name }}" 1724 state: absent 1725 diff: no 1726 1727- assert: 1728 that: 1729 - resolve_image_1 is changed 1730 - resolve_image_2 is not changed 1731 - resolve_image_3 is changed 1732 when: docker_api_version is version('1.30', '>=') and docker_py_version is version('3.2.0', '>=') 1733- assert: 1734 that: 1735 - resolve_image_1 is changed 1736 - resolve_image_2 is not changed 1737 - resolve_image_3 is failed 1738 - "('version is ' ~ docker_py_version ~ ' ') in resolve_image_3.msg" 1739 - "'Minimum version required is 3.2.0 ' in resolve_image_3.msg" 1740 when: docker_api_version is version('1.30', '<') or docker_py_version is version('3.2.0', '<') 1741 1742################################################################### 1743# tty ############################################################# 1744################################################################### 1745 1746- name: tty 1747 docker_swarm_service: 1748 name: "{{ service_name }}" 1749 image: "{{ docker_test_image_alpine }}" 1750 resolve_image: no 1751 command: '/bin/sh -v -c "sleep 10m"' 1752 tty: yes 1753 register: tty_1 1754 ignore_errors: yes 1755 1756- name: tty (idempotency) 1757 docker_swarm_service: 1758 name: "{{ service_name }}" 1759 image: "{{ docker_test_image_alpine }}" 1760 resolve_image: no 1761 command: '/bin/sh -v -c "sleep 10m"' 1762 tty: yes 1763 register: tty_2 1764 ignore_errors: yes 1765 1766- name: tty (change) 1767 docker_swarm_service: 1768 name: "{{ service_name }}" 1769 image: "{{ docker_test_image_alpine }}" 1770 resolve_image: no 1771 command: '/bin/sh -v -c "sleep 10m"' 1772 tty: no 1773 register: tty_3 1774 ignore_errors: yes 1775 1776- name: cleanup 1777 docker_swarm_service: 1778 name: "{{ service_name }}" 1779 state: absent 1780 diff: no 1781 1782- assert: 1783 that: 1784 - tty_1 is changed 1785 - tty_2 is not changed 1786 - tty_3 is changed 1787 when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=') 1788- assert: 1789 that: 1790 - tty_1 is failed 1791 - "'Minimum version required' in tty_1.msg" 1792 when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<') 1793 1794################################################################### 1795## user ########################################################### 1796################################################################### 1797 1798- name: user 1799 docker_swarm_service: 1800 name: "{{ service_name }}" 1801 image: "{{ docker_test_image_alpine }}" 1802 resolve_image: no 1803 command: '/bin/sh -v -c "sleep 10m"' 1804 user: "operator" 1805 register: user_1 1806 1807- name: user (idempotency) 1808 docker_swarm_service: 1809 name: "{{ service_name }}" 1810 image: "{{ docker_test_image_alpine }}" 1811 resolve_image: no 1812 command: '/bin/sh -v -c "sleep 10m"' 1813 user: "operator" 1814 register: user_2 1815 1816- name: user (change) 1817 docker_swarm_service: 1818 name: "{{ service_name }}" 1819 image: "{{ docker_test_image_alpine }}" 1820 resolve_image: no 1821 command: '/bin/sh -v -c "sleep 10m"' 1822 user: "root" 1823 register: user_3 1824 1825- name: cleanup 1826 docker_swarm_service: 1827 name: "{{ service_name }}" 1828 state: absent 1829 diff: no 1830 1831- assert: 1832 that: 1833 - user_1 is changed 1834 - user_2 is not changed 1835 - user_3 is changed 1836 1837#################################################################### 1838## working_dir ##################################################### 1839#################################################################### 1840 1841- name: working_dir 1842 docker_swarm_service: 1843 name: "{{ service_name }}" 1844 image: "{{ docker_test_image_alpine }}" 1845 resolve_image: no 1846 working_dir: /tmp 1847 register: working_dir_1 1848 1849- name: working_dir (idempotency) 1850 docker_swarm_service: 1851 name: "{{ service_name }}" 1852 image: "{{ docker_test_image_alpine }}" 1853 resolve_image: no 1854 working_dir: /tmp 1855 register: working_dir_2 1856 1857- name: working_dir (change) 1858 docker_swarm_service: 1859 name: "{{ service_name }}" 1860 image: "{{ docker_test_image_alpine }}" 1861 resolve_image: no 1862 working_dir: / 1863 register: working_dir_3 1864 1865- name: cleanup 1866 docker_swarm_service: 1867 name: "{{ service_name }}" 1868 state: absent 1869 diff: no 1870 1871- assert: 1872 that: 1873 - working_dir_1 is changed 1874 - working_dir_2 is not changed 1875 - working_dir_3 is changed 1876 1877#################################################################### 1878## init ############################################################ 1879#################################################################### 1880 1881- name: init 1882 docker_swarm_service: 1883 name: "{{ service_name }}" 1884 image: "{{ docker_test_image_alpine }}" 1885 resolve_image: no 1886 init: true 1887 register: init_1 1888 1889- name: init (idempotency) 1890 docker_swarm_service: 1891 name: "{{ service_name }}" 1892 image: "{{ docker_test_image_alpine }}" 1893 resolve_image: no 1894 init: true 1895 register: init_2 1896 1897- name: init (change) 1898 docker_swarm_service: 1899 name: "{{ service_name }}" 1900 image: "{{ docker_test_image_alpine }}" 1901 resolve_image: no 1902 init: false 1903 register: init_3 1904 1905- name: cleanup 1906 docker_swarm_service: 1907 name: "{{ service_name }}" 1908 state: absent 1909 diff: no 1910 1911- assert: 1912 that: 1913 - init_1 is changed 1914 - init_2 is not changed 1915 - init_3 is changed 1916 when: docker_api_version is version('1.37', '>=') 1917 1918- assert: 1919 that: 1920 - init_1 is failed 1921 - "('version is ' ~ docker_api_version ~'. Minimum version required is 1.37') in hosts_1.msg" 1922 when: docker_api_version is version('1.37', '<') 1923