Moved repo url and email for letsencrypt to env variables
All checks were successful
AWS Deploy on Push / build (push) Successful in 4m15s

This commit is contained in:
2025-05-20 16:24:31 -05:00
parent 5698e7f26b
commit 639adba7eb
8 changed files with 45 additions and 20 deletions

View File

@@ -1,4 +1,6 @@
FREEDNS_User=MyFreeDNSUsername
FREEDNS_Password=MyFreeDNSPassword
DOMAIN_NAME=mydomain.com
SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EMYPUBLICKEY7+"
SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EMYPUBLICKEY7+"
REPO_URL="https://git.example.com/user/repo.git"
LETSENCRYPT_EMAIL="admin@example.com"

View File

@@ -44,6 +44,8 @@ jobs:
FREEDNS_Password: ${{ secrets.FREEDNS_PASSWORD }}
DOMAIN_NAME: ${{ secrets.DOMAIN_NAME }}
SSH_PUBLIC_KEY: ${{ secrets.SSH_PUBLIC_KEY }}
REPO_URL: ${{ secrets.REPO_URL }}
LETSENCRYPT_EMAIL: ${{ secrets.LETSENCRYPT_EMAIL }}
- name: Install AWS CLI
run: |

View File

@@ -15,6 +15,7 @@
"fullchain",
"gitea",
"iptv",
"LETSENCRYPT",
"nohup",
"passlib",
"pyjwt",

26
app.py
View File

@@ -10,24 +10,30 @@ freedns_user = os.environ.get("FREEDNS_User")
freedns_password = os.environ.get("FREEDNS_Password")
domain_name = os.environ.get("DOMAIN_NAME")
ssh_public_key = os.environ.get("SSH_PUBLIC_KEY")
repo_url = os.environ.get("REPO_URL")
letsencrypt_email = os.environ.get("LETSENCRYPT_EMAIL")
if not freedns_user or not freedns_password:
raise ValueError("FREEDNS_User and FREEDNS_Password environment variables must be set.")
required_vars = {
"FREEDNS_User": freedns_user,
"FREEDNS_Password": freedns_password,
"DOMAIN_NAME": domain_name,
"SSH_PUBLIC_KEY": ssh_public_key,
"REPO_URL": repo_url,
"LETSENCRYPT_EMAIL": letsencrypt_email
}
if not domain_name:
raise ValueError("DOMAIN_NAME environment variable must be set.")
if not ssh_public_key: # Check if SSH public key is set
raise ValueError("SSH_PUBLIC_KEY environment variable must be set.")
# Check for missing required variables
missing_vars = [k for k, v in required_vars.items() if not v]
if missing_vars:
raise ValueError(f"Missing required environment variables: {', '.join(missing_vars)}")
IptvUpdaterStack(app, "IptvUpdaterStack",
freedns_user=freedns_user,
freedns_password=freedns_password,
domain_name=domain_name,
ssh_public_key=ssh_public_key,
# If you don't specify 'env', the stack will be deployed to the account and region that are
# configured in your AWS CLI profile. Defaulting to the environment where the CLI is configured.
# env=cdk.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')),
repo_url=repo_url,
letsencrypt_email=letsencrypt_email
)
app.synth()

View File

@@ -19,6 +19,8 @@ class IptvUpdaterStack(Stack):
freedns_password: str,
domain_name: str,
ssh_public_key: str,
repo_url: str,
letsencrypt_email: str,
**kwargs
) -> None:
super().__init__(scope, construct_id, **kwargs)
@@ -165,7 +167,9 @@ class IptvUpdaterStack(Stack):
userdata.add_commands(
f'export FREEDNS_User="{freedns_user}"',
f'export FREEDNS_Password="{freedns_password}"',
f'export DOMAIN_NAME="{domain_name}"'
f'export DOMAIN_NAME="{domain_name}"',
f'export REPO_URL="{repo_url}"',
f'export LETSENCRYPT_EMAIL="{letsencrypt_email}"'
)
# Adds one or more commands to the userdata object.

View File

@@ -9,7 +9,7 @@ pip3 install certbot certbot-nginx
cd /home/ec2-user
git clone https://git.fiorinis.com/Home/iptv-updater-aws.git
git clone ${REPO_URL}
cd iptv-updater-aws
pip3 install -r requirements.txt
@@ -36,7 +36,7 @@ EOF
crontab -u root -l >/dev/null 2>&1 || (echo "" | crontab -u root -)
# Install and configure acme.sh
curl https://get.acme.sh | sh -s email=stefano@fiorinis.com
curl https://get.acme.sh | sh -s email=${LEFTENCRYPT_EMAIL}
# Configure acme.sh to use DNS API for FreeDNS
. "/.acme.sh/acme.sh.env"

View File

@@ -9,9 +9,14 @@ if [ -f ${PWD}/.env ]; then
fi
# Check if required environment variables are set
if [ -z "$FREEDNS_User" ] || [ -z "$FREEDNS_Password" ] || [ -z "$DOMAIN_NAME" ] || [ -z "$SSH_PUBLIC_KEY" ]; then
echo "Error: FREEDNS_User, FREEDNS_Password, DOMAIN_NAME, and SSH_PUBLIC_KEY must be set as environment variables or in a .env file."
exit 1
if [ -z "$FREEDNS_User" ] ||
[ -z "$FREEDNS_Password" ] ||
[ -z "$DOMAIN_NAME" ] ||
[ -z "$SSH_PUBLIC_KEY" ] ||
[ -z "$REPO_URL" ] ||
[ -z "$LETSENCRYPT_EMAIL" ]; then
echo "Error: FREEDNS_User, FREEDNS_Password, DOMAIN_NAME, SSH_PUBLIC_KEY, REPO_URL, and LETSENCRYPT_EMAIL must be set as environment variables or in a .env file."
exit 1
fi
# Deploy infrastructure

View File

@@ -9,9 +9,14 @@ if [ -f ${PWD}/.env ]; then
fi
# Check if required environment variables are set
if [ -z "$FREEDNS_User" ] || [ -z "$FREEDNS_Password" ] || [ -z "$DOMAIN_NAME" ] || [ -z "$SSH_PUBLIC_KEY" ]; then
echo "Error: FREEDNS_User, FREEDNS_Password, DOMAIN_NAME, and SSH_PUBLIC_KEY must be set as environment variables or in a .env file."
exit 1
if [ -z "$FREEDNS_User" ] ||
[ -z "$FREEDNS_Password" ] ||
[ -z "$DOMAIN_NAME" ] ||
[ -z "$SSH_PUBLIC_KEY" ] ||
[ -z "$REPO_URL" ] ||
[ -z "$LETSENCRYPT_EMAIL" ]; then
echo "Error: FREEDNS_User, FREEDNS_Password, DOMAIN_NAME, SSH_PUBLIC_KEY, REPO_URL, and LETSENCRYPT_EMAIL must be set as environment variables or in a .env file."
exit 1
fi
# Destroy infrastructure