-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker_ceph.yml
186 lines (176 loc) · 4.52 KB
/
docker_ceph.yml
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
---
- hosts: localhost
gather_facts: yes
tasks:
- name: create config-dir
file: path="{{ item }}" state=directory
with_items:
- "{{ ansible_env.HOME }}/ceph/var/lib"
- "{{ ansible_env.HOME }}/ceph/etc"
- hosts: picluster
gather_facts: yes
tasks:
- name: create ssh-host-parts in /home/pi/.ssh/config
blockinfile:
dest: /home/pi/.ssh/config
create: yes
owner: pi
block: |
Host pi000
Hostname pi000
User pi
Host pi001
Hostname pi001
User pi
Host pi002
Hostname pi002
User pi
Host pi003
Hostname pi003
User pi
Host pi004
Hostname pi004
User pi
Host pi005
Hostname pi005
User pi
Host pi006
Hostname pi006
User pi
- hosts: pi000
gather_facts: no
tasks:
- name: create ssh-key
user: name=pi generate_ssh_key=yes
tags:
- user
- name: get ssh-key
shell: cat /home/pi/.ssh/id_rsa.pub
register: result0
tags:
- user
- name: scan ssh Hostskeys
shell: "ssh-keyscan -H {{ item }} >> /home/pi/.ssh/known_hosts"
with_items: "{{ groups['picluster'] }}"
tags:
- user
- hosts: picluster
gather_facts: no
tasks:
- name: Add ssh-key
authorized_key: user=pi key="{{ hostvars['pi000']['result0'].stdout }}"
tags:
- user
- name: "clean old installions: delete old containers"
docker:
name: "{{ item }}"
image: de13/rpi-ceph-daemon:latest
state: absent
with_items:
- ceph-mon
- ceph-osd
- name: "clean old installtions: remove configs"
file: path="{{ item }}" state=absent
with_items:
- /etc/ceph
- /var/lib/ceph
- name: "create config directories"
file: path="{{ item }}" state=directory
with_items:
- /etc/ceph
- /var/lib/ceph
- name: "install packages"
apt: name="{{ item }}" state=present
with_items:
- ceph-common
- golang
- hosts: pi000
gather_facts: no
tasks:
- name: "prepare ceph-deploy: get monitors"
shell: echo "{{ item }}" >> "/home/pi/picluster.txt"
with_items:
- "{{ groups['picluster'] }}"
- name: create first monitor
docker:
name: ceph-mon
image: de13/rpi-ceph-daemon:latest
state: started
net: host
restart_policy: unless-stopped
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph:/var/lib/ceph
- /var/run/ceph:/var/run/ceph
env:
MON_IP: "{{ ansible_default_ipv4.address }}"
CEPH_PUBLIC_NETWORK: "{{ ansible_default_ipv4.network }}/24"
command: MON
- name: pull config
synchronize:
src: "{{ item }}"
dest: "{{ ansible_env.HOME }}/ceph{{ item }}"
mode: pull
with_items:
- '/etc/ceph/'
- '/var/lib/ceph/'
- hosts: picluster
gather_facts: no
tasks:
- name: push config
synchronize:
src: "{{ ansible_env.HOME }}/ceph{{ item }}"
dest: "{{ item }}"
mode: push
with_items:
- '/etc/ceph/'
- '/var/lib/ceph/'
- name: create all other monitors
docker:
name: ceph-mon
image: de13/rpi-ceph-daemon:latest
state: started
net: host
restart_policy: unless-stopped
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph:/var/lib/ceph
- /var/run/ceph:/var/run/ceph
env:
MON_IP: "{{ ansible_default_ipv4.address }}"
CEPH_PUBLIC_NETWORK: "{{ ansible_default_ipv4.network }}/24"
command: MON
when: ansible_hostname != "pi000"
- hosts: pi3
gather_facts: no
tasks:
# - name: "prepare OSDs: destroy disks"
# shell: dd if=/dev/zero of=/dev/sda bs=1024 count=1
# - name: "prepare OSDs: mklabel gpt"
# shell: parted -s /dev/sda mklabel gpt
- name: "prepare OSDs: destroy disks"
shell: for i in $(lsblk | grep sd | grep disk | cut -d " " -f1); do dd if=/dev/zero of=/dev/$i bs=1024 count=1; done
- name: "prepare OSDs: mklabel gpt"
shell: for i in $(lsblk | grep sd | grep disk | cut -d " " -f1); do parted -s /dev/$i mklabel gpt; done
- name: "create OSDs"
# debug: msg="/dev/{{ item.key }}"
docker:
name: "ceph-osd-{{ item.key }}"
image: de13/rpi-ceph-daemon:latest
state: started
privileged: yes
net: host
restart_policy: unless-stopped
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph:/var/lib/ceph
- /dev:/dev
- /var/run/ceph:/var/run/ceph
env:
OSD_FORCE_ZAP=1
OSD_DEVICE="/dev/{{ item.key }}"
command: osd_ceph_disk
with_dict: "{{ ansible_devices }}"
when: item.key != "mmcblk0"
tags:
- osd