Initial commit
[ta/infra-ansible.git] / roles / bootstrap-host / tasks / prepare_loopback_cinder.yml
diff --git a/roles/bootstrap-host/tasks/prepare_loopback_cinder.yml b/roles/bootstrap-host/tasks/prepare_loopback_cinder.yml
new file mode 100644 (file)
index 0000000..38fd224
--- /dev/null
@@ -0,0 +1,72 @@
+---
+# Copyright 2015, Rackspace US, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+- name: Create sparse Cinder file
+  command: "truncate -s {{ bootstrap_host_loopback_cinder_size }}G /openstack/cinder.img"
+  args:
+    creates: /openstack/cinder.img
+  register: cinder_create
+  tags:
+    - cinder-file-create
+
+- name: Get a loopback device for cinder file
+  command: losetup -f
+  when: cinder_create | changed
+  register: cinder_losetup
+  tags:
+    - cinder-device-get
+
+- name: Create the loopback device
+  command: "losetup {{ cinder_losetup.stdout }} /openstack/cinder.img"
+  when: cinder_create | changed
+  tags:
+    - cinder-device-create
+
+- name: Ensure that rc.local exists
+  file:
+    path: "{{ rc_local }}"
+    state: touch
+    mode: "u+x"
+  tags:
+    - cinder-rc-file
+
+# As the cinder loopback is an LVM VG, it needs to be mounted differently
+#  to the other loopback files. It requires the use of rc.local to attach
+#  the loopback device on boot so that the VG becomes available immediately
+#  after the boot process completes.
+- name: Create loopback devices at boot time
+  lineinfile:
+    dest:  "{{ rc_local }}"
+    line: "losetup $(losetup -f) /openstack/cinder.img"
+    insertbefore: "{{ rc_local_insert_before }}"
+  tags:
+    - cinder-rc-config
+
+- name: Make LVM physical volume on the cinder device
+  command: "{{ item }}"
+  when: cinder_create | changed
+  with_items:
+    - "pvcreate {{ cinder_losetup.stdout }}"
+    - "pvscan"
+  tags:
+    - cinder-lvm-pv
+
+- name: Add cinder-volumes volume group
+  lvg:
+    vg: cinder-volumes
+    pvs: "{{ cinder_losetup.stdout }}"
+  when: cinder_create | changed
+  tags:
+    - cinder-lvm-vg