|
4 | 4 | # SPDX-License-Identifier: Apache-2.0
|
5 | 5 | ##############################################################################################
|
6 | 6 |
|
7 |
| -######################### |
| 7 | +############################################################################################## |
8 | 8 | # Playbook to create deployment files for namespaces, service account and clusterrolebinding
|
9 | 9 | # Playbook arguments: complete network.yaml
|
10 |
| -######################### |
| 10 | +############################################################################################## |
| 11 | +--- |
11 | 12 | - hosts: ansible_provisioners
|
12 | 13 | gather_facts: no
|
13 | 14 | no_log: "{{ no_ansible_log | default(false) }}"
|
|
24 | 25 | name: check/validation
|
25 | 26 |
|
26 | 27 | # Create namespaces for organizations
|
27 |
| - - name: 'Create namespace' |
| 28 | + - name: "Create namespace" |
28 | 29 | include_role:
|
29 | 30 | name: create/namespace
|
30 | 31 | vars:
|
31 |
| - component_name: "{{ organizationItem.name | lower }}-ns" |
32 |
| - component_type_name: "{{ organizationItem.type | lower }}" |
33 |
| - kubernetes: "{{ organizationItem.k8s }}" |
34 |
| - release_dir: "{{playbook_dir}}/../../../{{organizationItem.gitops.release_dir}}/{{ organizationItem.name | lower }}" |
| 32 | + component_name: "{{ org.name | lower }}-ns" |
| 33 | + component_type_name: "{{ org.type | lower }}" |
| 34 | + kubernetes: "{{ org.k8s }}" |
| 35 | + release_dir: "{{playbook_dir}}/../../../{{org.gitops.release_dir}}/{{ org.name | lower }}" |
35 | 36 | loop: "{{ network['organizations'] }}"
|
36 | 37 | loop_control:
|
37 |
| - loop_var: organizationItem |
| 38 | + loop_var: org |
38 | 39 |
|
39 |
| - # Create service accounts |
40 |
| - - name: 'Create service accounts' |
| 40 | + # Create necessary Kubernetes secrets for each organization |
| 41 | + - name: "Create k8s secrets" |
41 | 42 | include_role:
|
42 |
| - name: create/serviceaccount/main |
| 43 | + name: create/secrets |
43 | 44 | vars:
|
44 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
45 |
| - organization: "{{ organizationItem.name | lower }}" |
46 |
| - component_type_name: "{{ organization }}" |
47 |
| - services: "{{ organizationItem.services }}" |
48 |
| - gitops: "{{ organizationItem.gitops }}" |
49 |
| - kubernetes: "{{ organizationItem.k8s }}" |
| 45 | + component_ns: "{{ org.name | lower }}-ns" |
| 46 | + kubernetes: "{{ org.k8s }}" |
| 47 | + vault: "{{ org.vault }}" |
50 | 48 | loop: "{{ network['organizations'] }}"
|
51 | 49 | loop_control:
|
52 |
| - loop_var: organizationItem |
53 |
| - when: organizationItem.org_status is not defined or organizationItem.org_status == 'new' |
| 50 | + loop_var: org |
54 | 51 |
|
55 |
| - # Create StorageClass |
56 |
| - - name: Create Storage Class |
| 52 | + # Generate keys for each nodes |
| 53 | + - name: "Generate keys" |
57 | 54 | include_role:
|
58 |
| - name: "{{ playbook_dir }}/../../../platforms/shared/configuration/roles/setup/storageclass" |
| 55 | + name: setup/generate-keys |
59 | 56 | vars:
|
60 | 57 | org_name: "{{ org.name | lower }}"
|
61 |
| - sc_name: "{{ org_name }}-bevel-storageclass" |
62 |
| - region: "{{ org.k8s.region | default('eu-west-1') }}" |
| 58 | + stewards: "{{ org.services.stewards }}" |
| 59 | + cloud_provider: "{{ org.cloud_provider | lower }}" |
| 60 | + vault: "{{ org.vault }}" |
| 61 | + kubernetes: "{{ org.k8s }}" |
| 62 | + component_type: "generate-keys" |
| 63 | + component_ns: "{{ org_name }}-ns" |
| 64 | + component_name: "{{ org_name }}-keys" |
| 65 | + values_dir: "{{playbook_dir}}/../../../{{org.gitops.release_dir}}" |
| 66 | + charts_dir: "{{ org.gitops.chart_source }}" |
63 | 67 | loop: "{{ network['organizations'] }}"
|
64 | 68 | loop_control:
|
65 | 69 | loop_var: org
|
66 |
| - when: org.org_status is not defined or org.org_status == 'new' |
67 |
| - |
68 |
| - # Admin K8S auth |
69 |
| - - name: Admin K8S auth |
70 |
| - include_role: |
71 |
| - name: setup/vault_kubernetes |
72 |
| - vars: |
73 |
| - organization: "{{ organizationItem.name | lower }}" |
74 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
75 |
| - component_name: "{{ organization }}-bevel-ac-vault-auth" |
76 |
| - component_type: "GetServiceAccount" |
77 |
| - vault: "{{ organizationItem.vault }}" |
78 |
| - auth_path: "kubernetes-{{ organization }}-admin-auth" |
79 |
| - kubernetes: "{{ organizationItem.k8s }}" |
80 |
| - loop: "{{ network['organizations'] }}" |
81 |
| - loop_control: |
82 |
| - loop_var: organizationItem |
83 |
| - when: organizationItem.org_status is not defined or organizationItem.org_status == 'new' |
84 |
| - |
85 |
| - # Generate auth job |
86 |
| - - name: 'Generate auth job' |
87 |
| - include_role: |
88 |
| - name: setup/auth_job |
89 |
| - vars: |
90 |
| - organization: "{{ organizationItem.name | lower }}" |
91 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
92 |
| - component_name: "{{ organization }}" |
93 |
| - services: "{{ organizationItem.services }}" |
94 |
| - kubernetes: "{{ organizationItem.k8s }}" |
95 |
| - vault: "{{ organizationItem.vault }}" |
96 |
| - gitops: "{{ organizationItem.gitops }}" |
97 |
| - loop: "{{ network['organizations'] }}" |
98 |
| - loop_control: |
99 |
| - loop_var: organizationItem |
100 |
| - when: organizationItem.org_status is not defined or organizationItem.org_status == 'new' |
101 |
| - |
102 |
| - # Get Vault AC Token via Service Account |
103 |
| - - name: Get Vault AC Token via Service Account |
104 |
| - include_role: |
105 |
| - name: check/k8_component |
106 |
| - vars: |
107 |
| - organization: "{{ organizationItem.name | lower }}" |
108 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
109 |
| - component_name: "{{ organization }}-bevel-ac-vault-auth" |
110 |
| - component_type: "GetServiceAccount" |
111 |
| - vault: "{{ organizationItem.vault }}" |
112 |
| - kubernetes: "{{ organizationItem.k8s }}" |
113 |
| - loop: "{{ network['organizations'] }}" |
114 |
| - loop_control: |
115 |
| - loop_var: organizationItem |
116 | 70 |
|
117 |
| - # Generate indy crypto and insert into Vault |
118 |
| - - name: 'Generate indy crypto and insert into Vault' |
| 71 | + # Get each node keys for the Genesis setup |
| 72 | + - name: "Get keys for the Genesis setup" |
119 | 73 | include_role:
|
120 |
| - name: setup/crypto |
| 74 | + name: setup/genesis-node-keys |
121 | 75 | vars:
|
122 |
| - organization: "{{ organizationItem.name | lower }}" |
123 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
124 |
| - component_name: "{{ organization }}" |
125 |
| - services: "{{ organizationItem.services }}" |
126 |
| - kubernetes: "{{ organizationItem.k8s }}" |
127 |
| - vault: "{{ organizationItem.vault }}" |
128 |
| - gitops: "{{ organizationItem.gitops }}" |
129 |
| - vault_ac_token: "{{ ac_vault_tokens[organization] }}" |
| 76 | + component_ns: "{{ org.name | lower }}-ns" |
| 77 | + kubernetes: "{{ org.k8s }}" |
130 | 78 | loop: "{{ network['organizations'] }}"
|
131 | 79 | loop_control:
|
132 |
| - loop_var: organizationItem |
133 |
| - when: organizationItem.org_status is not defined or organizationItem.org_status == 'new' |
134 |
| - |
135 |
| - # Create and deploy domain genesis |
136 |
| - - name: 'Create domain genesis' |
137 |
| - include_role: |
138 |
| - name: setup/domain_genesis |
139 |
| - |
140 |
| - # Create and deploy pool genesis |
141 |
| - - name: 'Create pool genesis' |
142 |
| - include_role: |
143 |
| - name: setup/pool_genesis |
| 80 | + loop_var: org |
144 | 81 |
|
145 |
| - # Add new Trustees via existing Trustee |
146 |
| - - name: "Add New Trustees via existing Trustee" |
| 82 | + # Install Genesis |
| 83 | + - name: "Install Genesis" |
147 | 84 | include_role:
|
148 |
| - name: setup/trustees |
149 |
| - vars: |
150 |
| - new_org_query: "organizations[?org_status=='new']" |
151 |
| - neworg: "{{ network | json_query(new_org_query) | first }}" |
152 |
| - organization: "{{ organizationItem.name | lower }}" |
153 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
154 |
| - component_name: "{{ organization }}" |
155 |
| - kubernetes: "{{ organizationItem.k8s }}" |
156 |
| - gitops: "{{ organizationItem.gitops }}" |
157 |
| - vault: "{{ organizationItem.vault }}" |
158 |
| - loop: "{{ network['organizations'] }}" |
159 |
| - loop_control: |
160 |
| - loop_var: organizationItem |
161 |
| - when: |
162 |
| - - (add_new_org|bool and add_new_org_network_trustee_present|bool) |
163 |
| - - (organizationItem.org_status is not defined or organizationItem.org_status == 'existing') |
| 85 | + name: setup/genesis |
164 | 86 |
|
165 |
| - # Add new Stewards via existing Trustee |
166 |
| - - name: "Add New Stewards via existing Trustee" |
| 87 | + # Install Steward nodes |
| 88 | + - name: Install Steward nodes |
167 | 89 | include_role:
|
168 | 90 | name: setup/stewards
|
169 | 91 | vars:
|
170 |
| - new_org_query: "organizations[?org_status=='new']" |
171 |
| - neworg: "{{ network | json_query(new_org_query) | first }}" |
172 |
| - organization: "{{ organizationItem.name | lower }}" |
173 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
174 |
| - component_name: "{{ organization }}" |
175 |
| - kubernetes: "{{ organizationItem.k8s }}" |
176 |
| - gitops: "{{ organizationItem.gitops }}" |
177 |
| - vault: "{{ organizationItem.vault }}" |
| 92 | + org_name: "{{ org.name | lower }}" |
| 93 | + cloud_provider: "{{ org.cloud_provider | lower }}" |
| 94 | + kubernetes: "{{ org.k8s }}" |
| 95 | + component_ns: "{{ org_name }}-ns" |
| 96 | + component_type: "stewards" |
| 97 | + values_dir: "{{playbook_dir}}/../../../{{org.gitops.release_dir}}" |
| 98 | + charts_dir: "{{ org.gitops.chart_source }}" |
178 | 99 | loop: "{{ network['organizations'] }}"
|
179 | 100 | loop_control:
|
180 |
| - loop_var: organizationItem |
181 |
| - when: |
182 |
| - - (add_new_org|bool and add_new_org_network_trustee_present|bool) |
183 |
| - - (organizationItem.org_status is not defined or organizationItem.org_status == 'existing') |
| 101 | + loop_var: org |
184 | 102 |
|
185 |
| - # Deploy all other nodes |
186 |
| - - name: 'Deploy nodes' |
| 103 | + # Install Endorser node |
| 104 | + - name: "Install Endorser node" |
187 | 105 | include_role:
|
188 |
| - name: setup/node |
| 106 | + name: setup/endorser |
189 | 107 | vars:
|
190 |
| - organization: "{{ organizationItem.name | lower }}" |
191 |
| - sc_name: "{{ organization }}-bevel-storageclass" |
192 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
193 |
| - services: "{{ organizationItem.services }}" |
194 |
| - kubernetes: "{{ organizationItem.k8s }}" |
195 |
| - vault: "{{ organizationItem.vault }}" |
196 |
| - gitops: "{{ organizationItem.gitops }}" |
197 |
| - genesis: "{{ network.genesis }}" |
| 108 | + org_name: "{{ org.name | lower }}" |
| 109 | + endorser: "{{ org.services.endorser.name | lower }}" |
| 110 | + trustee: "{{ org.services.trustee.name | lower }}" |
| 111 | + kubernetes: "{{ org.k8s }}" |
| 112 | + component_name: "{{ endorser }}" |
| 113 | + component_ns: "{{ org_name }}-ns" |
| 114 | + values_dir: "{{ playbook_dir }}/../../../{{ org.gitops.release_dir }}/{{ org_name }}/build" |
| 115 | + charts_dir: "{{ org.gitops.chart_source }}" |
198 | 116 | loop: "{{ network['organizations'] }}"
|
199 | 117 | loop_control:
|
200 |
| - loop_var: organizationItem |
| 118 | + loop_var: org |
201 | 119 | when:
|
202 |
| - - (organizationItem.type == 'peer') |
203 |
| - - (organizationItem.org_status is not defined or organizationItem.org_status == 'new') |
204 |
| - - (not add_new_org|bool or (add_new_org|bool and add_new_org_new_nyms_on_ledger_present|bool)) |
| 120 | + - (org.services.endorser is defined) and (org.services.endorser.name | length > 0) |
205 | 121 |
|
206 |
| - # Create and deploy Endorser Identities |
207 |
| - - name: 'Create Endorser Identities' |
208 |
| - include_role: |
209 |
| - name: setup/endorsers |
210 |
| - vars: |
211 |
| - organization: "{{ organizationItem.name | lower }}" |
212 |
| - component_ns: "{{ organizationItem.name | lower }}-ns" |
213 |
| - kubernetes: "{{ organizationItem.k8s }}" |
214 |
| - gitops: "{{ organizationItem.gitops }}" |
215 |
| - vault: "{{ organizationItem.vault }}" |
216 |
| - loop: "{{ network['organizations'] }}" |
217 |
| - loop_control: |
218 |
| - loop_var: organizationItem |
219 |
| - when: |
220 |
| - - (organizationItem.type == 'peer') |
221 |
| - - (organizationItem.org_status is not defined or organizationItem.org_status == 'new') |
222 |
| - - (not add_new_org|bool or (add_new_org|bool and add_new_org_new_nyms_on_ledger_present|bool)) |
223 |
| - |
224 | 122 | # These variables can be overriden from the command line
|
225 | 123 | vars:
|
226 | 124 | install_os: "linux" # Default to linux OS
|
|
0 commit comments