]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
start osd daemon via systemd if supported
authorHuamin Chen <hchen@redhat.com>
Tue, 9 Feb 2016 17:35:41 +0000 (17:35 +0000)
committerSébastien Han <seb@redhat.com>
Thu, 24 Mar 2016 15:16:27 +0000 (16:16 +0100)
Signed-off-by: Huamin Chen <hchen@redhat.com>
roles/ceph-mon/tasks/templates/ceph-mon.service.j2
roles/ceph-osd/tasks/docker/main.yml
roles/ceph-osd/tasks/docker/start_docker_osd.yml

index c8c5de7bc46b2ca36a64a39c05f7d153d1fed2b9..484b2e3a115e454ac51b13fa2a45a90be886838c 100644 (file)
@@ -4,10 +4,9 @@ After=docker.service
 
 [Service]
 EnvironmentFile=/etc/environment
-ExecStartPre=-/usr/bin/docker kill %p
-ExecStartPre=-/usr/bin/docker rm %p
+ExecStartPre=-/usr/bin/docker rm %i
 ExecStartPre=/usr/bin/mkdir -p /etc/ceph /var/lib/ceph/mon
-ExecStart=/usr/bin/docker run -d --name %p --net=host \
+ExecStart=/usr/bin/docker run --rm --name %p --net=host \
    -v /var/lib/ceph:/var/lib/ceph \
    -v /etc/ceph:/etc/ceph \
    --privileged \
@@ -16,9 +15,8 @@ ExecStart=/usr/bin/docker run -d --name %p --net=host \
    -e CEPH_PUBLIC_NETWORK={{ ceph_mon_docker_subnet }} \
    -e MON_NAME={{ ansible_hostname }} \
    --name={{ ansible_hostname }} \
-   {{ ceph_mon_docker_username }}/{{ ceph_mon_docker_imagename }}
-ExecStopPost=-/usr/bin/docker stop %p
-ExecStopPost=-/usr/bin/docker rm %p
+    {{ ceph_mon_docker_username }}/{{ ceph_mon_docker_imagename }}
+ExecStopPost=-/usr/bin/docker stop %i
 Restart=always
 RestartSec=10s
 TimeoutStartSec=120
index b0a2a27fda2f6cd8dfc1137425f6c87643715f3d..2d1ba5b249f66ce3ef5b577d77e736474e0d8b9e 100644 (file)
@@ -8,6 +8,14 @@
 - include: checks.yml
   when: ceph_health.rc != 0
 
+- 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: pre_requisite.yml
 - include: selinux.yml
   when: ansible_os_family == 'RedHat'
index 43a93f91d2857faf77232b54066a2a34f8d0543f..265fe2df47b23d641150e4298207ca6bc05f9e6b 100644 (file)
@@ -1,7 +1,7 @@
 ---
 # (rootfs) for reasons I haven't figured out, docker pull and run will fail.
 - name: pull ceph daemon image
-  shell: "docker pull {{ ceph_mon_docker_username }}/{{ ceph_mon_docker_imagename }}"
+  shell: "docker pull {{ ceph_osd_docker_username }}/{{ ceph_osd_docker_imagename }}"
 
 - name: prepare ceph osd disk
   docker:
   with_items: ceph_osd_docker_devices
   when: ceph_osd_docker_prepare_env is defined
 
+# Use systemd to manage container on Atomic host
+- name: generate systemd unit file
+  sudo: true
+  config_template:
+    src: ceph-osd.service.j2
+    dest: /var/lib/ceph/ceph-osd@.service
+    owner: "root"
+    group: "root"
+    mode: "0644"
+    config_overrides: {}
+    config_type: ini
+  failed_when: false
+
+- name: link systemd unit file for osd instance
+  file:
+    src: /var/lib/ceph/ceph-osd@.service
+    dest: /etc/systemd/system/multi-user.target.wants/ceph-osd@{{ item | basename }}.service
+    state: link
+  with_items: ceph_osd_docker_devices
+  when: is_atomic
+
+- name: enable systemd unit file for osd instance
+  shell: systemctl enable /etc/systemd/system/multi-user.target.wants/ceph-osd@{{ item | basename }}.service
+  failed_when: false
+  changed_when: false
+  with_items: ceph_osd_docker_devices
+  when: is_atomic
+
+- name: reload systemd unit files
+  shell: systemctl daemon-reload
+  when: is_atomic
+
+- name: systemd start osd container
+  service:
+    name: ceph-osd@{{ item | basename }}
+    state: started
+    enabled: yes
+  changed_when: false
+  with_items: ceph_osd_docker_devices
+  when: is_atomic
+
 - name: run the ceph osd docker image
   docker:
     image: "{{ ceph_osd_docker_username }}/{{ ceph_osd_docker_imagename }}"
@@ -27,3 +68,4 @@
     env: "OSD_DEVICE={{ item }},{{ ceph_osd_docker_extra_env }}"
     volumes: "/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph,/dev/:/dev/"
   with_items: ceph_osd_docker_devices
+  when: not is_atomic