[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 \
-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
- 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'
---
# (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 }}"
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