Skip to content

Commit 0345ebe

Browse files
author
Tong Li
committed
[CE-413]Enable composer on fabric over k8s
Currently ansible agent sets up composer on docker environment. When fabric is setup on k8s environment, the agent skipped the composer sets up, now since the main focus has been shifted to k8s platform, we need to add this improvement. This patch set will fix that so that even on k8s env, composer will be still available once the fabric is setup Change-Id: Ib559b86898411373f80ef53bbdeb09f00b2ec3d2 Signed-off-by: Tong Li <litong01@us.ibm.com>
1 parent f0fdf5e commit 0345ebe

File tree

6 files changed

+247
-0
lines changed

6 files changed

+247
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
---
2+
- name: Reuse common code
3+
include_tasks: "{{ playbook_dir }}/../common/config_apply.yml"
4+
5+
- meta: end_play
6+
when: (allorderers | length == 0) or (allpeers | length == 0)
7+
8+
- name: Setup few variables
9+
set_fact:
10+
alladmin: ""
11+
networkname: "{{ lookup('env', 'NETWORKNAME') | default('') }}"
12+
13+
- name: Process networkname
14+
set_fact:
15+
networkname: "{{ ((networkname|length)==0)|ternary('carauction-network', networkname) }}"
16+
adminStr: 'Admin@'
17+
18+
- name: Generate all admin options
19+
set_fact:
20+
alladmin: "{{ alladmin + '-A ' + item + 'Admin -C /home/composer/.composer/' + item + 'Admin/admin-pub.pem ' }}"
21+
with_items: "{{ peerorgs }}"
22+
tags: "generatealladmin"
23+
24+
- name: Create deployment file for composer cli
25+
template:
26+
src: "{{ playbook_dir }}/composersetup/templates/{{ item }}.j2"
27+
dest: "{{ playbook_dir }}/../../run/{{ item }}.yaml"
28+
with_items:
29+
- composercli
30+
- composerplayground
31+
32+
- name: Create composer cli initialization pod
33+
command: >-
34+
./kubectl --kubeconfig kubeconfig apply -f ../run/composercli.yaml
35+
args:
36+
chdir: "{{ playbook_dir }}/../../vars/"
37+
tags: "createcomposerclipod"
38+
39+
- name: Wait for composer cli pod to be ready
40+
command: >-
41+
./kubectl --kubeconfig kubeconfig -o=custom-columns=STATUS:.status.phase
42+
get pods -l type=composercli --no-headers --field-selector=status.phase=Running
43+
args:
44+
chdir: "{{ playbook_dir }}/../../vars/"
45+
register: podstatus
46+
until: podstatus.stdout_lines | length == 1
47+
retries: 10
48+
delay: 5
49+
50+
- name: Clean composer root
51+
command: >-
52+
./kubectl --kubeconfig kubeconfig exec composercli
53+
-- /bin/rm -rf /home/composer/.composer/{{ item }}
54+
with_items:
55+
- "cards"
56+
- "client-data"
57+
- "*Admin*"
58+
args:
59+
chdir: "{{ playbook_dir }}/../../vars/"
60+
tags: "cleanroot"
61+
62+
- name: Create cards for admins
63+
command: >-
64+
./kubectl --kubeconfig kubeconfig exec composercli -- composer card create
65+
-p /fabriccerts/keyfiles/{{ item }}/connection.json
66+
-c /fabriccerts/keyfiles/{{ item }}/users/Admin@{{ item }}/msp/admincerts/Admin@{{ item }}-cert.pem
67+
-k /fabriccerts/keyfiles/{{ item }}/users/Admin@{{ item }}/msp/keystore/admin_private.key
68+
-r PeerAdmin -r ChannelAdmin
69+
-u PeerAdmin@{{ item }}
70+
-f /home/composer/.composer/{{ item }}-PeerAdmin.card
71+
args:
72+
chdir: "{{ playbook_dir }}/../../vars/"
73+
with_items: "{{ peerorgs }}"
74+
tags: "createcards"
75+
76+
- name: Import the cards
77+
command: >-
78+
./kubectl --kubeconfig kubeconfig exec composercli -- composer card import
79+
-f /home/composer/.composer/{{ item }}-PeerAdmin.card
80+
-n PeerAdmin@{{ item }}
81+
args:
82+
chdir: "{{ playbook_dir }}/../../vars/"
83+
with_items: "{{ peerorgs }}"
84+
tags: "importcards"
85+
86+
- name: Runtime install
87+
command: >-
88+
./kubectl --kubeconfig kubeconfig exec composercli -- composer runtime install
89+
-c PeerAdmin@{{ item }} -n {{ networkname }}
90+
args:
91+
chdir: "{{ playbook_dir }}/../../vars/"
92+
with_items: "{{ peerorgs }}"
93+
tags: "runtimeinstall"
94+
95+
- name: Request identity
96+
command: >-
97+
./kubectl --kubeconfig kubeconfig exec composercli -- composer identity request
98+
-c PeerAdmin@{{ item }}
99+
-u {{ fabric.ca.admin }} -s {{ fabric.ca.adminpw }}
100+
-d /home/composer/.composer/{{ item }}Admin
101+
args:
102+
chdir: "{{ playbook_dir }}/../../vars/"
103+
with_items: "{{ peerorgs }}"
104+
tags: "requestidentity"
105+
106+
- name: Start network
107+
command: >-
108+
./kubectl --kubeconfig kubeconfig exec composercli -- composer network start
109+
-c PeerAdmin@{{ peerorgs[0] }}
110+
-a /fabriccerts/keyfiles/{{ networkname }}.bna {{ alladmin }}
111+
args:
112+
chdir: "{{ playbook_dir }}/../../vars/"
113+
tags: "startnetwork"
114+
115+
- name: Create admin business cards
116+
command: >-
117+
./kubectl --kubeconfig kubeconfig exec composercli -- composer card create
118+
-p /fabriccerts/keyfiles/{{ item }}/connection.json
119+
-u {{ item }}Admin -n {{ networkname }}
120+
-c /home/composer/.composer/{{ item }}Admin/admin-pub.pem
121+
-k /home/composer/.composer/{{ item }}Admin/admin-priv.pem
122+
-f /home/composer/.composer/{{ item}}Admin/{{ item }}-{{ networkname }}-Admin.card
123+
args:
124+
chdir: "{{ playbook_dir }}/../../vars/"
125+
with_items: "{{ peerorgs }}"
126+
tags: "createadmincards"
127+
128+
- name: Import the admin cards
129+
command: >-
130+
./kubectl --kubeconfig kubeconfig exec composercli -- composer card import
131+
-f /home/composer/.composer/{{ item }}Admin/{{ item }}-{{ networkname }}-Admin.card
132+
args:
133+
chdir: "{{ playbook_dir }}/../../vars/"
134+
with_items: "{{ peerorgs }}"
135+
tags: "importadmincards"
136+
137+
- name: Ping network
138+
command: >-
139+
./kubectl --kubeconfig kubeconfig exec composercli -- composer network ping
140+
-c {{ item }}Admin@{{ networkname }}
141+
args:
142+
chdir: "{{ playbook_dir }}/../../vars/"
143+
with_items: "{{ peerorgs }}"
144+
tags: "pingnetwork"
145+
146+
- name: Start composer playground pod and service
147+
command: >-
148+
./kubectl --kubeconfig kubeconfig apply -f ../run/composerplayground.yaml
149+
args:
150+
chdir: "{{ playbook_dir }}/../../vars/"
151+
tags: "startupplayground"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
- name: Reuse common code
3+
include_tasks: "{{ playbook_dir }}/../common/config_apply.yml"
4+
5+
- meta: end_play
6+
when: (allorderers | default([]) | length == 0) or (allpeers | default([]) | length == 0)
7+
8+
- name: Remove composer cli pod
9+
command: >-
10+
./kubectl --kubeconfig=kubeconfig delete -f ../run/{{ item }}
11+
args:
12+
chdir: "{{ playbook_dir }}/../../vars/"
13+
with_items:
14+
- composercli.yaml
15+
- composerplayground.yaml
16+
when: (allorderers | length > 0) and (allpeers | length > 0)
17+
tags: "composerdown"
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
kind: Pod
3+
apiVersion: v1
4+
metadata:
5+
name: composercli
6+
labels:
7+
type: composercli
8+
spec:
9+
volumes:
10+
- name: task-pv-storage
11+
persistentVolumeClaim:
12+
claimName: fabriccerts
13+
containers:
14+
- name: composercli
15+
image: hyperledger/composer-cli:next
16+
command: ["sleep"]
17+
args:
18+
- "3000"
19+
volumeMounts:
20+
- mountPath: "/fabriccerts"
21+
name: task-pv-storage
22+
- mountPath: "/home/composer/.composer"
23+
name: task-pv-storage
24+
subPath: fabriccerts/.composer
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
kind: Pod
3+
apiVersion: v1
4+
metadata:
5+
name: composerplayground
6+
labels:
7+
k8s-app: composerplayground
8+
type: composerplayground
9+
spec:
10+
volumes:
11+
- name: task-pv-storage
12+
persistentVolumeClaim:
13+
claimName: fabriccerts
14+
containers:
15+
- name: composerplayground
16+
image: hyperledger/composer-playground:next
17+
volumeMounts:
18+
- mountPath: "/fabriccerts"
19+
name: task-pv-storage
20+
- mountPath: "/home/composer/.composer"
21+
name: task-pv-storage
22+
subPath: fabriccerts/.composer
23+
---
24+
kind: Service
25+
apiVersion: v1
26+
metadata:
27+
labels:
28+
k8s-app: composerplayground
29+
name: composerplayground
30+
spec:
31+
selector:
32+
k8s-app: composerplayground
33+
type: NodePort
34+
ports:
35+
- name: port1
36+
port: 8080

src/agent/ansible/roles/deploy_k8s/fabricsetup/tasks/apply.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,14 @@
125125
chdir: "{{ playbook_dir }}/../../vars/"
126126
tags: "untarcerts"
127127

128+
- name: Change certs permissions
129+
command: >-
130+
./kubectl --kubeconfig kubeconfig exec fabriccertspod -c task-pv-container
131+
-- chmod -R o+rw /fabriccerts
132+
args:
133+
chdir: "{{ playbook_dir }}/../../vars/"
134+
tags: "changecertspermission"
135+
128136
- name: Removing the certs pod
129137
command: >-
130138
./kubectl --kubeconfig kubeconfig delete -f ../run/certssetup.yaml

src/agent/ansible/roles/deploy_k8s/plays.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,14 @@
3131
tasks:
3232
- include: "fabricsetup/tasks/{{ mode }}.yml"
3333
tags: "fabricsetup"
34+
35+
- name: setup composer
36+
hosts: cloud
37+
connection: local
38+
become: true
39+
become_user: root
40+
vars_files:
41+
- "./../../vars/{{ env }}.yml"
42+
tasks:
43+
- include: "composersetup/tasks/{{ mode }}.yml"
44+
tags: "composersetup"

0 commit comments

Comments
 (0)