Add ansible playbook to automate service provider setup #10
@ -4,7 +4,7 @@
|
||||
|
||||
To get started, follow the [installation](../README.md#installation) guide to setup ansible on your machine
|
||||
|
||||
## Setup User `dev`
|
||||
## Setup a new User
|
||||
|
||||
- Create a new `hosts.ini` file:
|
||||
|
||||
@ -95,7 +95,7 @@ To get started, follow the [installation](../README.md#installation) guide to se
|
||||
uid [ultimate] user <hello@laconic.com>
|
||||
```
|
||||
|
||||
Note the `0AFB10B643944C22` sequence of characters. This will be required later.
|
||||
Note the `0AFB10B643944C22` sequence of characters after `sec`. This will be required later.
|
||||
|
||||
- Copy the vars files:
|
||||
|
||||
@ -123,13 +123,16 @@ To get started, follow the [installation](../README.md#installation) guide to se
|
||||
org_id: "" # eg: lcn
|
||||
location_id: "" # eg: cad
|
||||
base_domain: "" # eg: laconic
|
||||
support_email: "" # eg: support@laconic.com
|
||||
|
||||
# vars/container-vars.yml
|
||||
container_registry_username: "" # username to login to the container registry
|
||||
container_registry_password: "" # password to login to the container registry
|
||||
|
||||
# vars/webapp-vars.yml
|
||||
authority_name: "" # eg: my-org-name
|
||||
authority_name: "" # eg: my-org-name
|
||||
cpu_reservation: "" # Minimum number of cpu cores to be used, eg: 2
|
||||
memory_reservation: "" # Minimum amount of memory in GB to be used, eg: 4G
|
||||
```
|
||||
|
||||
- Update `ansible_user` in the [`hosts.ini`](./hosts.ini) file to the user on target host
|
||||
|
@ -99,6 +99,9 @@
|
||||
src: "./templates/laconic.yml.j2"
|
||||
dest: "webapp-deployer/data/config/laconic.yml"
|
||||
|
||||
- name: login to the container registry
|
||||
command: "docker login container-registry.pwa.{{ full_domain }} --username {{ container_registry_username }} --password {{ container_registry_password}}"
|
||||
|
||||
- name: Push images to container registry
|
||||
command: laconic-so deployment --dir webapp-deployer push-images
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
vars_files:
|
||||
- vars/webapp-vars.yml
|
||||
- vars/dns-vars.yml
|
||||
- vars/k8s-vars.yml
|
||||
|
||||
tasks:
|
||||
- name: Clone webapp-deployment-status-ui repository
|
||||
|
@ -6,6 +6,8 @@
|
||||
|
||||
vars_files:
|
||||
- vars/webapp-vars.yml
|
||||
- vars/dns-vars.yml
|
||||
- vars/k8s-vars.yml
|
||||
|
||||
tasks:
|
||||
- name: Clone the stack repo
|
||||
|
@ -5,11 +5,11 @@
|
||||
PATH: "{{ ansible_env.PATH }}:/home/{{ansible_user}}/bin"
|
||||
|
||||
tasks:
|
||||
- name: Clone the stack repo
|
||||
- name: Clone the fixturenet-laconicd-stack repo
|
||||
command: laconic-so fetch-stack git.vdb.to/cerc-io/fixturenet-laconicd-stack --pull
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Clone the fixturenet-laconicd repo
|
||||
- name: Setup repos for fixturenet-laconicd
|
||||
command: laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd setup-repositories
|
||||
|
||||
- name: Build container images
|
||||
|
@ -7,9 +7,10 @@
|
||||
vars_files:
|
||||
- vars/k8s-vars.yml
|
||||
- vars/container-vars.yml
|
||||
- vars/dns-vars.yml
|
||||
|
||||
tasks:
|
||||
- name: Generate the spec file for the container-registry stack
|
||||
- name: Generate spec file for the container-registry stack
|
||||
template:
|
||||
src: "./templates/specs/container-registry.spec.j2"
|
||||
dest: "{{ansible_env.HOME}}/container-registry.spec"
|
||||
@ -58,6 +59,11 @@
|
||||
environment:
|
||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||
|
||||
# TODO: Investigate why container registry throws error if started immediately
|
||||
- name: Wait for 90 seconds
|
||||
pause:
|
||||
seconds: 90
|
||||
|
||||
- name: Deploy the container registry
|
||||
command: >
|
||||
laconic-so deployment --dir container-registry start
|
||||
@ -69,26 +75,30 @@
|
||||
|
||||
- name: Decode and extract cluster-id
|
||||
set_fact:
|
||||
cluster_id: "{{ deployment_file.content | b64decode | regex_search('cluster-id: (.+)', '\\1') }}"
|
||||
extracted_cluster_id: "{{ deployment_file.content | b64decode | regex_search('cluster-id: (.+)', '\\1') }}"
|
||||
|
||||
- name: Set modified cluster-id
|
||||
set_fact:
|
||||
formatted_cluster_id: "{{ extracted_cluster_id | replace('[', '') | replace(']', '') | replace(\"'\", '') }}"
|
||||
|
||||
- name: Display the cluster ID
|
||||
debug:
|
||||
msg: "The cluster ID is: {{ cluster_id }}"
|
||||
msg: "The cluster ID is: {{ formatted_cluster_id }}"
|
||||
|
||||
- name: Annotate ingress for proxy body size
|
||||
command: >
|
||||
kubectl annotate ingress {{ cluster_id }}-ingress nginx.ingress.kubernetes.io/proxy-body-size=0
|
||||
kubectl annotate ingress {{ formatted_cluster_id }}-ingress nginx.ingress.kubernetes.io/proxy-body-size=0
|
||||
environment:
|
||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||
|
||||
- name: Annotate ingress for proxy read timeout
|
||||
command: >
|
||||
kubectl annotate ingress {{ cluster_id }}-ingress nginx.ingress.kubernetes.io/proxy-read-timeout=600
|
||||
kubectl annotate ingress {{ formatted_cluster_id }}-ingress nginx.ingress.kubernetes.io/proxy-read-timeout=600
|
||||
environment:
|
||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||
|
||||
- name: Annotate ingress for proxy send timeout
|
||||
command: >
|
||||
kubectl annotate ingress {{ cluster_id }}-ingress nginx.ingress.kubernetes.io/proxy-send-timeout=600
|
||||
kubectl annotate ingress {{ formatted_cluster_id }}-ingress nginx.ingress.kubernetes.io/proxy-send-timeout=600
|
||||
environment:
|
||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||
|
@ -116,7 +116,7 @@
|
||||
src: ./templates/k8s.yml.j2
|
||||
dest: "{{ ansible_env.HOME }}/service-provider-template/group_vars/{{ org_id }}_{{ location_id }}/k8s.yml"
|
||||
|
||||
- name: Copy wildcard-pwa-example.yml to the remote VM
|
||||
- name: Copy wildcard-pwa-{{ base_domain }}.yaml to the remote VM
|
||||
template:
|
||||
src: ./templates/wildcard-pwa-example.yml.j2
|
||||
dest: "{{ ansible_env.HOME }}/service-provider-template/files/manifests/wildcard-pwa-{{ base_domain }}.yaml"
|
||||
|
@ -1,2 +1,5 @@
|
||||
CERC_LACONICD_USER_KEY={{ALICE_PK}}
|
||||
CERC_LACONICD_BOND_ID={{BOND_ID}}
|
||||
CERC_LACONICD_RPC_ENDPOINT=http://{{ org_id }}-{{ location_id }}-cluster-control.{{ full_domain }}:26657
|
||||
CERC_LACONICD_GQL_ENDPOINT=http://{{ org_id }}-{{ location_id }}-cluster-control.{{ full_domain }}:9473/api
|
||||
LACONIC_HOSTED_ENDPOINT=http://{{ org_id }}-{{ location_id }}-cluster-control.{{ full_domain }}:9473
|
||||
|
@ -1,3 +1,3 @@
|
||||
CERC_WEBAPP_DEBUG=0.1.0
|
||||
LACONIC_HOSTED_CONFIG_app_api_url=https://webapp-deployer-api.pwa.{{ full_domain }}
|
||||
LACONIC_HOSTED_CONFIG_app_console_link=https://laconicd.laconic.com/console?query=%0A%20%20fragment%20ValueParts%20on%20Value%20%7B%0A%20%20%20%20...%20on%20BooleanValue%20%7B%0A%20%20%20%20%20%20bool%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20IntValue%20%7B%0A%20%20%20%20%20%20int%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20FloatValue%20%7B%0A%20%20%20%20%20%20float%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20StringValue%20%7B%0A%20%20%20%20%20%20string%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20BytesValue%20%7B%0A%20%20%20%20%20%20bytes%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20LinkValue%20%7B%0A%20%20%20%20%20%20link%3A%20value%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20fragment%20AttrParts%20on%20Attribute%20%7B%0A%20%20%20%20key%0A%20%20%20%20value%20%7B%0A%20%20%20%20%20%20...ValueParts%0A%20%20%20%20%20%20...%20on%20ArrayValue%20%7B%0A%20%20%20%20%20%20%20%20value%20%7B%0A%20%20%20%20%20%20%20%20%20%20...ValueParts%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%7B%0A%20%20%20%20getRecordsByIds(ids%3A%20%5B%22#RQID#%22%5D)%20%7B%0A%20%20%20%20%20%20id%0A%20%20%20%20%20%20names%0A%20%20%20%20%20%20bondId%0A%20%20%20%20%20%20createTime%0A%20%20%20%20%20%20expiryTime%0A%20%20%20%20%20%20owners%0A%20%20%20%20%20%20attributes%20%7B%0A%20%20%20%20%20%20%20%20...AttrParts%0A%20%20%20%20%20%20%20%20value%20%7B%0A%20%20%20%20%20%20%20%20%20%20...%20on%20MapValue%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20map%3A%20value%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20...AttrParts%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A
|
||||
LACONIC_HOSTED_CONFIG_app_console_link=http://{{ org_id }}-{{ location_id }}-cluster-control.{{ full_domain }}:9473/console?query=%0A%20%20fragment%20ValueParts%20on%20Value%20%7B%0A%20%20%20%20...%20on%20BooleanValue%20%7B%0A%20%20%20%20%20%20bool%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20IntValue%20%7B%0A%20%20%20%20%20%20int%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20FloatValue%20%7B%0A%20%20%20%20%20%20float%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20StringValue%20%7B%0A%20%20%20%20%20%20string%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20BytesValue%20%7B%0A%20%20%20%20%20%20bytes%3A%20value%0A%20%20%20%20%7D%0A%20%20%20%20...%20on%20LinkValue%20%7B%0A%20%20%20%20%20%20link%3A%20value%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20fragment%20AttrParts%20on%20Attribute%20%7B%0A%20%20%20%20key%0A%20%20%20%20value%20%7B%0A%20%20%20%20%20%20...ValueParts%0A%20%20%20%20%20%20...%20on%20ArrayValue%20%7B%0A%20%20%20%20%20%20%20%20value%20%7B%0A%20%20%20%20%20%20%20%20%20%20...ValueParts%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%7B%0A%20%20%20%20getRecordsByIds(ids%3A%20%5B%22#RQID#%22%5D)%20%7B%0A%20%20%20%20%20%20id%0A%20%20%20%20%20%20names%0A%20%20%20%20%20%20bondId%0A%20%20%20%20%20%20createTime%0A%20%20%20%20%20%20expiryTime%0A%20%20%20%20%20%20owners%0A%20%20%20%20%20%20attributes%20%7B%0A%20%20%20%20%20%20%20%20...AttrParts%0A%20%20%20%20%20%20%20%20value%20%7B%0A%20%20%20%20%20%20%20%20%20%20...%20on%20MapValue%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20map%3A%20value%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20...AttrParts%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A
|
||||
nabarun marked this conversation as resolved
Outdated
|
||||
|
@ -25,8 +25,8 @@ security:
|
||||
resources:
|
||||
containers:
|
||||
reservations:
|
||||
cpus: 4
|
||||
memory: 8G
|
||||
cpus: "{{ cpu_reservation }}"
|
||||
memory: "{{ memory_reservation }}"
|
||||
limits:
|
||||
cpus: 6
|
||||
memory: 16G
|
||||
|
@ -1,3 +1,3 @@
|
||||
container_registry_username: ""
|
||||
container_registry_password: ""
|
||||
container_registry_domain: "container-registry.pwa.{{ dns_domain }}.com"
|
||||
container_registry_domain: "container-registry.pwa.{{ full_domain }}"
|
||||
|
@ -4,4 +4,5 @@ vault_passphrase: ""
|
||||
org_id: ""
|
||||
location_id: ""
|
||||
base_domain: ""
|
||||
support_email: ""
|
||||
ansible_ssh_extra_args: '-o StrictHostKeyChecking=no'
|
||||
|
@ -1,3 +1,5 @@
|
||||
authority_name: ""
|
||||
ALICE_PK: "{{ ALICE_PK }}"
|
||||
BOND_ID: "{{ BOND_ID }}"
|
||||
cpu_reservation: ""
|
||||
memory_reservation: ""
|
||||
|
Loading…
Reference in New Issue
Block a user
should use the node that the user has just setup