Wednesday, 14 June 2017

Write a bash script which remove all the ECS-Task Definition except the latest one

!/bin/bash rev_arry=$(aws ecs list-task-definitions --family-prefix <taskdef_name> --query taskDefinitionArns[]|cut -f7 -d :| cut -c1-2) maxrev_num=($rev_arry) arrlen=$((${#maxrev_num[@]}-2)) latest_revision=$(aws ecs list-task-definitions --family <taskdef_name> --sort desc --max-items 1 --query taskDefinitionArns|cut -c64-65) n="1" while [ $n -lt $arrlen ] do if [ ${maxrev_num[n]} -eq $latest_revision ]; then n=$[$n+1] fi delrevision=${maxrev_num[n]} aws ecs deregister-task-definition --task-definition <taskdef_name>:$delrevision echo "ecr taskdefiniton:$delrevision is deleted" n=$[$n+1] done

How do we install the PhpMyAdmin on ec2 instance and dockerize the phpmyadmin

phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web Prechecklist: Install php yum -y install php make sure we have all these packages: rpm -qa | grep php php-common-5.4.16-42.el7.x86_64 php-fedora-autoloader-1.0.0-1.el7.noarch php-mysql-5.4.16-42.el7.x86_64 php-5.4.16-42.el7.x86_64 php-mbstring-5.4.16-42.el7.x86_64 php-php-gettext-1.0.12-1.el7.noarch php-bcmath-5.4.16-42.el7.x86_64 php-pdo-5.4.16-42.el7.x86_64 php-cli-5.4.16-42.el7.x86_64 php-tidy-5.4.16-7.el7.x86_64 php-gd-5.4.16-42.el7.x86_64 php-tcpdf-dejavu-sans-fonts-6.2.13-1.el7.noarch phpMyAdmin-4.4.15.10-1.el7.noarch php-xml-5.4.16-42.el7.x86_64 php-process-5.4.16-42.el7.x86_64 php-tcpdf-6.2.13-1.el7.noarch yum install php-mysqlnd . (A module for PHP applications that use MySQL databases) Install apache webserver on centos yum -y install httpd systemctl start httpd systemctl enable httpd systemctl status httpd Installation steps for phpMyAdmin: Add the EPEL Repository: CentOS and Red Hat Enterprise Linux 6.x wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm sudo rpm -Uvh epel-release-6*.rpm CentOS and Red Hat Enterprise Linux 7.x wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo rpm -Uvh epel-release-latest-7*.rpm Install phpMyAdmin yum -y update yum -y install phpmyadmin Basic configuration for phpMyAdmin vi /etc/httpd/conf.d/phpMyAdmin.conf By default, the configuration for phpMyAdmin only allows access from the server on which it is installed. Find the following sections and change each IP address to the one you found in Step 3, or another IP address that will be connecting to phpMyAdmin remotely: <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip ::1 Replace the above block ,with the below mentioned code <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> # Require ip 127.0.0.1 # Require ip ::1 Require all granted Database configuration file vi /etc/phpMyadmin/config.inc.php changes: $cfg['Servers'][$i]['host'] : Mention the endpoint of database $cfg['Servers'][$i][&#8216;port&#8217;] : Mention the port number $cfg['Servers'][$i]['extension'] : &#8216;mysqli &#8216;;// The php MYSQL extension to use Restart apache: systemctl restart httpd Dockerizing the phpmyadmin using the Dockerfile: FROM centos #FROM httpd:latest #RUN yum install -y update RUN yum install -y httpd #RUN systemctl start httpd #RUN systemctl enable httpd RUN yum install -y php RUN yum install -y php-mysqlnd php-fpm php-dba RUN yum install -y epel-release Run yum install -y phpmyadmin RUN mkdir -p /etc/phpMyAdmin COPY ./config.inc.php /etc/phpMyAdmin/config.inc.php COPY ./phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf EXPOSE 80 ADD run-httpd.sh /run-httpd.sh RUN chmod -v +x /run-httpd.sh CMD ["/run-httpd.sh"] #RUN service httpd start #CMD ["systemctl", "start", "httpd"] #CMD [ "httpd" , "start" ] #CMD [ "httpd" , "enable" ] References: ------------ https://www.liquidweb.com/kb/how-to-install-and-configure-phpmyadmin-on-centos-7/ https://www.digitalocean.com/community/tutorials /how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server

write a bash script which remove all the images from the ECR except the latest image

!/bin/bash $myecs_securitytoken=$(aws ecr get-authorization-token --region <region_name> --output text --query authorizationData[].authorizationToken) $myecs_securitytoken tag=$(aws ecr list-images --repository-name <repository_name> --output text --query imageIds[].imageTag) imgflag=($tag) buildnum=$(curl --user <user_name>:uservalue$ http://<IP_address>: <port_no>/rest/api/latest/result/<BambooPlan_name>.json |sed 's/"buildNumber":/&\n/;s/.\n//;s/}/\n&/;s/\n.//' ) n="0" while [ $n -lt ${#imgflag[@]} ] do if [ ${imgflag[n]} -eq $buildnum ]; then n=$[$n+1] fi delimg=${imgflag[n]} aws ecr batch-delete-image --repository-name <repository_name> --image-ids imageTag=$delimg echo "ecr imagetag:$delimg is deleted" n=$[$n+1] done note: The images are differentiate with the image tags as a Bamboo build number All the images tags are collected in imgflag and iterate one by one and delete the images using the image tag

Write a bash script which remove the instance from ECS cluster and chef server

!/bin/bash /usr/bin/knife node delete -y -c /root/.chef/knife.rb <%= node['fqdn']%> /usr/bin/knife client delete -y -c /root/.chef/knife.rb <%= node['fqdn']%> containeruuid=($(aws ecs --region <region_name> list-container-instances --cluster <%= default['recipe_name']['cluster']%> --output text|cut -d '/' -f2)) myinstance=$(wget -q -O- http://169.254.169.254/latest/meta-data/instance-id) for myuuid in "${containeruuid[@]}" do ecsinstance=$(aws ecs describe-container-instances --cluster <%= default['recipe_name']['cluster']%> --container-instances $myuuid --output text --query containerInstances[].ec2InstanceId|cut -d: -f2) if [[ $ecsinstance = $myinstance ]] then aws ecs deregister-container-instance --cluster <%= default['recipe_name']['cluster']%> --container-instance ${containeruuid} --force exit else echo "Instance does not match inside the ecs cluster" fi done

Starting the new ECS task on the ec2 instances using the latest TaskDefinition of EC2 container using bash script

$myecs_securitytoken=$(aws ecr get-authorization-token --region <region_name> --output text --query authorizationData[].authorizationToken) $myecs_securitytoken mytaskdef=$(aws ecs list-task-definitions --family <task_familyname> --sort desc --max-items 1 --query taskDefinitionArns|cut -c75-76) echo $mytaskdef > taskd.out $aws ecs run-task --cluster "<cluster_name>" --task-definition "task_definition_name:cat taskd.out" Docker commands ------------------- Remove all the exited containers: docker rm -v $(docker ps -aq -f status=exited) Remove all the docker images: docker rmi -f $(docker images -q)

Stopping the ECS Task which are running on ec2 instances using bash script

#!/bin/bash $myecs_securitytoken=$(aws ecr get-authorization-token --region <region_name> --output text --query authorizationData[].authorizationToken) $myecs_securitytoken $aws ecs list-tasks --region <region_name> --cluster <cluster_name> --family <task_familyname> --query taskArns| cut -c46-81 > taskidinfo.out filename="taskidinfo.out" IFS=$'\n' for line in $(cat $filename) do $aws ecs stop-task --region <region_name> --cluster "<cluster_name>" --task $line --reason "stopping the task" done Note: Collect all the IDs of the task in the file taskidinfo.out, read each line from the file and stop the task using the taskID