Commit 1a10233c authored by Muhammad Umair Khan's avatar Muhammad Umair Khan
Browse files

preload networks via Ansible & configure IP SAN for local self-signed certs

parent 68eaa9cd
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ The following flags are required.
       --namespace        Namespace where registry service and secret reside.
       --secret           Secret name for CA certificate and server certificate/key pair.
       --certdir          Directory where certificates should be stored.
       --host             Host name or IP address for SAN.
EOF
    exit 1
}
@@ -35,6 +36,10 @@ while [[ $# -gt 0 ]]; do
            certdir="$2"
            shift
            ;;
        --host)
            host="$2"
            shift
            ;;
        *)
            usage
            ;;
@@ -46,14 +51,21 @@ done
[ -z ${secret} ] && secret=meep-ingress
[ -z ${namespace} ] && namespace=default
[ -z ${certdir} ] && certdir=$(mktemp -d)
[ -z ${host} ] && host="192.168.20.167"

if [ ! -x "$(command -v openssl)" ]; then
    echo "openssl not found"
    exit 1
fi

echo "creating certs in certdir: ${certdir}"
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ${certdir}/${service}.key -out ${certdir}/${service}.pem -subj "/CN=AdvantEDGE Default Certificate/O=InterDigital"
if [[ "$host" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    alt_name="IP:${host}"
else
    alt_name="DNS:${host}"
fi

echo "creating certs in certdir: ${certdir} for host: ${host} with SAN: ${alt_name}"
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ${certdir}/${service}.key -out ${certdir}/${service}.pem -subj "/CN=${host}/O=InterDigital" -addext "subjectAltName = ${alt_name}"

echo "creating secret: ${namespace}/${secret}"
kubectl create secret tls ${secret} \
+2 −1
Original line number Diff line number Diff line
@@ -786,7 +786,8 @@ func deployCreateRegistryCerts(chart string, cobraCmd *cobra.Command) {

func deployCreateIngressCerts(chart string, cobraCmd *cobra.Command) {
	certdir := deployData.workdir + "/certs"
	cmd := exec.Command("sh", "-c", chart+"/create-self-signed-cert.sh --certdir "+certdir)
	host := utils.RepoCfg.GetString("repo.deployment.ingress.host")
	cmd := exec.Command("sh", "-c", chart+"/create-self-signed-cert.sh --certdir "+certdir+" --host "+host)
	_, _ = utils.ExecuteCmd(cmd, cobraCmd)
}

+26 −0
Original line number Diff line number Diff line
@@ -289,6 +289,32 @@
  debug:
    msg: "{{ deploy_core.stdout_lines | default([]) }}"

# --- Import pre-loaded network scenarios ---

- name: Get meep-platform-ctrl service ClusterIP
  shell: "kubectl get svc meep-platform-ctrl -o jsonpath='{.spec.clusterIP}'"
  register: platform_ctrl_ip
  become: true
  environment:
    KUBECONFIG: "{{ target_home }}/.kube/config"

- name: Find all YAML network scenarios
  find:
    paths: "{{ mec_frontend_dir }}/networks"
    patterns: "*.yaml"
  register: scenario_files
  become: true
  become_user: "{{ target_user }}"

- name: Load, convert, and import scenarios to platform-ctrl API
  shell: |
    python3 -c "import sys, yaml, json; sc = yaml.safe_load(open('{{ item.path }}')); sc['name'] = '{{ item.path | basename | splitext | first }}'; print(json.dumps(sc))" | \
    curl -X POST -H "Content-Type: application/json" -d @- "http://{{ platform_ctrl_ip.stdout }}/platform-ctrl/v1/scenarios/{{ item.path | basename | splitext | first }}"
  loop: "{{ scenario_files.files }}"
  become: true
  become_user: "{{ target_user }}"
  ignore_errors: true

- name: "MEC Sandbox deployment complete"
  debug:
    msg: |