split make files in myos project and install files in yaip project
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
# target aws: Fire docker-build-aws, Call aws ARGS
|
||||
.PHONY: aws
|
||||
aws: $(if $(DOCKER_RUN),docker-build-aws)
|
||||
$(call aws,$(ARGS))
|
||||
|
||||
# target aws-deploy: Call aws deploy create-deployment with application-name CODEDEPLOY_APP_NAME
|
||||
.PHONY: aws-deploy
|
||||
aws-deploy:
|
||||
$(call aws,deploy create-deployment \
|
||||
--application-name $(CODEDEPLOY_APP_NAME) \
|
||||
--deployment-config-name $(CODEDEPLOY_DEPLOYMENT_CONFIG) \
|
||||
--deployment-group-name $(CODEDEPLOY_DEPLOYMENT_GROUP) \
|
||||
--description "$(CODEDEPLOY_DESCRIPTION)" \
|
||||
--github-location repository=$(CODEDEPLOY_GITHUB_REPO)$(comma)commitId=$(CODEDEPLOY_GITHUB_COMMIT_ID))
|
||||
|
||||
# target aws-docker-login: Fire aws-ecr-get-login
|
||||
.PHONY: aws-docker-login
|
||||
aws-docker-login: aws-ecr-get-login
|
||||
|
||||
# target aws-ecr-get-login: Call aws ecr get-login
|
||||
.PHONY: aws-ecr-get-login
|
||||
aws-ecr-get-login:
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval docker_login := $(shell $(call aws,ecr get-login --no-include-email --region $(AWS_DEFAULT_REGION))))
|
||||
$(eval IGNORE_DRYRUN := FALSE)
|
||||
$(RUN) $(docker_login)
|
||||
|
||||
# target aws-iam-create-role-%: Call aws iam create-role with role-name % and role-policy file aws/policies/%-trust.json
|
||||
.PHONY: aws-iam-create-role-%
|
||||
aws-iam-create-role-%: user docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval json := $(shell $(call exec,sh -c 'envsubst < aws/policies/$*-trust.json')))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
$(call aws,iam create-role --role-name $* --assume-role-policy-document '$(json)')
|
||||
|
||||
# target aws-iam-put-role-policy-%: Call aws iam put-role-policy with policy-name % and policy-document file aws/policies/%.json
|
||||
.PHONY: aws-iam-put-role-policy-%
|
||||
aws-iam-put-role-policy-%: user docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval json := $(shell $(call exec,sh -c 'envsubst < aws/policies/$*.json')))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
$(call aws,iam put-role-policy --role-name $* --policy-name $* --policy-document '$(json)')
|
||||
|
||||
# target aws-role-create-import-image: Fire aws-iam-create-role-% aws-iam-put-role-policy-% for AWS_VM_IMPORT_ROLE_NAME
|
||||
.PHONY: aws-role-create-import-image
|
||||
aws-role-create-import-image: aws-iam-create-role-$(AWS_VM_IMPORT_ROLE_NAME) aws-iam-put-role-policy-$(AWS_VM_IMPORT_ROLE_NAME)
|
||||
|
||||
# target aws-s3-check-upload: Fire aws-s3api-get-head-object-etag, Eval upload=false if remote s3 file already exists
|
||||
.PHONY: aws-s3-check-upload
|
||||
aws-s3-check-upload: docker-build-aws aws-s3api-get-head-object-etag
|
||||
$(eval upload := true)
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(if $(AWS_S3_KEY_ETAG),$(if $(filter $(AWS_S3_KEY_ETAG),"$(shell cat $(PACKER_ISO_INFO) |awk '$$1 == "etag:" {print $$2}' 2>/dev/null)"),$(eval upload := false)))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
|
||||
# target aws-s3-cp: Fire aws-s3-check-upload, Call aws s3 cp PACKER_ISO_FILE s3://AWS_S3_BUCKET/AWS_S3_KEY, Call aws-s3-etag-save target
|
||||
.PHONY: aws-s3-cp
|
||||
aws-s3-cp: docker-build-aws $(PACKER_ISO_FILE) aws-s3-check-upload
|
||||
$(if $(filter $(upload),true),$(call aws,s3 cp $(PACKER_ISO_FILE) s3://$(AWS_S3_BUCKET)/$(AWS_S3_KEY)) $(call make,aws-s3-etag-save))
|
||||
|
||||
# target aws-s3-etag-save: Fire aws-s3api-get-head-object-etag, Add line 'etag: AWS_S3_KEY_TAG' to file PACKER_ISO_INFO
|
||||
.PHONY: aws-s3-etag-save
|
||||
aws-s3-etag-save: docker-build-aws aws-s3api-get-head-object-etag
|
||||
echo "etag: $(AWS_S3_KEY_ETAG)" >> $(PACKER_ISO_INFO)
|
||||
|
||||
# target aws-s3api-get-head-object-etag: Eval AWS_S3_KEY_ETAG, Echo 'ETag: AWS_S3_KEY_ETAG'
|
||||
.PHONY: aws-s3api-get-head-object-etag
|
||||
aws-s3api-get-head-object-etag: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_S3_KEY_ETAG := $(shell $(call aws,s3api head-object --bucket $(AWS_S3_BUCKET) --key $(AWS_S3_KEY) --output text --query ETag) |grep -v 'operation: Not Found' 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo ETag: $(AWS_S3_KEY_ETAG)
|
||||
|
||||
# target aws-s3api-get-head-object-lastmodified: Eval AWS_S3_KEY_DATE, Echo 'LastModified: AWS_S3_KEY_DATE'
|
||||
.PHONY: aws-s3api-get-head-object-lastmodified
|
||||
aws-s3api-get-head-object-lastmodified: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_S3_KEY_DATE := $(shell $(call aws,s3api head-object --bucket $(AWS_S3_BUCKET) --key $(AWS_S3_KEY) --output text --query LastModified) |grep -v 'operation: Not Found' 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo LastModified: $(AWS_S3_KEY_DATE)
|
||||
|
||||
# target aws-ec2-import-snapshot: Call aws ec2 import-snapshot with S3Bucket AWS_S3_BUCKET and S3Key AWS_S3_KEY
|
||||
.PHONY: aws-ec2-import-snapshot
|
||||
aws-ec2-import-snapshot: user docker-build-aws aws-s3api-get-head-object-etag aws-s3api-get-head-object-lastmodified
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval json := $(shell $(call exec,sh -c 'envsubst < aws/import-snapshot.json')))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
$(eval AWS_TASK_ID := $(shell $(call aws,ec2 import-snapshot --description '$(AWS_SNAP_DESCRIPTION)' --output text --query ImportTaskId --disk-container '$(json)')))
|
||||
echo ImportTaskId: $(AWS_TASK_ID)
|
||||
|
||||
# target aws-ec2-describe-import-snapshot-tasks-%: Call aws ec2 describe-import-snapshot-tasks with import-task-id %
|
||||
.PHONY: aws-ec2-describe-import-snapshot-tasks-%
|
||||
aws-ec2-describe-import-snapshot-tasks-%: docker-build-aws
|
||||
$(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $*)
|
||||
|
||||
# target aws-ec2-describe-import-snapshot-tasks: Call aws ec2 describe-import-snapshots-tasks
|
||||
.PHONY: aws-ec2-describe-import-snapshot-tasks
|
||||
aws-ec2-describe-import-snapshot-tasks: docker-build-aws
|
||||
$(call aws,ec2 describe-import-snapshot-tasks)
|
||||
|
||||
# target aws-ec2-describe-instances-PrivateIpAddress: Call aws ec2 describe-instances, Print list of PrivateIpAddress
|
||||
.PHONY: aws-ec2-describe-instances-PrivateIpAddress
|
||||
aws-ec2-describe-instances-PrivateIpAddress: docker-build-aws
|
||||
$(call aws,ec2 describe-instances --no-paginate --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value$(comma)PrivateIpAddress]' --output text) |sed '$$!N;s/\r\n/ /' |awk 'BEGIN {printf "%-24s%s\r\n"$(comma)"PrivateIpAddress"$(comma)"Name"}; $$1 != "None" {printf "%-24s%s\n"$(comma)$$1$(comma)$$2}'
|
||||
|
||||
# target aws-ec2-describe-instances-PrivateIpAddress-%: Call aws ec2 describe-instances, Print list of PrivateIpAddress for Name matching %
|
||||
.PHONY: aws-ec2-describe-instances-PrivateIpAddress-%
|
||||
aws-ec2-describe-instances-PrivateIpAddress-%: docker-build-aws
|
||||
$(call aws,ec2 describe-instances --no-paginate --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value$(comma)PrivateIpAddress]' --output text) |sed '$$!N;s/\r\n/ /' |awk 'BEGIN {printf "%-24s%s\r\n"$(comma)"PrivateIpAddress"$(comma)"Name"}; $$1 != "None" && $$2 ~ /$*/ {printf "%-24s%s\n"$(comma)$$1$(comma)$$2}'
|
||||
|
||||
# target aws-ec2-get-instances-PrivateIpAddress: Eval AWS_INSTANCE_IP, Echo 'PrivateIpAddress: AWS_INSTANCE_IP'
|
||||
.PHONY: aws-ec2-get-instances-PrivateIpAddress
|
||||
aws-ec2-get-instances-PrivateIpAddress: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_INSTANCE_IP := $(shell $(call aws,ec2 describe-instances --no-paginate --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo PrivateIpAddress: $(AWS_INSTANCE_IP)
|
||||
|
||||
# target aws-ec2-get-instances-PrivateIpAddress-%: Eval AWS_INSTANCE_IP with Name matching %, Echo 'PrivateIpAddress: AWS_INSTANCE_IP'
|
||||
.PHONY: aws-ec2-get-instances-PrivateIpAddress-%
|
||||
aws-ec2-get-instances-PrivateIpAddress-%:
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_INSTANCE_IP := $(shell $(call aws,ec2 describe-instances --no-paginate --filter 'Name=tag:Name$(comma)Values=$**' --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo PrivateIpAddress: $(AWS_INSTANCE_IP)
|
||||
|
||||
# target aws-ec2-get-import-snapshot-tasks-id: Fire aws-ec2-get-import-snapshot-tasks-id-% for AWS_TASK_ID
|
||||
.PHONY: aws-ec2-get-import-snapshot-tasks-id
|
||||
aws-ec2-get-import-snapshot-tasks-id: aws-ec2-get-import-snapshot-tasks-id-$(AWS_TASK_ID)
|
||||
|
||||
# target aws-ec2-get-import-snapshot-tasks-id-%: Eval AWS_SNAP_IP with import-task-ids %, Echo 'SnapshotId: AWS_SNAP_IP'
|
||||
.PHONY: aws-ec2-get-import-snapshot-tasks-id-%
|
||||
aws-ec2-get-import-snapshot-tasks-id-%: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_SNAP_ID := $(shell $(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $* --output text --query ImportSnapshotTasks[0].SnapshotTaskDetail.SnapshotId) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo SnapshotId: $(AWS_SNAP_ID)
|
||||
|
||||
# target aws-ec2-get-import-snapshot-tasks-message-%: Eval AWS_SNAP_MESSAGE with import-task-ids %, Echo 'StatusMessage: AWS_SNAP_MESSAGE'
|
||||
.PHONY: aws-ec2-get-import-snapshot-tasks-message-%
|
||||
aws-ec2-get-import-snapshot-tasks-message-%: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_SNAP_MESSAGE := $(shell $(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $* --output text --query ImportSnapshotTasks[0].SnapshotTaskDetail.StatusMessage) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo StatusMessage: $(AWS_SNAP_MESSAGE)
|
||||
|
||||
# target aws-ec2-get-import-snapshot-tasks-progress-%: Eval AWS_SNAP_PROGRESS with import-task-ids %, Echo 'Progress: AWS_SNAP_PROGRESS'
|
||||
.PHONY: aws-ec2-get-import-snapshot-tasks-progress-%
|
||||
aws-ec2-get-import-snapshot-tasks-progress-%: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_SNAP_PROGRESS := $(shell $(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $* --output text --query ImportSnapshotTasks[0].SnapshotTaskDetail.Progress) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo Progress: $(AWS_SNAP_PROGRESS)
|
||||
|
||||
# target aws-ec2-get-import-snapshot-tasks-size-%: Eval AWS_SNAP_SIZE with import-task-ids %, Echo 'DiskImageSize: AWS_SNAP_SIZE'
|
||||
.PHONY: aws-ec2-get-import-snapshot-tasks-size-%
|
||||
aws-ec2-get-import-snapshot-tasks-size-%: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_SNAP_SIZE := $(shell $(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $* --output text --query ImportSnapshotTasks[0].SnapshotTaskDetail.DiskImageSize) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo DiskImageSize: $(AWS_SNAP_SIZE)
|
||||
|
||||
# target aws-ec2-get-import-snapshot-tasks-status-%: Eval AWS_SNAP_STATUS with import-task-ids %, Echo 'Status: AWS_SNAP_STATUS'
|
||||
.PHONY: aws-ec2-get-import-snapshot-tasks-status-%
|
||||
aws-ec2-get-import-snapshot-tasks-status-%: docker-build-aws
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval AWS_SNAP_STATUS := $(shell $(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $* --output text --query ImportSnapshotTasks[0].SnapshotTaskDetail.Status) 2>/dev/null))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
echo Status: $(AWS_SNAP_STATUS)
|
||||
|
||||
# target aws-ec2-wait-import-snapshot-tasks-status-completed: Fire aws-ec2-wait-import-snapshot-tasks-status-completed-% for AWS_TASK_ID
|
||||
.PHONY: aws-ec2-wait-import-snapshot-tasks-status-completed
|
||||
aws-ec2-wait-import-snapshot-tasks-status-completed: aws-ec2-wait-import-snapshot-tasks-status-completed-$(AWS_TASK_ID)
|
||||
|
||||
# target aws-ec2-wait-import-snapshot-tasks-status-completed-%: Wait SnapshotTaskDetail.Status=completed for import-task-ids %
|
||||
.PHONY: aws-ec2-wait-import-snapshot-tasks-status-completed-%
|
||||
aws-ec2-wait-import-snapshot-tasks-status-completed-%: docker-build-aws
|
||||
while [ `$(call aws,ec2 describe-import-snapshot-tasks --import-task-ids $* --output text --query ImportSnapshotTasks[0].SnapshotTaskDetail.Status)` != "completed$$(printf '\r')" ]; \
|
||||
do \
|
||||
count=$$(( $${count:-0}+1 )); \
|
||||
[ "$${count}" -eq 99 ] && exit 1; \
|
||||
sleep 10; \
|
||||
done
|
||||
|
||||
# target aws-ec2-wait-snapshot-completed-%: Call ec2 wait snapshot-completed with shapshot-ids %
|
||||
.PHONY: aws-ec2-wait-snapshot-completed-%
|
||||
aws-ec2-wait-snapshot-completed-%: docker-build-aws
|
||||
$(call aws,ec2 wait snapshot-completed --snapshot-ids $* --output text)
|
||||
|
||||
# target aws-ec2-register-image: Fire aws-ec2-get-import-snapshot-tasks-id, Eval AWS_AMI_ID with Name AWS_AMI_NAME, Echo 'ImageId: AWS_AMI_ID'
|
||||
.PHONY: aws-ec2-register-image
|
||||
aws-ec2-register-image: user docker-build-aws aws-ec2-get-import-snapshot-tasks-id
|
||||
$(eval IGNORE_DRYRUN := true)
|
||||
$(eval json := $(shell $(call exec,sh -c 'envsubst < aws/register-image-device-mappings.json')))
|
||||
$(eval IGNORE_DRYRUN := false)
|
||||
$(eval AWS_AMI_ID := $(shell $(call aws,ec2 register-image --name '$(AWS_AMI_NAME)' --description '$(AWS_AMI_DESCRIPTION)' --architecture x86_64 --root-device-name /dev/sda1 --virtualization-type hvm --block-device-mappings '$(json)') 2>/dev/null))
|
||||
echo ImageId: $(AWS_AMI_ID)
|
||||
|
||||
# target aws-ami: Fire aws-s3-cp aws-ec2-import-snapshot, Call aws-ec2-wait-import-snapshot-tasks-status-completed target, Call aws-ec2-register-image target
|
||||
.PHONY: aws-ami
|
||||
aws-ami: aws-s3-cp aws-ec2-import-snapshot
|
||||
$(call make,aws-ec2-wait-import-snapshot-tasks-status-completed,,AWS_TASK_ID)
|
||||
$(call make,aws-ec2-register-image,,AWS_TASK_ID)
|
||||
@@ -0,0 +1,23 @@
|
||||
AWS_ACCESS_KEY_ID := $(if $(AWS_CREDENTIALS),$(shell $(call conf,$(AWS_CREDENTIALS),$(or $(AWS_PROFILE),default),aws_access_key_id)))
|
||||
AWS_AMI_DESCRIPTION ?= $(AWS_SERVICE_VERSION)
|
||||
AWS_AMI_NAME ?= $(AWS_SERVICE_NAME)-$(AWS_S3_FILENAME)
|
||||
AWS_CREDENTIALS ?= $(wildcard $(HOME)/.aws/credentials)
|
||||
AWS_DEFAULT_REGION ?= eu-west-1
|
||||
AWS_DEFAULT_OUTPUT ?= text
|
||||
AWS_INSTANCE_ID ?= $(shell timeout 0.1 curl -s http://169.254.169.254/latest/meta-data/instance-id 2>/dev/null)
|
||||
AWS_VM_IMPORT_ROLE_NAME ?= vmimport
|
||||
AWS_S3_BUCKET ?= $(AWS_SERVICE_NAME)
|
||||
AWS_S3_FILENAME ?= $(PACKER_ISO_NAME)
|
||||
AWS_S3_KEY ?= $(PACKER_ISO_FILE)
|
||||
AWS_SECRET_ACCESS_KEY := $(if $(AWS_CREDENTIALS),$(shell $(call conf,$(AWS_CREDENTIALS),$(or $(AWS_PROFILE),default),aws_secret_access_key)))
|
||||
AWS_SERVICE_NAME ?= $(COMPOSE_SERVICE_NAME)
|
||||
AWS_SERVICE_VERSION ?= $(BUILD_DATE)-$(VERSION)
|
||||
AWS_SNAP_DESCRIPTION ?= $(AWS_SERVICE_NAME)-$(AWS_SERVICE_VERSION)-$(AWS_S3_FILENAME)
|
||||
CMDARGS += aws
|
||||
DOCKER_RUN_VOLUME += -v $(HOME)/.aws:/home/$(USER)/.aws
|
||||
ENV_VARS += AWS_ACCESS_KEY_ID AWS_AMI_DESCRIPTION AWS_AMI_NAME AWS_DEFAULT_OUTPUT AWS_DEFAULT_REGION AWS_INSTANCE_ID AWS_PROFILE AWS_S3_BUCKET AWS_S3_KEY AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SNAP_DESCRIPTION AWS_SNAP_ID
|
||||
|
||||
# function aws: Call run aws with arg 1
|
||||
define aws
|
||||
$(RUN) $(call run,aws $(1),$(DOCKER_REPOSITORY)/)
|
||||
endef
|
||||
Reference in New Issue
Block a user