devops/playbook/moveDockerFile.yml
2025-12-12 11:40:38 +08:00

79 lines
2.0 KiB
YAML

---
- name: Move Docker data-root to /data/docker
hosts: google-sdk
become: true
vars:
new_docker_root: /data/docker
old_docker_root: /var/lib/docker
tasks:
- name: Ensure rsync installed
package:
name: rsync
state: present
- name: Stop Docker service
service:
name: docker
state: stopped
ignore_errors: true
- name: Create new data root
file:
path: "{{ new_docker_root }}"
state: directory
mode: '0755'
- name: Check old docker root exists
stat:
path: "{{ old_docker_root }}"
register: old_docker_root_stat
- name: Sync old data to new root (if old exists)
command: rsync -aHAX --numeric-ids --delete {{ old_docker_root }}/ {{ new_docker_root }}/
when: old_docker_root_stat.stat.exists
args:
warn: false
- name: Backup old directory
command: mv {{ old_docker_root }} {{ old_docker_root }}.bak
args:
creates: "{{ old_docker_root }}.bak"
when: old_docker_root_stat.stat.exists
- name: Ensure /etc/docker exists
file:
path: /etc/docker
state: directory
mode: '0755'
- name: Write daemon.json
copy:
dest: /etc/docker/daemon.json
mode: '0644'
content: |
{
"data-root": "{{ new_docker_root }}",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
- name: Start Docker
service:
name: docker
state: started
enabled: true
- name: Verify root dir
command: docker info --format '{% raw %}{{json .DockerRootDir}}{% endraw %}'
register: docker_root
changed_when: false
- name: Show result
debug:
msg: "DockerRootDir = {{ docker_root.stdout }}"
- name: Fail if not moved
fail:
msg: "迁移失败,当前仍是旧目录"
when: docker_root.stdout.find(new_docker_root) == -1