79 lines
2.0 KiB
YAML
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 |