blob: 4d32fc40b524ecb021f026e096b3971725cadb4e (
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
142
|
---
# This playbook coverts docker to go from loopback to direct-lvm (the Red Hat recommended way to run docker)
# in AWS. This adds an additional EBS volume and creates the Volume Group on this EBS volume to use.
#
# To run:
# 1. Source your AWS credentials (make sure it's the corresponding AWS account) into your environment
# export AWS_ACCESS_KEY_ID='XXXXX'
# export AWS_SECRET_ACCESS_KEY='XXXXXX'
#
# 2. run the playbook:
# ansible-playbook -e 'cli_tag_name=<tag-name>' -e "cli_volume_size=30" docker_loopback_to_direct_lvm.yml
#
# Example:
# ansible-playbook -e 'cli_tag_name=ops-master-12345' -e "cli_volume_size=30" docker_loopback_to_direct_lvm.yml
#
# Notes:
# * By default this will do a 30GB volume.
# * iops are calculated by Disk Size * 30. e.g ( 30GB * 30) = 900 iops
# * This will remove /var/lib/docker!
# * You may need to re-deploy docker images after this is run (like monitoring)
#
- name: Fix docker to have a provisioned iops drive
hosts: "tag_Name_{{ cli_tag_name }}"
user: root
connection: ssh
gather_facts: no
vars:
cli_volume_type: gp2
cli_volume_size: 30
pre_tasks:
- fail:
msg: "This playbook requires {{item}} to be set."
when: "{{ item }} is not defined or {{ item }} == ''"
with_items:
- cli_tag_name
- cli_volume_size
- debug:
var: hosts
- name: start docker
service:
name: docker
state: started
- name: Determine if loopback
shell: docker info | grep 'Data file:.*loop'
register: loop_device_check
ignore_errors: yes
- debug:
var: loop_device_check
- name: fail if we don't detect loopback
fail:
msg: loopback not detected! Please investigate manually.
when: loop_device_check.rc == 1
- name: stop zagg client monitoring container
service:
name: oso-rhel7-zagg-client
state: stopped
ignore_errors: yes
- name: stop pcp client monitoring container
service:
name: oso-f22-host-monitoring
state: stopped
ignore_errors: yes
- name: stop docker
service:
name: docker
state: stopped
- name: delete /var/lib/docker
command: rm -rf /var/lib/docker
- name: remove /var/lib/docker
command: rm -rf /var/lib/docker
- name: check to see if /dev/xvdb exists
command: test -e /dev/xvdb
register: xvdb_check
ignore_errors: yes
- debug: var=xvdb_check
- name: fail if /dev/xvdb already exists
fail:
msg: /dev/xvdb already exists. Please investigate
when: xvdb_check.rc == 0
- name: Create a volume and attach it
delegate_to: localhost
ec2_vol:
state: present
instance: "{{ ec2_id }}"
region: "{{ ec2_region }}"
volume_size: "{{ cli_volume_size | default(30, True)}}"
volume_type: "{{ cli_volume_type }}"
device_name: /dev/xvdb
register: vol
- debug: var=vol
- name: tag the vol with a name
delegate_to: localhost
ec2_tag: region={{ ec2_region }} resource={{ vol.volume_id }}
args:
tags:
Name: "{{ ec2_tag_Name }}"
clusterid: "{{ ec2_tag_clusterid }}"
register: voltags
- name: Wait for volume to attach
pause:
seconds: 30
- name: copy the docker-storage-setup config file
copy:
src: docker-storage-setup
dest: /etc/sysconfig/docker-storage-setup
owner: root
group: root
mode: 0664
- name: docker storage setup
command: docker-storage-setup
register: setup_output
- debug: var=setup_output
- name: start docker
command: systemctl start docker.service
register: dockerstart
- debug: var=dockerstart
|