]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
Allow running on local dev docker images 804/head
authorDaniel Gryniewicz <dang@redhat.com>
Thu, 24 Mar 2016 13:21:07 +0000 (09:21 -0400)
committerDaniel Gryniewicz <dang@redhat.com>
Fri, 3 Jun 2016 18:52:21 +0000 (14:52 -0400)
Docker makes it difficult to use images that are not on signed
registries.  This is a problem for developers, who likely won't have
access to a registry with proper signed certificates.

This allows the ability to use any docker image on the machine running
vagrant/ansible.  The way it works is that the image in question is
exported locally, then sent to each target box and imported there.

Signed-off-by: Daniel Gryniewicz <dang@redhat.com>
12 files changed:
group_vars/all.docker.sample
roles/ceph-common/tasks/docker/fetch_image.yml [new file with mode: 0644]
roles/ceph-mds/tasks/docker/dirs_permissions.yml
roles/ceph-mds/tasks/docker/main.yml
roles/ceph-mon/tasks/docker/dirs_permissions.yml
roles/ceph-mon/tasks/docker/main.yml
roles/ceph-mon/tasks/docker/start_docker_monitor.yml
roles/ceph-osd/tasks/docker/dirs_permissions.yml
roles/ceph-osd/tasks/docker/main.yml
roles/ceph-restapi/tasks/docker/main.yml
roles/ceph-rgw/tasks/docker/dirs_permissions.yml
roles/ceph-rgw/tasks/docker/main.yml

index fb434a3116aeb16011cc9ebfafa0e612be123344..42c0f4d14414cc9d427555efce09e6796dc2867f 100644 (file)
@@ -1,6 +1,11 @@
 ---
 dummy:
 
+##########
+# GLOBAL #
+##########
+#ceph_docker_dev_image: false
+
 #######
 # MON #
 #######
diff --git a/roles/ceph-common/tasks/docker/fetch_image.yml b/roles/ceph-common/tasks/docker/fetch_image.yml
new file mode 100644 (file)
index 0000000..2eb8a6d
--- /dev/null
@@ -0,0 +1,27 @@
+---
+# Normal case - pull image from registry
+- name: pull ceph daemon image
+  command: "docker pull {{ ceph_docker_username }}/{{ ceph_docker_imagename }}"
+  changed_when: false
+  failed_when: false
+  when: ceph_docker_dev_image is undefined or not ceph_docker_dev_image
+
+# Dev case - export local dev image and send it across
+- name: export local ceph dev image
+  local_action: command docker save -o "/tmp/{{ ceph_docker_username }}-{{ ceph_docker_imagename }}.tar" "{{ ceph_docker_username }}/{{ ceph_docker_imagename }}"
+  when: ceph_docker_dev_image is defined and ceph_docker_dev_image
+  run_once: true
+
+- name: copy ceph dev image file
+  copy:
+    src: "/tmp/{{ ceph_docker_username }}-{{ ceph_docker_imagename }}.tar"
+    dest: "/tmp/{{ ceph_docker_username }}-{{ ceph_docker_imagename }}.tar"
+  when: ceph_docker_dev_image is defined and ceph_docker_dev_image
+
+- name: load ceph dev image
+  command: "docker load -i /tmp/{{ ceph_docker_username }}-{{ ceph_docker_imagename }}.tar"
+  when: ceph_docker_dev_image is defined and ceph_docker_dev_image
+
+- name: remove tmp ceph dev image file
+  command: "rm /tmp/{{ ceph_docker_username }}-{{ ceph_docker_imagename }}.tar"
+  when: ceph_docker_dev_image is defined and ceph_docker_dev_image
index a2cb52d83589d4f5257f2f3277fa974f54ea4a22..fcf4e5423ea6112c2b182391f710f26e9ef9079b 100644 (file)
@@ -1,9 +1,4 @@
 ---
-- name: pull ceph daemon image
-  shell: "docker pull {{ ceph_mds_docker_username }}/{{ ceph_mds_docker_imagename }}"
-  changed_when: false
-  failed_when: false
-
 # NOTE (leseb): we can not use docker inspect with 'format filed' because of
 # https://github.com/ansible/ansible/issues/10156
 - name: inspect ceph version
index c867db8d3e07886fb8595d86b6db94af1577cd63..d5d12167596ddbdf3314ba8aa2bfb3da8438ef19 100644 (file)
@@ -9,6 +9,10 @@
   when: ceph_health.rc != 0
 
 - include: pre_requisite.yml
+- include: "{{ playbook_dir }}/roles/ceph-common/tasks/docker/fetch_image.yml"
+  vars:
+    ceph_docker_username: '{{ ceph_mds_docker_username}}'
+    ceph_docker_imagename: '{{ ceph_mds_docker_imagename}}'
 - include: dirs_permissions.yml
 - include: fetch_configs.yml
 
index 99f1e9a4fcb368f0d5f5f2aeabc03b191e618a0b..7a9e83e8a68ee6bb74af4afdae4f4a460db4df13 100644 (file)
@@ -1,9 +1,4 @@
 ---
-- name: pull ceph daemon image
-  shell: "docker pull {{ ceph_mon_docker_username }}/{{ ceph_mon_docker_imagename }}"
-  changed_when: false
-  failed_when: false
-
 # NOTE (leseb): we can not use docker inspect with 'format filed' because of
 # https://github.com/ansible/ansible/issues/10156
 - name: inspect ceph version
