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
|
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:
|
- 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>
|
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:
|
- Copy the vars files:
|
||||||
|
|
||||||
@ -123,6 +123,7 @@ To get started, follow the [installation](../README.md#installation) guide to se
|
|||||||
org_id: "" # eg: lcn
|
org_id: "" # eg: lcn
|
||||||
location_id: "" # eg: cad
|
location_id: "" # eg: cad
|
||||||
base_domain: "" # eg: laconic
|
base_domain: "" # eg: laconic
|
||||||
|
support_email: "" # eg: support@laconic.com
|
||||||
|
|
||||||
# vars/container-vars.yml
|
# vars/container-vars.yml
|
||||||
container_registry_username: "" # username to login to the container registry
|
container_registry_username: "" # username to login to the container registry
|
||||||
@ -130,6 +131,8 @@ To get started, follow the [installation](../README.md#installation) guide to se
|
|||||||
|
|
||||||
# vars/webapp-vars.yml
|
# 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
|
- 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"
|
src: "./templates/laconic.yml.j2"
|
||||||
dest: "webapp-deployer/data/config/laconic.yml"
|
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
|
- name: Push images to container registry
|
||||||
command: laconic-so deployment --dir webapp-deployer push-images
|
command: laconic-so deployment --dir webapp-deployer push-images
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
vars_files:
|
vars_files:
|
||||||
- vars/webapp-vars.yml
|
- vars/webapp-vars.yml
|
||||||
- vars/dns-vars.yml
|
- vars/dns-vars.yml
|
||||||
|
- vars/k8s-vars.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Clone webapp-deployment-status-ui repository
|
- name: Clone webapp-deployment-status-ui repository
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
vars_files:
|
vars_files:
|
||||||
- vars/webapp-vars.yml
|
- vars/webapp-vars.yml
|
||||||
|
- vars/dns-vars.yml
|
||||||
|
- vars/k8s-vars.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Clone the stack repo
|
- name: Clone the stack repo
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
PATH: "{{ ansible_env.PATH }}:/home/{{ansible_user}}/bin"
|
PATH: "{{ ansible_env.PATH }}:/home/{{ansible_user}}/bin"
|
||||||
|
|
||||||
tasks:
|
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
|
command: laconic-so fetch-stack git.vdb.to/cerc-io/fixturenet-laconicd-stack --pull
|
||||||
ignore_errors: yes
|
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
|
command: laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd setup-repositories
|
||||||
|
|
||||||
- name: Build container images
|
- name: Build container images
|
||||||
|
@ -7,9 +7,10 @@
|
|||||||
vars_files:
|
vars_files:
|
||||||
- vars/k8s-vars.yml
|
- vars/k8s-vars.yml
|
||||||
- vars/container-vars.yml
|
- vars/container-vars.yml
|
||||||
|
- vars/dns-vars.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Generate the spec file for the container-registry stack
|
- name: Generate spec file for the container-registry stack
|
||||||
template:
|
template:
|
||||||
src: "./templates/specs/container-registry.spec.j2"
|
src: "./templates/specs/container-registry.spec.j2"
|
||||||
dest: "{{ansible_env.HOME}}/container-registry.spec"
|
dest: "{{ansible_env.HOME}}/container-registry.spec"
|
||||||
@ -58,6 +59,11 @@
|
|||||||
environment:
|
environment:
|
||||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
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
|
- name: Deploy the container registry
|
||||||
command: >
|
command: >
|
||||||
laconic-so deployment --dir container-registry start
|
laconic-so deployment --dir container-registry start
|
||||||
@ -69,26 +75,30 @@
|
|||||||
|
|
||||||
- name: Decode and extract cluster-id
|
- name: Decode and extract cluster-id
|
||||||
set_fact:
|
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
|
- name: Display the cluster ID
|
||||||
debug:
|
debug:
|
||||||
msg: "The cluster ID is: {{ cluster_id }}"
|
msg: "The cluster ID is: {{ formatted_cluster_id }}"
|
||||||
|
|
||||||
- name: Annotate ingress for proxy body size
|
- name: Annotate ingress for proxy body size
|
||||||
command: >
|
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:
|
environment:
|
||||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||||
|
|
||||||
- name: Annotate ingress for proxy read timeout
|
- name: Annotate ingress for proxy read timeout
|
||||||
command: >
|
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:
|
environment:
|
||||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||||
|
|
||||||
- name: Annotate ingress for proxy send timeout
|
- name: Annotate ingress for proxy send timeout
|
||||||
command: >
|
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:
|
environment:
|
||||||
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
KUBECONFIG: "{{ ansible_env.HOME }}/.kube/config-default.yaml"
|
||||||
|
@ -116,7 +116,7 @@
|
|||||||
src: ./templates/k8s.yml.j2
|
src: ./templates/k8s.yml.j2
|
||||||
dest: "{{ ansible_env.HOME }}/service-provider-template/group_vars/{{ org_id }}_{{ location_id }}/k8s.yml"
|
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:
|
template:
|
||||||
src: ./templates/wildcard-pwa-example.yml.j2
|
src: ./templates/wildcard-pwa-example.yml.j2
|
||||||
dest: "{{ ansible_env.HOME }}/service-provider-template/files/manifests/wildcard-pwa-{{ base_domain }}.yaml"
|
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_USER_KEY={{ALICE_PK}}
|
||||||
CERC_LACONICD_BOND_ID={{BOND_ID}}
|
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
|
CERC_WEBAPP_DEBUG=0.1.0
|
||||||
LACONIC_HOSTED_CONFIG_app_api_url=https://webapp-deployer-api.pwa.{{ full_domain }}
|
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
|
||||||
|
@ -25,8 +25,8 @@ security:
|
|||||||
resources:
|
resources:
|
||||||
containers:
|
containers:
|
||||||
reservations:
|
reservations:
|
||||||
cpus: 4
|
cpus: "{{ cpu_reservation }}"
|
||||||
memory: 8G
|
memory: "{{ memory_reservation }}"
|
||||||
limits:
|
limits:
|
||||||
cpus: 6
|
cpus: 6
|
||||||
memory: 16G
|
memory: 16G
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
container_registry_username: ""
|
container_registry_username: ""
|
||||||
container_registry_password: ""
|
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: ""
|
org_id: ""
|
||||||
location_id: ""
|
location_id: ""
|
||||||
base_domain: ""
|
base_domain: ""
|
||||||
|
support_email: ""
|
||||||
ansible_ssh_extra_args: '-o StrictHostKeyChecking=no'
|
ansible_ssh_extra_args: '-o StrictHostKeyChecking=no'
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
authority_name: ""
|
authority_name: ""
|
||||||
ALICE_PK: "{{ ALICE_PK }}"
|
ALICE_PK: "{{ ALICE_PK }}"
|
||||||
BOND_ID: "{{ BOND_ID }}"
|
BOND_ID: "{{ BOND_ID }}"
|
||||||
|
cpu_reservation: ""
|
||||||
|
memory_reservation: ""
|
||||||
|
Loading…
Reference in New Issue
Block a user