forked from brianehlert/ansible-nginx-controller-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
nginx_install_controller.yaml
261 lines (219 loc) · 6.61 KB
/
nginx_install_controller.yaml
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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
---
# ansible-playbook nginx_install_controller.yaml -i controller -e "su_password='K33p0ut'"
## retreive dynamic settings information at the Ansible Controller
- hosts: localhost
gather_facts: false
tasks:
# # deriving variables from AWS
# - name: get controller instance
# ec2_instance_info:
# filters:
# "tag:Name": "*controller*"
# instance-state-name: running
# register: controllerinst
# # deriving variables from AWS
# - name: set the controller public fqdn variable
# set_fact:
# fqdn: "{{item.public_dns_name}}"
# with_items: "{{controllerinst.instances}}"
# # deriving variables from AWS
# - name: set dbserver fqdn variable
# shell: cat "{{playbook_dir}}/dbserver"
# register: dbservers
# # deriving variables from AWS
# - name: set the dbserver fqdn
# set_fact:
# dbserver: "{{dbservers.stdout_lines[1]}}"
## on the remote host
- hosts: controller
remote_user: ubuntu
become: yes
become_method: sudo
gather_facts: yes
tasks:
- name: load the vars
include_vars:
file: "{{playbook_dir}}/nginx_install_controller_vars.yaml"
- name: make sure all the prerequisites are present
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
# - awk
- bash
# - cat
- curl
# - dirname
# - envsubst
- jq
# - getent
- grep
# - head
# - id
- less
# - mkdir
# - ps
# - rev
- sed
# - sort
- tar
# - tee
# - whoami
- python-pexpect # to support ansible
tags: packages
## If you want to install Docker using Ansible, otherwise Controller install.sh will perform an on-line install of docker-ce
# - name: gather only the fact necessary for docker apt_repository
# setup:
# filter: ansible_distribution_release
## add the docker repo
#- name: Import docker CE repository key
# apt_key:
# url: https://download.docker.com/linux/ubuntu/gpg
# state: present
# - name: add Docker ce repository
# apt_repository:
# repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
# state: present
# - name: update the apt cache
# apt:
# update_cache: yes
# - name: list versions available
# command: apt-cache show docker-ce
# register: docker_versions
# - name: list
# debug:
# var: docker_versions.stdout_lines
# - name: Install packages that allow apt to be used over HTTPS
# apt:
# name: "{{ packages }}"
# state: present
# update_cache: yes
# vars:
# packages:
# - apt-transport-https
# - ca-certificates
# - curl
# - gnupg-agent
# - software-properties-common
# - name: install docker community edition
# apt:
# name: "{{ packages }}"
# state: present
# update_cache: yes
# vars:
# packages:
# - docker-ce=5:18.09.9~3-0~ubuntu-bionic
# - docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic # kubeadm version requirement
# notify:
# - docker status
# - name: setup docker daemon
# copy:
# src: "{{playbook_dir}}/docker_daemon.json"
# dest: /etc/docker/daemon.json
# # https://kubernetes.io/blog/2019/03/15/kubernetes-setup-using-ansible-and-vagrant/
# - name: Remove swapfile from /etc/fstab
# mount:
# name: "{{ item }}"
# fstype: swap
# state: absent
# with_items:
# - swap
# - none
# - name: Disable swap
# command: swapoff -a
# when: ansible_swaptotal_mb > 0
# - name: restart docker daemon
# service:
# name: docker
# state: restarted
## If you want to install Kubernetes using Ansible, otherwise Controller install.sh will perform an install of Kubernetes pods and kubeadm.
# # install kubernetes dependencies for Controller 2.8+
# - name: Add an apt signing key for Kubernetes
# apt_key:
# url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
# state: present
# - name: Adding apt repository for Kubernetes
# apt_repository:
# repo: deb https://apt.kubernetes.io/ kubernetes-xenial main
# state: present
# filename: 'kubernetes'
# - name: what versions
# shell: curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'
# - name: Install Kubernetes binaries
# apt:
# name: "{{ packages }}"
# state: present
# update_cache: yes
# vars:
# packages:
# - kubelet=1.15.5-00
# - kubeadm=1.15.5-00
# - kubectl=1.15.5-00
# - debug:
# var: ansible_facts
# setting up the master node
# - name: set node_ip from ansible_facts
# set_fact:
# node_ip: "{{ansible_facts.default_ipv4.address}}"
# - debug:
# var: node_ip
# - name: Configure node ip
# lineinfile:
# path: /etc/default/kubelet
# line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }}
# create: yes
# - name: Restart kubelet
# service:
# name: kubelet
# daemon_reload: yes
# state: restarted
# - name: ensure kubelet running
# service:
# name: kubelet
# state: started
## Stop here with setting up K8s. The Controller installer will take care of the rest after this for a working demo environment.
# Supporting su requirement for Controller installer role
- name: set root password to support su for Controller installation with Ubuntu
user:
name: root
password: "{{ su_password | password_hash('sha512') }}"
- name: copy the controller package
copy:
src: "{{playbook_dir}}/{{controller_tarball}}"
dest: "/home/ubuntu/{{controller_tarball}}"
owner: ubuntu
group: ubuntu
force: yes
## changing security context on the remote host to su
- name: install controller
remote_user: ubuntu
hosts: controller
become: yes
become_user: ubuntu
become_method: su
gather_facts: false
pre_tasks:
- name: load the vars
include_vars:
file: "{{playbook_dir}}/nginx_install_controller_vars.yaml"
- name: set the controller public fqdn variable
set_fact:
nginx_controller_fqdn: "{{hostvars['localhost']['fqdn']}}"
- name: set the dbserver private fqdn variable
set_fact:
nginx_controller_db_host: "{{hostvars['localhost']['dbserver']}}"
roles:
- ansible-role-nginx-controller-install
# pull the install log
- hosts: controller
remote_user: ubuntu
become: yes
become_method: sudo
gather_facts: false
tasks:
- name: fetch the install log
fetch:
src: /var/log/nginx-controller/nginx-controller-install.log
dest: "{{playbook_dir}}/logs/"