index c0dc3f21af0cfed6ededde877af4597a9d438e07..b7b1931e1911c8f3d7bc2dd67aab2071f2416220 100644 (file)
@@ -1,6 +1,6 @@
 ---
 - name: check if a cluster is already running
-  shell: "docker ps | grep -sq 'ceph/daemon'"
+  shell: "docker ps | grep -sq '{{ceph_mon_docker_username}}/{{ceph_mon_docker_imagename}}'"
   register: ceph_health
   changed_when: false
   failed_when: false
 
 - include: pre_requisite.yml
 
+- include: "{{ playbook_dir }}/roles/ceph-common/tasks/docker/fetch_image.yml"
+  vars:
+    ceph_docker_username: '{{ ceph_mon_docker_username}}'
+    ceph_docker_imagename: '{{ ceph_mon_docker_imagename}}'
+
 - include: dirs_permissions.yml
 
 # let the first mon create configs and keyrings
index 4e855815a316ef246877b71c955e058b73bcf898..f2d472073ff4214def9113ed4d36d01aab1bad48 100644 (file)
@@ -90,7 +90,7 @@
     net: "host"
     state: "running"
     privileged: "{{ mon_docker_privileged }}"
-    env: "MON_IP={{ hostvars[inventory_hostname]['ansible_' + ceph_mon_docker_interface]['ipv4']['address'] }},CEPH_DAEMON=MON,CEPH_PUBLIC_NETWORK={{ ceph_mon_docker_subnet }},{{ ceph_mon_extra_envs }}"
+    env: "MON_IP={{ hostvars[inventory_hostname]['ansible_' + ceph_mon_docker_interface]['ipv4']['address'] }},CEPH_DAEMON=MON,CEPH_PUBLIC_NETWORK={{ ceph_mon_docker_subnet }},CEPH_FSID={{ fsid }},{{ ceph_mon_extra_envs }}"
     volumes: "/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
   when:
     - not is_atomic
index 47cf866c28ce619e8548c3c00b2c98affbc2ea51..4c14f15563c81f4b4b3d9400881e4f7bfd4b4418 100644 (file)
@@ -1,9 +1,4 @@
 ---
-- name: pull ceph daemon image
-  shell: "docker pull {{ ceph_osd_docker_username }}/{{ ceph_osd_docker_imagename }}"
-  changed_when: false
-  failed_when: false
-
 # NOTE (leseb): we can not use docker inspect with 'format filed' because of
 # https://github.com/ansible/ansible/issues/10156
 - name: inspect ceph version
index 3aaceb7abcaebd592b5f84ac365bf924c2f81603..f7fbc0686193aaf6e621d5cfeba52c67fd5779a2 100644 (file)
 
 - include: pre_requisite.yml
 
+- include: "{{ playbook_dir }}/roles/ceph-common/tasks/docker/fetch_image.yml"
+  vars:
+    ceph_docker_username: '{{ ceph_osd_docker_username}}'
+    ceph_docker_imagename: '{{ ceph_osd_docker_imagename}}'
+
 # NOTE (jimcurtis): dirs_permissions.yml must precede fetch_configs.yml
 # because it creates the directories needed by the latter.
 - include: dirs_permissions.yml
index 6b1488474ed60bf54cabacba033a89fecaf3e11e..a46bcd5bcfea3e6c0137ec3897ed0c6dbb6e29bd 100644 (file)
@@ -1,5 +1,9 @@
 ---
 - include: pre_requisite.yml
+- include: "{{ playbook_dir }}/roles/ceph-common/tasks/docker/fetch_image.yml"
+  vars:
+    ceph_docker_username: '{{ ceph_restapi_docker_username}}'
+    ceph_docker_imagename: '{{ ceph_restapi_docker_imagename}}'
 - include: dirs_permissions.yml
 - include: fetch_configs.yml
 - include: start_docker_restapi.yml
index ffee60bc3b65559edb73944e2d9050495e2d7349..52d2adde837d82032f438dad1e4567132c07dbb1 100644 (file)
@@ -1,9 +1,4 @@
 ---
-- name: pull ceph daemon image
-  shell: "docker pull {{ ceph_rgw_docker_username }}/{{ ceph_rgw_docker_imagename }}"
-  changed_when: false
-  failed_when: false
-
 # NOTE (leseb): we can not use docker inspect with 'format filed' because of
 # https://github.com/ansible/ansible/issues/10156
 - name: inspect ceph version
index 7769b2a1651923bde5368a91261fed2e71a05475..b49adba111f1aed3ddf7527e621ffae53e42b3dc 100644 (file)
@@ -9,6 +9,10 @@
   when: ceph_health.rc != 0
 
 - include: pre_requisite.yml
+- include: "{{ playbook_dir }}/roles/ceph-common/tasks/docker/fetch_image.yml"
+  vars:
+    ceph_docker_username: '{{ ceph_rgw_docker_username}}'
+    ceph_docker_imagename: '{{ ceph_rgw_docker_imagename}}'
 - include: dirs_permissions.yml
 # NOTE (jimcurtis): dirs_permissions.yml must precede fetch_configs.yml
 # because it creates the directories needed by the latter.