From 860215517ce88ebd21c0cb8c3a7392e65216eeab Mon Sep 17 00:00:00 2001 From: lolli001 Date: Wed, 24 Jul 2024 15:22:43 -0400 Subject: [PATCH] Updated --- .../build.pkr.hcl => build.pkr.hcl | 15 ++++-- buildspec.yml | 48 ++++++++----------- 2 files changed, 33 insertions(+), 30 deletions(-) rename modules/image-pipeline/build.pkr.hcl => build.pkr.hcl (62%) diff --git a/modules/image-pipeline/build.pkr.hcl b/build.pkr.hcl similarity index 62% rename from modules/image-pipeline/build.pkr.hcl rename to build.pkr.hcl index d6efea1..e7a135c 100644 --- a/modules/image-pipeline/build.pkr.hcl +++ b/build.pkr.hcl @@ -1,5 +1,14 @@ +variable "project_name" { + type = string + default = "rhel-arm-image-pipeline-demo" +} + +variable "ansible_dir" { + type = string +} + source "amazon-ebs" "rhel" { - ami_name = "rhel-arm-{{timestamp}}" + ami_name = "${var.project_name}-{{timestamp}}" instance_type = "t3.micro" # Ensure the instance type is ARM64 compatible region = "us-gov-west-1" source_ami = "ami-03f5c6b8195c66b04" # Updated AMI ID for RHEL 9 ARM @@ -11,13 +20,13 @@ build { sources = ["source.amazon-ebs.rhel"] provisioner "ansible" { - playbook_file = "ansible/rhel-arm-baseline.yaml" + playbook_file = "${var.ansible_dir}/rhel-arm-baseline.yaml" } post-processor "shell-local" { inline_shebang = "/bin/sh" inline = [ - "echo 'Build finished!'", + "echo '${build.amis}' > ami_id.txt", ] } } \ No newline at end of file diff --git a/buildspec.yml b/buildspec.yml index 5c015f6..4e3a192 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -1,29 +1,24 @@ version: 0.2 -env: - variables: - AWS_REGION: "us-gov-west-1" - CODE_SRC_DIR: "source" - CODEBUILD_SRC_DIR_SourceAnsibleOutput: "/codebuild/output/src3467/src/s3/01" - phases: install: + runtime-versions: + python: 3.x commands: - - echo "Installing Python version 3.11 ..." - - pyenv global $PYTHON_311_VERSION - - stat ${CODEBUILD_SRC_DIR_SourceAnsibleOutput}/init.sh && bash ${CODEBUILD_SRC_DIR_SourceAnsibleOutput}/init.sh ${CODEBUILD_SRC_DIR_SourceAnsibleOutput} || echo "No init.sh script found" - - which pip3 || curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py - - which pip3 || python3 get-pip.py --user - - stat $(python -m site --user-base)/bin/ansible-playbook || python3 -m pip install --user ansible pywinrm - - stat /bin/packer || curl -s -qL -o packer.zip https://releases.hashicorp.com/packer/1.10.3/packer_1.10.3_linux_amd64.zip - - stat /bin/packer || unzip -o packer.zip - - stat /bin/packer || $(mv packer /bin && rm packer.zip) + - echo "Installing pip, Ansible, and Packer" + - which pip3 || curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py --user + - stat $(python3 -m site --user-base)/bin/ansible-playbook || python3 -m pip install --user ansible pywinrm + - export PATH=$PATH:/root/.local/bin + - if ! stat /bin/packer; then + curl -s -qL -o packer.zip https://releases.hashicorp.com/packer/1.10.3/packer_1.10.3_linux_amd64.zip; + unzip -o packer.zip; + mv packer /bin; + rm packer.zip; + fi + pre_build: commands: - - echo "Configuring AWS credentials" - - echo "Fetching AWS credentials from ECS metadata service" - - echo "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=${AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}" - - curl -qL -o aws_credentials.json http://169.254.170.2/${AWS_CONTAINER_CREDENTIALS_RELATIVE_URI} > aws_credentials.json + - echo "Configuring AWS CLI" - aws configure set region $AWS_REGION - aws configure set aws_access_key_id `jq -r '.AccessKeyId' aws_credentials.json` - export AWS_ACCESS_KEY_ID=`jq -r '.AccessKeyId' aws_credentials.json` @@ -31,19 +26,18 @@ phases: - export AWS_SECRET_ACCESS_KEY=`jq -r '.SecretAccessKey' aws_credentials.json` - aws configure set aws_session_token `jq -r '.Token' aws_credentials.json` - export AWS_SESSION_TOKEN=`jq -r '.Token' aws_credentials.json` + build: commands: - - echo "Building HashiCorp Packer template, build.pkr.hcl" - - cd ${CODEBUILD_SRC_DIR}/${CODE_SRC_DIR} - - /bin/packer init build.pkr.hcl - - ln -s ${CODEBUILD_SRC_DIR_SourceAnsibleOutput}/roles - - /bin/packer build -var project_name=rhel-arm-image-pipeline-demo -var ansible_dir=${CODEBUILD_SRC_DIR_SourceAnsibleOutput} build.pkr.hcl + - echo "Running Packer build" + - packer init build.pkr.hcl + - packer build -var project_name=rhel-arm-image-pipeline-demo -var ansible_dir=${CODEBUILD_SRC_DIR_SourceAnsibleOutput} build.pkr.hcl + post_build: commands: - - cd ${CODEBUILD_SRC_DIR}/${CODE_SRC_DIR} + - echo "Checking for the AMI ID file" - test -s ami_id.txt || exit 1 artifacts: files: - - '**/*' - discard-paths: yes \ No newline at end of file + - ami_id.txt \ No newline at end of file