diff options
author | Matt Woodson <mwoodson@gmail.com> | 2016-02-29 14:44:03 -0500 |
---|---|---|
committer | Matt Woodson <mwoodson@gmail.com> | 2016-02-29 14:44:03 -0500 |
commit | fadad1f7e1934ab5542eae320af6fdaca7024479 (patch) | |
tree | 649640656ac26c2acc5df75b37c44b6a08c4fd87 | |
parent | c1f8ef6cb5694d1f014b3428311c0aabe6e718b5 (diff) | |
parent | fb6729d41ff81c19dd79709ad77aaac11df6c711 (diff) | |
download | openshift-fadad1f7e1934ab5542eae320af6fdaca7024479.tar.gz openshift-fadad1f7e1934ab5542eae320af6fdaca7024479.tar.bz2 openshift-fadad1f7e1934ab5542eae320af6fdaca7024479.tar.xz openshift-fadad1f7e1934ab5542eae320af6fdaca7024479.zip |
Merge pull request #1521 from mwoodson/docker_lvm
role: added docker_storage_setup
-rw-r--r-- | roles/docker_storage/README.md | 39 | ||||
-rw-r--r-- | roles/docker_storage/defaults/main.yml | 1 | ||||
-rw-r--r-- | roles/docker_storage/handlers/main.yml | 1 | ||||
-rw-r--r-- | roles/docker_storage/meta/main.yml | 9 | ||||
-rw-r--r-- | roles/docker_storage/tasks/main.yml | 37 | ||||
-rw-r--r-- | roles/docker_storage/vars/main.yml | 1 | ||||
-rw-r--r-- | roles/docker_storage_setup/README.md | 42 | ||||
-rw-r--r-- | roles/docker_storage_setup/defaults/main.yml | 2 | ||||
-rwxr-xr-x | roles/docker_storage_setup/tasks/main.yml | 95 |
9 files changed, 139 insertions, 88 deletions
diff --git a/roles/docker_storage/README.md b/roles/docker_storage/README.md deleted file mode 100644 index bf0158623..000000000 --- a/roles/docker_storage/README.md +++ /dev/null @@ -1,39 +0,0 @@ -docker_storage -========= - -Configure docker_storage options ------------- - -None - -Role Variables --------------- - -None - -Dependencies ------------- - -None - -Example Playbook ----------------- - -Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: - - - hosts: servers - roles: - - { role/docker_storage: - - key: df.fs - value: xfs - } - -License -------- - -ASL 2.0 - -Author Information ------------------- - -OpenShift operations, Red Hat, Inc diff --git a/roles/docker_storage/defaults/main.yml b/roles/docker_storage/defaults/main.yml deleted file mode 100644 index ed97d539c..000000000 --- a/roles/docker_storage/defaults/main.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/roles/docker_storage/handlers/main.yml b/roles/docker_storage/handlers/main.yml deleted file mode 100644 index ed97d539c..000000000 --- a/roles/docker_storage/handlers/main.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/roles/docker_storage/meta/main.yml b/roles/docker_storage/meta/main.yml deleted file mode 100644 index f5b2d53cb..000000000 --- a/roles/docker_storage/meta/main.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -galaxy_info: - author: OpenShift - description: Setup docker_storage options - company: Red Hat, Inc - license: ASL 2.0 - min_ansible_version: 1.2 -dependencies: -- docker diff --git a/roles/docker_storage/tasks/main.yml b/roles/docker_storage/tasks/main.yml deleted file mode 100644 index 48a3fc208..000000000 --- a/roles/docker_storage/tasks/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -- lvg: - pvs: "{{ dst_device }}" - vg: "{{ dst_vg }}" - register: dst_lvg - -- lvol: - lv: data - vg: "{{ dst_vg }}" - size: 95%VG - register: dst_lvol_data - -- lvol: - lv: metadata - vg: "{{ dst_vg }}" - size: 5%VG - register: dst_lvol_metadata - - -- name: Update docker_storage options - lineinfile: - dest: /etc/sysconfig/docker-storage - backrefs: yes - regexp: "^(DOCKER_STORAGE_OPTIONS=)" - line: '\1 --storage-opt {{ dst_options | oo_combine_key_value("=") | join(" --storage-opt ") }}' - when: dst_options is defined and dst_options | length > 0 - register: dst_config - - -- name: Reload systemd units - command: systemctl daemon-reload - notify: - - restart docker - when: dst_config | changed or - dst_lvg | changed or - dst_lvol_data | changed or - dst_lvol_metadata | changed diff --git a/roles/docker_storage/vars/main.yml b/roles/docker_storage/vars/main.yml deleted file mode 100644 index ed97d539c..000000000 --- a/roles/docker_storage/vars/main.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/roles/docker_storage_setup/README.md b/roles/docker_storage_setup/README.md new file mode 100644 index 000000000..6039b349a --- /dev/null +++ b/roles/docker_storage_setup/README.md @@ -0,0 +1,42 @@ +docker_storage_setup +========= +This role coverts docker to go from loopback to direct-lvm (the Red Hat recommended way to run docker). + +It requires the block device to be already provisioned and attached to the host. + + Notes: + * This is NOT idempotent. Conversion needs to be done for it to be idempotent + * This will remove /var/lib/docker! + * You will need to re-deploy docker images + +Configure docker_storage_setup +------------ + +None + +Role Variables +-------------- + +dss_docker_device: defaults to /dev/xvdb + +Dependencies +------------ + +None + +Example Playbook +---------------- + + - hosts: servers + roles: + - { role/docker_storage_setup, dss_docker_device: '/dev/xvdb' } + +License +------- + +ASL 2.0 + +Author Information +------------------ + +OpenShift operations, Red Hat, Inc diff --git a/roles/docker_storage_setup/defaults/main.yml b/roles/docker_storage_setup/defaults/main.yml new file mode 100644 index 000000000..5013aba97 --- /dev/null +++ b/roles/docker_storage_setup/defaults/main.yml @@ -0,0 +1,2 @@ +--- +dss_docker_device: /dev/xvdb diff --git a/roles/docker_storage_setup/tasks/main.yml b/roles/docker_storage_setup/tasks/main.yml new file mode 100755 index 000000000..8af9bbe1e --- /dev/null +++ b/roles/docker_storage_setup/tasks/main.yml @@ -0,0 +1,95 @@ +--- +- name: Ensure docker is installed + action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" + with_items: + - docker + +# Docker doesn't seem to start cleanly the first time run +# when loopback (not directlvm) is configured. Putting in an +# ignore errors, and then sleeping till it can come up cleanly +- name: Try to start docker. This might fail (loopback startup issue) + service: + name: docker + state: started + ignore_errors: yes + +- name: Pause for 1 minute + pause: + seconds: 30 + +- name: Ensure docker is started + service: + name: docker + state: started + +- name: Determine if loopback + shell: docker info | grep 'Data file:.*loop' + register: loop_device_check + ignore_errors: yes + +- debug: + var: loop_device_check + +- name: fail if we don't detect loopback + fail: + msg: loopback not detected! Please investigate manually. + when: loop_device_check.rc == 1 + +- name: "check to see if {{ dss_docker_device }} exists" + command: "test -e {{ dss_docker_device }}" + register: docker_dev_check + ignore_errors: yes + +- debug: var=docker_dev_check + +- name: "fail if {{ dss_docker_device }} doesn't exist" + fail: + msg: "{{ dss_docker_device }} doesn't exist. Please investigate" + when: docker_dev_check.rc != 0 + +- name: stop docker + service: + name: docker + state: stopped + +- name: delete /var/lib/docker + command: rm -rf /var/lib/docker + +- name: remove /var/lib/docker + command: rm -rf /var/lib/docker + +- name: copy the docker-storage-setup config file + copy: + content: > + DEVS={{ dss_docker_device }}\n + VG=docker_vg + dest: /etc/sysconfig/docker-storage-setup + owner: root + group: root + mode: 0664 + +- name: docker storage setup + command: docker-storage-setup + register: docker_storage_setup_output + +- debug: + msg: "{{ docker_storage_setup_output }}" + +- name: extend the vg + command: lvextend -l 90%VG /dev/docker_vg/docker-pool + register: lvextend_output + +- debug: + msg: "{{ lvextend_output }}" + +- name: start docker + service: + name: docker + state: restarted + +- name: docker info + command: docker info + register: dockerinfo + +- debug: + msg: "{{ dockerinfo }}" |