diff --git a/meta-digi-dey/classes/aws-iot.bbclass b/meta-digi-dey/classes/aws-iot.bbclass index 1ec839042..259506024 100644 --- a/meta-digi-dey/classes/aws-iot.bbclass +++ b/meta-digi-dey/classes/aws-iot.bbclass @@ -85,3 +85,26 @@ def get_log_level(d): return log_flags +####################### +# AWS Greengrass Core # +####################### + +# +# Verisign root CA server certificate used to authenticate the AWS IoT server. +# +# https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem +# +AWS_GGCORE_ROOT_CA ?= "aws-root-ca.pem" + +# Greengrass core device certificate +AWS_GGCORE_CERTIFICATE ?= "gg-core.pem" + +# Greengrass core device private key +AWS_GGCORE_PRIVATE_KEY ?= "gg-core.key" + +# Greengrass core Thing ARN +AWS_GGCORE_THING_ARN ?= "" + +# AWS IoT endpoint (check your account) +# CLI: aws iot describe-endpoint +AWS_GGCORE_IOT_HOST ?= "" diff --git a/meta-digi-dey/recipes-aws/greengrass/greengrass_1.0.0.bb b/meta-digi-dey/recipes-aws/greengrass/greengrass_1.0.0.bb index c73977241..af6c86b35 100644 --- a/meta-digi-dey/recipes-aws/greengrass/greengrass_1.0.0.bb +++ b/meta-digi-dey/recipes-aws/greengrass/greengrass_1.0.0.bb @@ -93,7 +93,7 @@ python() { S = "${WORKDIR}/${BPN}" -inherit update-rc.d useradd +inherit aws-iot update-rc.d useradd GG_USESYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'yes', 'no', d)}" @@ -118,6 +118,29 @@ do_install() { install -m 0755 ${WORKDIR}/greengrass-init ${D}${sysconfdir}/init.d/greengrass sed -i -e "s,##GG_INSTALL_DIR##,/${BPN},g" ${D}${sysconfdir}/init.d/greengrass + # If certificates do exist, install them and update the config file + if [ -f "${AWS_IOT_CERTS_DIR}/${AWS_GGCORE_ROOT_CA}" ] && \ + [ -f "${AWS_IOT_CERTS_DIR}/${AWS_GGCORE_CERTIFICATE}" ] && \ + [ -f "${AWS_IOT_CERTS_DIR}/${AWS_GGCORE_PRIVATE_KEY}" ]; then + install -m 0644 "${AWS_IOT_CERTS_DIR}/${AWS_GGCORE_ROOT_CA}" \ + "${AWS_IOT_CERTS_DIR}/${AWS_GGCORE_CERTIFICATE}" \ + "${AWS_IOT_CERTS_DIR}/${AWS_GGCORE_PRIVATE_KEY}" \ + ${D}/${BPN}/configuration/certs/ + sed -i -e "s,\[ROOT_CA_PEM_HERE],${AWS_GGCORE_ROOT_CA},g" \ + -e "s,\[CLOUD_PEM_CRT_HERE],${AWS_GGCORE_CERTIFICATE},g" \ + -e "s,\[CLOUD_PEM_KEY_HERE],${AWS_GGCORE_PRIVATE_KEY},g" \ + ${D}/${BPN}/configuration/config.json + fi + + # Configure the rest of GG Core parameters + [ -n "${AWS_GGCORE_THING_ARN}" ] && sed -i -e "s,\[THING_ARN_HERE],${AWS_GGCORE_THING_ARN},g" ${D}/${BPN}/configuration/config.json + if [ -n "${AWS_GGCORE_IOT_HOST}" ]; then + AWS_GGCORE_HOST_PREFIX="$(echo ${AWS_GGCORE_IOT_HOST} | sed -e 's,\([^.]\+\)\.iot.*,\1,g')" + AWS_GGCORE_REGION="$(echo ${AWS_GGCORE_IOT_HOST} | sed -e 's,.*.iot\.\([^.]\+\)\..*,\1,g')" + [ -n "${AWS_GGCORE_HOST_PREFIX}" ] && sed -i -e "s,\[HOST_PREFIX_HERE],${AWS_GGCORE_HOST_PREFIX},g" ${D}/${BPN}/configuration/config.json + [ -n "${AWS_GGCORE_REGION}" ] && sed -i -e "s,\[AWS_REGION_HERE],${AWS_GGCORE_REGION},g" ${D}/${BPN}/configuration/config.json + fi + # Configure whether to use systemd or not sed -i -e "/useSystemd/{s,\[yes|no],${GG_USESYSTEMD},g}" ${D}/${BPN}/configuration/config.json } @@ -158,6 +181,8 @@ pkg_postinst_${PN}() { FILES_${PN} = "/${BPN} ${sysconfdir}" +CONFFILES_${PN} += "/${BPN}/configuration/config.json" + INITSCRIPT_NAME = "greengrass" INITSCRIPT_PARAMS = "defaults 80 20"