Skip to content

Commit 9a10ba4

Browse files
authored
Merge pull request #2574 from saurabhkumarkardam/indy-2557
[indy] enable platform deployment via ansible server
2 parents c01e135 + 74c67ad commit 9a10ba4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1171
-771
lines changed

platforms/hyperledger-indy/charts/README.md

+8-5
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ helm install university-steward-3 ./indy-node --namespace university-ns --values
7979
cd ./indy-register-identity/files
8080
kubectl --namespace university-ns get secret university-endorser-identity-public -o jsonpath='{.data.value}' | base64 -d | jq '.["did"]'> university-endorser-did.json
8181
kubectl --namespace university-ns get secret university-endorser-node-public-verif-keys -o jsonpath='{.data.value}' | base64 -d | jq '.["verification-key"]' > university-endorser-verkey.json
82-
# Register endorser identity from admin
82+
# Register the endorser identity using the trustee's credentials
83+
# Deploy the endorser identity registration Helm chart in the authority namespace, where the trustee resides
8384
cd ../..
8485
helm install university-endorser-id ./indy-register-identity --namespace authority-ns
8586
```
@@ -130,24 +131,26 @@ helm install university-steward-4 ./indy-node --namespace university-ns --values
130131
cd ./indy-register-identity/files
131132
kubectl --namespace university-ns get secret university-endorser-identity-public -o jsonpath='{.data.value}' | base64 -d | jq '.["did"]'> university-endorser-did.json
132133
kubectl --namespace university-ns get secret university-endorser-node-public-verif-keys -o jsonpath='{.data.value}' | base64 -d | jq '.["verification-key"]' > university-endorser-verkey.json
133-
# Register endorser identity from admin
134+
# Register the endorser identity using the trustee's credentials
135+
# Deploy the endorser identity registration Helm chart in the authority namespace, where the trustee resides
134136
cd ../..
135137
helm install university-endorser-id ./indy-register-identity --namespace authority-ns
136138
```
137139

138140
### Clean-up
139141

140-
To clean up, simply uninstall the Helm releases. It's important to uninstall the genesis Helm chart at the end to prevent any cleanup failure.
142+
To clean up, simply uninstall the Helm charts.
143+
> **NOTE**: It's important to uninstall the genesis Helm chart at the end to prevent any cleanup failure.
141144
142145
```bash
143146
helm uninstall --namespace university-ns university-steward-1
144147
helm uninstall --namespace university-ns university-steward-2
145148
helm uninstall --namespace university-ns university-steward-3
146149
helm uninstall --namespace university-ns university-steward-4
147-
helm uninstall --namespace university-ns genesis
148150
helm uninstall --namespace university-ns university-keys
151+
helm uninstall --namespace university-ns genesis
149152

150153
helm uninstall --namespace authority-ns university-endorser-id
151-
helm uninstall --namespace authority-ns genesis
152154
helm uninstall --namespace authority-ns authority-keys
155+
helm uninstall --namespace authority-ns genesis
153156
```

platforms/hyperledger-indy/configuration/cleanup.yaml

+11-9
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@
1313
no_log: "{{ no_ansible_log | default(false) }}"
1414
tasks:
1515
# Cleanup all organizations' vault indy crypto
16-
- name: Cleanup Vault indy crypto
16+
- name: "Clean up Vault indy crypto"
1717
include_role:
1818
name: clean/vault
1919
vars:
20-
organization: "{{ organizationItem.name | lower }}"
21-
organization_ns: "{{ organization }}-ns"
22-
services: "{{ organizationItem.services }}"
23-
acount: "{{ organization }}-admin-vault-auth"
24-
vault: "{{ organizationItem.vault }}"
25-
role: "rw"
26-
auth_path: "kubernetes-{{ organization }}"
20+
org_name: "{{ org.name | lower }}"
21+
org_ns: "{{ org_name }}-ns"
22+
services: "{{ org.services }}"
23+
vault: "{{ org.vault }}"
2724
loop: "{{ network['organizations'] }}"
2825
loop_control:
29-
loop_var: organizationItem
26+
loop_var: org
27+
28+
# Clean up helpers directory
29+
- name: "Clean up helpers directory"
30+
include_role:
31+
name: clean/local_directories

platforms/hyperledger-indy/configuration/deploy-network.yaml

+60-162
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
# SPDX-License-Identifier: Apache-2.0
55
##############################################################################################
66

7-
#########################
7+
##############################################################################################
88
# Playbook to create deployment files for namespaces, service account and clusterrolebinding
99
# Playbook arguments: complete network.yaml
10-
#########################
10+
##############################################################################################
11+
---
1112
- hosts: ansible_provisioners
1213
gather_facts: no
1314
no_log: "{{ no_ansible_log | default(false) }}"
@@ -24,203 +25,100 @@
2425
name: check/validation
2526

2627
# Create namespaces for organizations
27-
- name: 'Create namespace'
28+
- name: "Create namespace"
2829
include_role:
2930
name: create/namespace
3031
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 }}"
3536
loop: "{{ network['organizations'] }}"
3637
loop_control:
37-
loop_var: organizationItem
38+
loop_var: org
3839

39-
# Create service accounts
40-
- name: 'Create service accounts'
40+
# Create necessary Kubernetes secrets for each organization
41+
- name: "Create k8s secrets"
4142
include_role:
42-
name: create/serviceaccount/main
43+
name: create/secrets
4344
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 }}"
5048
loop: "{{ network['organizations'] }}"
5149
loop_control:
52-
loop_var: organizationItem
53-
when: organizationItem.org_status is not defined or organizationItem.org_status == 'new'
50+
loop_var: org
5451

55-
# Create StorageClass
56-
- name: Create Storage Class
52+
# Generate keys for each nodes
53+
- name: "Generate keys"
5754
include_role:
58-
name: "{{ playbook_dir }}/../../../platforms/shared/configuration/roles/setup/storageclass"
55+
name: setup/generate-keys
5956
vars:
6057
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 }}"
6367
loop: "{{ network['organizations'] }}"
6468
loop_control:
6569
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
11670

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"
11973
include_role:
120-
name: setup/crypto
74+
name: setup/genesis-node-keys
12175
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 }}"
13078
loop: "{{ network['organizations'] }}"
13179
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
14481

145-
# Add new Trustees via existing Trustee
146-
- name: "Add New Trustees via existing Trustee"
82+
# Install Genesis
83+
- name: "Install Genesis"
14784
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
16486

165-
# Add new Stewards via existing Trustee
166-
- name: "Add New Stewards via existing Trustee"
87+
# Install Steward nodes
88+
- name: Install Steward nodes
16789
include_role:
16890
name: setup/stewards
16991
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 }}"
17899
loop: "{{ network['organizations'] }}"
179100
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
184102

185-
# Deploy all other nodes
186-
- name: 'Deploy nodes'
103+
# Install Endorser node
104+
- name: "Install Endorser node"
187105
include_role:
188-
name: setup/node
106+
name: setup/endorser
189107
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 }}"
198116
loop: "{{ network['organizations'] }}"
199117
loop_control:
200-
loop_var: organizationItem
118+
loop_var: org
201119
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)
205121

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-
224122
# These variables can be overriden from the command line
225123
vars:
226124
install_os: "linux" # Default to linux OS

0 commit comments

Comments
 (0)