summaryrefslogtreecommitdiffstats
path: root/ci/ansible/roles/osdsdock/scenarios/cinder_standalone.yml
blob: 7939d75d20f049d7dc5085417a53920396146967 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
---

- name: install python-pip
  apt:
    name: python-pip

- name: install lvm2
  apt:
    name: lvm2

- name: install thin-provisioning-tools
  apt:
    name: thin-provisioning-tools

- name: install docker-compose
  pip:
    name: docker-compose

- name: create directory to save source code and volume group file
  file:
    path: "{{ cinder_data_dir }}"
    state: directory
    recurse: yes

- name: create volume group in thin mode
  shell:
    _raw_params: |
      function _create_lvm_volume_group {
          local vg=$1
          local size=$2

          local backing_file={{ cinder_data_dir }}/${vg}.img
          if ! sudo vgs $vg; then
              # Only create if the file doesn't already exists
              [[ -f $backing_file ]] || truncate -s $size $backing_file
              local vg_dev
              vg_dev=`sudo losetup -f --show $backing_file`

              # Only create volume group if it doesn't already exist
              if ! sudo vgs $vg; then
                  sudo vgcreate $vg $vg_dev
              fi
          fi
      }
      modprobe dm_thin_pool
      _create_lvm_volume_group {{ cinder_volume_group }} 10G
  args:
    executable: /bin/bash
  become: true

- name: check for python-cinderclient source code existed
  stat:
    path: "{{ cinder_data_dir }}/python-cinderclient"
  ignore_errors: yes
  register: cinderclient_existed

- name: download python-cinderclient source code
  git:
    repo: https://github.com/openstack/python-cinderclient.git
    dest: "{{ cinder_data_dir }}/python-cinderclient"
  when:
    - cinderclient_existed.stat.exists is undefined or cinderclient_existed.stat.exists == false

# Tested successfully in this version `ab0185bfc6e8797a35a2274c2a5ee03afb03dd60`
# git checkout -b ab0185bfc6e8797a35a2274c2a5ee03afb03dd60
- name: pip install cinderclinet
  shell: |
    pip install -e .
  become: true
  args:
    chdir: "{{ cinder_data_dir }}/python-cinderclient"

- name: check for python-brick-cinderclient-ext source code existed
  stat:
    path: "{{ cinder_data_dir }}/python-brick-cinderclient-ext"
  ignore_errors: yes
  register: brick_existed

- name: download python-brick-cinderclient-ext source code
  git:
    repo: https://github.com/openstack/python-brick-cinderclient-ext.git
    dest: "{{ cinder_data_dir }}/python-brick-cinderclient-ext"
  when:
    - brick_existed.stat.exists is undefined or brick_existed.stat.exists == false

# Tested successfully in this version `a281e67bf9c12521ea5433f86cec913854826a33`
# git checkout -b a281e67bf9c12521ea5433f86cec913854826a33
- name: pip install python-brick-cinderclient-ext
  shell: |
    pip install -e .
  become: true
  args:
    chdir: "{{ cinder_data_dir }}/python-brick-cinderclient-ext"


- name: check for cinder source code existed
  stat:
    path: "{{ cinder_data_dir }}/cinder"
  ignore_errors: yes
  register: cinder_existed

- name: download cinder source code
  git:
    repo: https://github.com/openstack/cinder.git
    dest: "{{ cinder_data_dir }}/cinder"
  when:
    - cinder_existed.stat.exists is undefined or cinder_existed.stat.exists == false

# Tested successfully in this version `7bbc95344d3961d0bf059252723fa40b33d4b3fe`
# git checkout -b 7bbc95344d3961d0bf059252723fa40b33d4b3fe
- name: update blockbox configuration
  shell: |
    sed -i "s/PLATFORM ?= debian:stretch/PLATFORM ?= {{ cinder_container_platform }}/g" Makefile
    sed -i "s/TAG ?= debian-cinder:latest/TAG ?= {{ cinder_image_tag }}:latest/g" Makefile

    sed -i "s/image: debian-cinder/image: {{ cinder_image_tag }}/g" docker-compose.yml
    sed -i "s/image: lvm-debian-cinder/image: lvm-{{ cinder_image_tag }}/g" docker-compose.yml

    sed -i "s/volume_group = cinder-volumes /volume_group = {{ cinder_volume_group }}/g" etc/cinder.conf
  become: true
  args:
    chdir: "{{ cinder_data_dir }}/cinder/contrib/block-box"

- name: make blockbox
  shell: make blockbox
  become: true
  args:
    chdir: "{{ cinder_data_dir }}/cinder/contrib/block-box"

- name: start cinder-standalone service
  shell: docker-compose up -d
  become: true
  args:
    chdir: "{{ cinder_data_dir }}/cinder/contrib/block-box"

- name: wait for cinder service to start normally
  wait_for:
    host: 127.0.0.1
    port: 8776
    delay: 2
    timeout: 120