]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
docker: enable rgw container on Atomic host environment
authorJim Curtis <jim.curtis@redhat.com>
Tue, 31 May 2016 19:59:05 +0000 (12:59 -0700)
committerJim Curtis <jim.curtis@redhat.com>
Tue, 31 May 2016 19:59:05 +0000 (12:59 -0700)
group_vars/all.docker.sample
roles/ceph-rgw/tasks/docker/main.yml
roles/ceph-rgw/tasks/docker/start_docker_rgw.yml
roles/ceph-rgw/templates/ceph-rgw.service.j2 [new file with mode: 0644]

index fb434a3116aeb16011cc9ebfafa0e612be123344..ae1e17242edf47b5139a75886a05f311fff13e68 100644 (file)
@@ -44,6 +44,9 @@ dummy:
 # RGW #
 #######
 #rgw_containerized_deployment: true
+#rgw_containerized_deployment_with_kv: false
+#kv_type: etcd
+#kv_endpoint: 127.0.0.1
 #ceph_rgw_docker_username: ceph
 #ceph_rgw_docker_imagename: daemon
 #ceph_rgw_civetweb_port: 80
index 7769b2a1651923bde5368a91261fed2e71a05475..2212e406c4b043af11b4c11dd7c08bc0b4110d3a 100644 (file)
@@ -5,6 +5,14 @@
   changed_when: false
   failed_when: false
 
+- name: check if it is Atomic host
+  stat: path=/run/ostree-booted
+  register: stat_ostree
+
+- name: set fact for using Atomic host
+  set_fact:
+      is_atomic='{{ stat_ostree.stat.exists }}'
+
 - include: checks.yml
   when: ceph_health.rc != 0
 
index f4fa89a6ddc420141469c916ca4aed2d1cb552fc..dffa83e36d2758b54f8cc6dd0b24e694757a926a 100644 (file)
@@ -1,4 +1,52 @@
 ---
+# Use systemd to manage container on Atomic host
+- name: generate systemd unit file
+  become: true
+  template:
+    src: "{{ playbook_dir }}/roles/ceph-rgw/templates/ceph-rgw.service.j2"
+    dest: /var/lib/ceph/ceph-rgw@.service
+    owner: "root"
+    group: "root"
+    mode: "0644"
+  when:
+    is_atomic or
+    ansible_os_family == 'CoreOS'
+
+- name: link systemd unit file for rgw instance
+  file:
+    src: /var/lib/ceph/ceph-rgw@.service
+    dest: /etc/systemd/system/multi-user.target.wants/ceph-rgw@{{ ansible_hostname }}.service
+    state: link
+  when:
+    is_atomic or
+    ansible_os_family == 'CoreOS'
+
+- name: enable systemd unit file for rgw instance
+  shell: systemctl enable /etc/systemd/system/multi-user.target.wants/ceph-rgw@{{ ansible_hostname }}.service
+  failed_when: false
+  changed_when: false
+  when:
+    is_atomic or
+    ansible_os_family == 'CoreOS'
+
+- name: reload systemd unit files
+  shell: systemctl daemon-reload
+  changed_when: false
+  failed_when: false
+  when:
+    is_atomic or
+    ansible_os_family == 'CoreOS'
+
+- name: systemd start rgw container
+  service:
+    name: ceph-rgw@{{ ansible_hostname }}
+    state: started
+    enabled: yes
+  changed_when: false
+  when:
+    is_atomic or
+    ansible_os_family == 'CoreOS'
+
 - name: run the rados gateway docker image
   docker:
     image: "{{ ceph_rgw_docker_username }}/{{ ceph_rgw_docker_imagename }}"
@@ -8,3 +56,6 @@
     state: running
     env: "CEPH_DAEMON=RGW,{{ ceph_rgw_docker_extra_env }}"
     volumes: "/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
+  when:
+    not is_atomic and
+    ansible_os_family != 'CoreOS'
diff --git a/roles/ceph-rgw/templates/ceph-rgw.service.j2 b/roles/ceph-rgw/templates/ceph-rgw.service.j2
new file mode 100644 (file)
index 0000000..e7115e4
--- /dev/null
@@ -0,0 +1,28 @@
+[Unit]
+Description=Ceph RGW
+After=docker.service
+
+[Service]
+EnvironmentFile=-/etc/environment
+ExecStartPre=-/usr/bin/docker stop {{ ansible_hostname }}
+ExecStartPre=-/usr/bin/docker rm {{ ansible_hostname }}
+ExecStart=/usr/bin/docker run --rm --net=host \
+   {% if not rgw_containerized_deployment_with_kv -%}
+   -v /var/lib/ceph:/var/lib/ceph \
+   -v /etc/ceph:/etc/ceph \
+   {% else -%}
+   -e KV_TYPE={{kv_type}} \
+   -e KV_IP={{kv_endpoint}} \
+   {% endif -%}
+   --privileged \
+   -e CEPH_DAEMON=RGW \
+   --name={{ ansible_hostname }} \
+   {{ ceph_rgw_docker_username }}/{{ ceph_rgw_docker_imagename }}
+ExecStopPost=-/usr/bin/docker stop {{ ansible_hostname }}
+Restart=always
+RestartSec=10s
+TimeoutStartSec=120
+TimeoutStopSec=15
+
+[Install]
+WantedBy=multi-user.target