Repos with recipes to deploy some infrastructure services
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

64 lignes
2.4 KiB

  1. ---
  2. - name: Create
  3. hosts: localhost
  4. connection: local
  5. gather_facts: False
  6. vars_files:
  7. - vars/molecule.yml
  8. tasks:
  9. - set_fact:
  10. molecule_service_instances: "{{ molecule_yml.platforms | selectattr('is_service', 'defined') | selectattr('is_service') | list }}"
  11. - set_fact:
  12. molecule_platform_instances: "{{ molecule_yml.platforms | difference(molecule_service_instances) }}"
  13. - name: Create Dockerfiles from image names
  14. template:
  15. src: "Dockerfile.{{ item.dockerfile_tpl | default('default') }}.j2"
  16. dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}"
  17. with_items: "{{ molecule_platform_instances }}"
  18. register: platforms
  19. - name: Discover local Docker images
  20. docker_image_facts:
  21. name: "molecule_pdns/{{ item.item.name }}"
  22. with_items: "{{ platforms.results }}"
  23. register: docker_images
  24. - name: Build an Ansible compatible image
  25. docker_image:
  26. path: "{{ molecule_ephemeral_directory }}"
  27. name: "molecule_pdns/{{ item.item.image }}"
  28. dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
  29. force: "{{ item.item.force | default(True) }}"
  30. with_items: "{{ platforms.results }}"
  31. when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0
  32. - name: Create molecule instance(s)
  33. docker_container:
  34. name: "{{ item.name }}"
  35. hostname: "{{ item.name }}"
  36. image: "{{ item.image }}"
  37. state: started
  38. recreate: False
  39. env: "{{ item.env | default(omit) }}"
  40. privileged: "no"
  41. volumes: "{{ item.volumes | default(omit) }}"
  42. with_items: "{{ molecule_service_instances }}"
  43. - name: Create the required Services instance(s)
  44. docker_container:
  45. name: "{{ item.name }}"
  46. hostname: "{{ item.name }}"
  47. image: "molecule_pdns/{{ item.image }}"
  48. links: "{{ molecule_service_instances | map(attribute='name') | list }}"
  49. command: "{{ item.command | default(omit) }}"
  50. state: started
  51. recreate: False
  52. privileged: "yes"
  53. volumes:
  54. # Mount the cgroups fs to allow SystemD to run into the containers
  55. - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
  56. with_items: "{{ molecule_platform_instances }}"