main.yml 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. tmpfs_mode: '1777'
  17. networks: [name: '{{ mysqldump_sshd_network_name }}']
  18. purge_networks: yes
  19. published_ports: ['0.0.0.0:{{ mysqldump_sshd_published_port }}:2200']
  20. cap_drop: [ALL]
  21. security_opts: [no-new-privileges]
  22. cpu_quota: 2000
  23. cpu_period: 10000
  24. memory: 64M
  25. restart_policy: unless-stopped
  26. state: started
  27. register: _container
  28. - name: wait for host keys
  29. wait_for:
  30. path: >-
  31. {{ (_container.container.Mounts
  32. | items2dict(key_name='Destination', value_name='Source'))
  33. ['/etc/ssh/host_keys'] }}/{{ item }}.pub
  34. loop: [rsa, ed25519]
  35. register: _host_keys_files
  36. - name: read host keys
  37. slurp:
  38. src: '{{ item }}'
  39. loop: "{{ _host_keys_files.results | map(attribute='path') | list }}"
  40. register: _host_keys_base64
  41. - name: decode host keys
  42. set_fact:
  43. mysqldump_sshd_host_keys: >-
  44. {{ _host_keys_base64.results | map(attribute='content') | map('b64decode') | map('trim') | list }}