main.yml 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. - docker_container:
  2. name: '{{ mysqldump_sshd_container_name }}'
  3. image: '{{ mysqldump_sshd_container_image }}'
  4. env:
  5. SSH_CLIENT_PUBLIC_KEYS: '{{ mysqldump_sshd_client_public_keys }}'
  6. MYSQLDUMP_ARGS: '{{ mysqldump_sshd_mysqldump_args }}'
  7. read_only: yes
  8. mounts:
  9. - type: volume
  10. source: '{{ mysqldump_sshd_container_name }}_host_keys'
  11. target: /etc/ssh/host_keys
  12. read_only: no
  13. - type: tmpfs
  14. target: /home/dump/.ssh # authorized_keys
  15. tmpfs_size: 16k
  16. # > Fails in subsequent container starts.
  17. # https://github.com/moby/moby/issues/20437
  18. tmpfs_mode: '1777'
  19. networks: [name: '{{ mysqldump_sshd_network_name }}']
  20. purge_networks: yes
  21. published_ports: ['0.0.0.0:{{ mysqldump_sshd_published_port }}:2200']
  22. cap_drop: [ALL]
  23. security_opts: [no-new-privileges]
  24. cpu_quota: 2000
  25. cpu_period: 10000
  26. memory: 64M
  27. restart_policy: unless-stopped
  28. state: started
  29. register: _container
  30. - name: wait for host keys
  31. wait_for:
  32. path: >-
  33. {{ (_container.container.Mounts
  34. | items2dict(key_name='Destination', value_name='Source'))
  35. ['/etc/ssh/host_keys'] }}/{{ item }}.pub
  36. loop: [rsa, ed25519]
  37. register: _host_keys_files
  38. - name: read host keys
  39. slurp:
  40. src: '{{ item }}'
  41. loop: "{{ _host_keys_files.results | map(attribute='path') | list }}"
  42. register: _host_keys_base64
  43. - name: decode host keys
  44. set_fact:
  45. mysqldump_sshd_host_keys: >-
  46. {{ _host_keys_base64.results | map(attribute='content') | map('b64decode') | map('trim') | list }}