{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"WhatsCRMStack":{"id":"WhatsCRMStack","path":"WhatsCRMStack","children":{"WhatsCRM DefaultVPC":{"id":"WhatsCRM DefaultVPC","path":"WhatsCRMStack/WhatsCRM DefaultVPC","children":{"PublicSubnet1":{"id":"PublicSubnet1","path":"WhatsCRMStack/WhatsCRM DefaultVPC/PublicSubnet1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.195.0","metadata":["*"]}},"PublicSubnet2":{"id":"PublicSubnet2","path":"WhatsCRMStack/WhatsCRM DefaultVPC/PublicSubnet2","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.195.0","metadata":["*"]}},"PublicSubnet3":{"id":"PublicSubnet3","path":"WhatsCRMStack/WhatsCRM DefaultVPC/PublicSubnet3","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.195.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.195.0","metadata":["*"]}},"WhatsCRM Instance SG":{"id":"WhatsCRM Instance SG","path":"WhatsCRMStack/WhatsCRM Instance SG","children":{"Resource":{"id":"Resource","path":"WhatsCRMStack/WhatsCRM Instance SG/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"WhatsCRM Security Group Allow SSH and HTTP","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"securityGroupIngress":[{"cidrIp":"0.0.0.0/0","ipProtocol":"tcp","fromPort":22,"toPort":22,"description":"Allow SSH"},{"cidrIp":"0.0.0.0/0","ipProtocol":"tcp","fromPort":3000,"toPort":3000,"description":"Allow Node.js app"},{"cidrIp":"0.0.0.0/0","ipProtocol":"tcp","fromPort":80,"toPort":80,"description":"Allow HTTP port 80"}],"vpcId":"vpc-06d9e98194dfc09ac"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.195.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.195.0","metadata":[{"allowAllOutbound":true,"description":"*","vpc":"*"},{"addIngressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*","*"]},{"addIngressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*","*"]},{"addIngressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*","*"]}]}},"WhatsCRMKeyPair":{"id":"WhatsCRMKeyPair","path":"WhatsCRMStack/WhatsCRMKeyPair","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::KeyPair","aws:cdk:cloudformation:props":{"keyName":"whatscrm-key"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnKeyPair","version":"2.195.0"}},"WhatsCRMInstance":{"id":"WhatsCRMInstance","path":"WhatsCRMStack/WhatsCRMInstance","children":{"InstanceRole":{"id":"InstanceRole","path":"WhatsCRMStack/WhatsCRMInstance/InstanceRole","children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"WhatsCRMStack/WhatsCRMInstance/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.195.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"WhatsCRMStack/WhatsCRMInstance/InstanceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"tags":[{"key":"Name","value":"WhatsCRMStack/WhatsCRMInstance"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.195.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.195.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]}},"InstanceProfile":{"id":"InstanceProfile","path":"WhatsCRMStack/WhatsCRMInstance/InstanceProfile","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"WhatsCRMInstanceInstanceRole0023A5B8"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"2.195.0"}},"Resource":{"id":"Resource","path":"WhatsCRMStack/WhatsCRMInstance/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Instance","aws:cdk:cloudformation:props":{"availabilityZone":"sa-east-1a","iamInstanceProfile":{"Ref":"WhatsCRMInstanceInstanceProfileA929630B"},"imageId":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestal2023amikernel61x8664C96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.micro","keyName":"whatscrm-key","securityGroupIds":[{"Fn::GetAtt":["WhatsCRMInstanceSG961931E3","GroupId"]}],"subnetId":"subnet-0d3f459fdf2f25b6f","tags":[{"key":"Name","value":"WhatsCRMStack/WhatsCRMInstance"}],"userData":{"Fn::Base64":"#!/bin/bash\nsudo dnf update -y\nsudo dnf groupinstall \"Development Tools\" -y\nsudo dnf install nftables -y\nsudo dnf install -y git mariadb105-server gcc-c++ make\nsudo systemctl enable --now mariadb\nsudo mysqladmin -u root password 'h3o9p7325rR!' || true\nsudo mysql -uroot -ph3o9p7325rR\\! -e \"CREATE DATABASE IF NOT EXISTS whatscrm;\"\nsudo mysql -uroot -ph3o9p7325rR\\! -e \"SELECT User FROM mysql.user WHERE User = 'whatscrmuser' AND Host = 'localhost';\" | grep -q 'whatscrmuser' || sudo mysql -uroot -ph3o9p7325rR\\! -e \"CREATE USER 'whatscrmuser'@'localhost' IDENTIFIED BY 'z31tg31stT\\!';\"\nsudo mysql -uroot -ph3o9p7325rR\\! -e \"GRANT ALL PRIVILEGES ON whatscrm.* TO 'whatscrmuser'@'localhost';\"\nsudo mysql -uroot -ph3o9p7325rR\\! -e \"FLUSH PRIVILEGES;\"\nsudo -u ec2-user git config --global user.name \"ccasanovas\"\nsudo -u ec2-user git config --global user.email \"ccasanovas.comex@gmail.com.com\"\nsudo -u ec2-user bash -c 'if [ ! -d /home/ec2-user/meta-crm ]; then git clone https://ccasanovas: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@github.com/ccasanovas/meta-crm.git /home/ec2-user/meta-crm; else cd /home/ec2-user/meta-crm && git pull; fi'\nif [ -f /home/ec2-user/meta-crm/export.sql ]; then sudo -u ec2-user mysql -u whatscrmuser -pz31tg31stT\\! whatscrm < /home/ec2-user/meta-crm/export.sql; fi\nTOKEN=$(curl -X PUT \"http://169.254.169.254/latest/api/token\" -H \"X-aws-ec2-metadata-token-ttl-seconds: 21600\")\nPUBLIC_DNS=$(curl -H \"X-aws-ec2-metadata-token: $TOKEN\" http://169.254.169.254/latest/meta-data/public-hostname)\nsudo -u ec2-user sed -i 's/^DB_USER=.*/DB_USER=whatscrmuser/' /home/ec2-user/meta-crm/.env\nsudo -u ec2-user sed -i 's/^DB_PASSWORD=.*/DB_PASSWORD=z31tg31stT!/' /home/ec2-user/meta-crm/.env\nsudo -u ec2-user sed -i 's/^DB_NAME=.*/DB_NAME=whatscrm/' /home/ec2-user/meta-crm/.env\nsudo -u ec2-user sed -i \"s|^FRONTENDURI=.*|FRONTENDURI=http://$PUBLIC_DNS|\" /home/ec2-user/meta-crm/.env || echo \"FRONTENDURI=http://$PUBLIC_DNS\" | sudo -u ec2-user tee -a /home/ec2-user/meta-crm/.env\nsudo -u ec2-user sed -i \"s|^BACKENDURI=.*|BACKENDURI=http://$PUBLIC_DNS:3000|\" /home/ec2-user/meta-crm/.env || echo \"BACKENDURI=http://$PUBLIC_DNS:3000\" | sudo -u ec2-user tee -a /home/ec2-user/meta-crm/.env\nsudo -u ec2-user bash -l -c \"curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash && source /home/ec2-user/.nvm/nvm.sh && nvm install 21 && nvm alias default 21 && nvm use 21.7.3\"\"\ncd /home/ec2-user/meta-crm\nsudo fallocate -l 2G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\nnpm install -g yarn\nyarn install --ignore-engines\nsudo tee /etc/systemd/system/meta-crm.service > /dev/null <<EOF\n[Unit]\nDescription=Meta CRM Node.js Server\nAfter=network.target\n\n[Service]\nUser=ec2-user\nWorkingDirectory=/home/ec2-user/meta-crm\nExecStart=/bin/bash -c \"cd /home/ec2-user/meta-crm && yarn install --ignore-engines && /home/ec2-user/.nvm/versions/node/v21.7.3/bin/node server.js\"\nRestart=always\nRestartSec=10\nEnvironment=NODE_ENV=production\n\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\nsudo systemctl enable meta-crm.service\nsudo systemctl start meta-crm.service"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInstance","version":"2.195.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Instance","version":"2.195.0","metadata":[{"instanceType":"*","keyName":"*","machineImage":"*","securityGroup":"*","userData":"*","vpc":"*"}]}},"SsmParameterValue:--aws--service--ami-amazon-linux-latest--al2023-ami-kernel-6.1-x86_64:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--ami-amazon-linux-latest--al2023-ami-kernel-6.1-x86_64:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"WhatsCRMStack/SsmParameterValue:--aws--service--ami-amazon-linux-latest--al2023-ami-kernel-6.1-x86_64:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.195.0"}},"SsmParameterValue:--aws--service--ami-amazon-linux-latest--al2023-ami-kernel-6.1-x86_64:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--ami-amazon-linux-latest--al2023-ami-kernel-6.1-x86_64:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"WhatsCRMStack/SsmParameterValue:--aws--service--ami-amazon-linux-latest--al2023-ami-kernel-6.1-x86_64:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.195.0","metadata":[]}},"WhatsCRMInstancePublicIP":{"id":"WhatsCRMInstancePublicIP","path":"WhatsCRMStack/WhatsCRMInstancePublicIP","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.195.0"}},"CDKMetadata":{"id":"CDKMetadata","path":"WhatsCRMStack/CDKMetadata","children":{"Default":{"id":"Default","path":"WhatsCRMStack/CDKMetadata/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.195.0"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"WhatsCRMStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.195.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"WhatsCRMStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.195.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.195.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"2.195.0"}}}