diff --git a/roles/ceph-mon/tasks/templates/ceph-mon.service.j2 b/roles/ceph-mon/tasks/templates/ceph-mon.service.j2 index c8c5de7bc..484b2e3a1 100644 --- a/roles/ceph-mon/tasks/templates/ceph-mon.service.j2 +++ b/roles/ceph-mon/tasks/templates/ceph-mon.service.j2 @@ -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 diff --git a/roles/ceph-osd/tasks/docker/main.yml b/roles/ceph-osd/tasks/docker/main.yml index b0a2a27fd..2d1ba5b24 100644 --- a/roles/ceph-osd/tasks/docker/main.yml +++ b/roles/ceph-osd/tasks/docker/main.yml @@ -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' diff --git a/roles/ceph-osd/tasks/docker/start_docker_osd.yml b/roles/ceph-osd/tasks/docker/start_docker_osd.yml index 43a93f91d..265fe2df4 100644 --- a/roles/ceph-osd/tasks/docker/start_docker_osd.yml +++ b/roles/ceph-osd/tasks/docker/start_docker_osd.yml @@ -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: @@ -16,6 +16,47 @@ 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