vps/roles/dockerd/tasks/main.yml

63 lines
2 KiB
YAML

- name: Make sure required packages are installed
apt:
name:
- docker.io
- docker-compose
- rootlesskit
- slirp4netns
- uidmap
become: true
- name: Make sure system-wide Docker daemon is stopped & disabled
service:
name: docker
state: stopped
enabled: false
become: true
- name: Make sure system-wide Docker socket is stopped & disabled
service:
name: docker.socket
state: stopped
enabled: false
become: true
- name: Run dockerd-rootless-setuptool.sh script
command:
cmd: /usr/share/docker.io/contrib/dockerd-rootless-setuptool.sh install
- name: Make sure /usr/share/docker.io/contrib is in PATH variable
lineinfile:
path: "{{ ansible_env['HOME'] }}/.profile"
regex: '^export PATH="/usr/share/docker\.io/contrib'
line: 'export PATH="/usr/share/docker.io/contrib:$PATH"'
- name: Make sure DOCKER_HOST variable is set correctly
lineinfile:
path: "{{ ansible_env['HOME'] }}/.profile"
regex: '^export DOCKER_HOST='
line: "export DOCKER_HOST=unix:///run/user/{{ host_uid }}/docker.sock"
- name: "Make sure lingering is enabled for user {{ ansible_env['USER'] }}"
command:
cmd: "loginctl enable-linger {{ ansible_env['USER'] }}"
become: true
- name: "Create directory {{ ansible_env['HOME'] }}/.config/systemd/user/docker.service.d to override environment variables"
file:
path: "{{ ansible_env['HOME'] }}/.config/systemd/user/docker.service.d"
state: directory
- name: Add environment variables to Docker user service to use slirp4netns RootlessKit port driver, which enables source IP propagation
copy:
dest: "{{ ansible_env['HOME'] }}/.config/systemd/user/docker.service.d/override.conf"
content: |
[Service]
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_NET=slirp4netns"
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns"
- name: Start/restart & enable Docker user service
service:
name: docker
state: restarted
enabled: true