How to verify cfn-init & cfn-signal commands, executed successfully on the instance?

by XDK 2. October 2019 10:03

Explanation:

Verify the logs at the following location to debug the instance launch
/var/log/cloud-init.log
/var/log/cfn-init.log

 

Tags: ,

Amazon Web Service | CloudFormation

The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

by XDK 26. September 2019 23:54

Exception:

The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

Solution:

Configure tomcat to allow deployment from other source

$ sudo nano ./apache-tomcat-8.5.46/webapps/manager/META-INF/context.xml
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
$ ./apache-tomcat-8.5.46/bin/shutdown.sh
$ ./apache-tomcat-8.5.46/bin/startup.sh

Tags:

JAVA | Tomcat

ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin

by XDK 26. September 2019 23:43

Exception:

Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
invoke-rc.d: initscript jenkins, action "start" failed.
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: failed (Result: exit-code) since Thu 2019-09-26 14:35:12 UTC; 13ms ago
Docs: man:systemd-sysv-generator(8)
Process: 14063 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE)
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: Starting LSB: Start Jenkins at boot time...
Sep 26 14:35:12 ip-172-31-45-94 jenkins[14063]: ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin
Sep 26 14:35:12 ip-172-31-45-94 jenkins[14063]: If you actually have java installed on the system make sure the executable is in the aforementioned path and that 'type -p java' returns the java executable path
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: jenkins.service: Control process exited, code=exited status=1
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: jenkins.service: Failed with result 'exit-code'.
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: Failed to start LSB: Start Jenkins at boot time.
dpkg: error processing package jenkins (--configure):
installed jenkins package post-installation script subprocess returned error exit status 1
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for systemd (237-3ubuntu10.24) ...
Errors were encountered while processing:
jenkins
E: Sub-process /usr/bin/dpkg returned an error code (1)

Solution:

Update JAVA path for Jenkins

ubuntu@ip-172-31-45-94:~/bin$ sudo nano /etc/init.d/jenkins
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/ubuntu/bin/jdk1.8.0_221/bin

ubuntu@ip-172-31-45-94:~/bin$ sudo systemctl daemon-reload
ubuntu@ip-172-31-45-94:~/bin$ sudo service jenkins start
ubuntu@ip-172-31-45-94:~/bin$ sudo service jenkins status
jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Thu 2019-09-26 14:42:40 UTC; 1min 53s ago
Docs: man:systemd-sysv-generator(8)
Process: 14221 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
Sep 26 14:42:39 ip-172-31-45-94 systemd[1]: Starting LSB: Start Jenkins at boot time...
Sep 26 14:42:39 ip-172-31-45-94 jenkins[14221]: Correct java version found
Sep 26 14:42:39 ip-172-31-45-94 jenkins[14221]: * Starting Jenkins Automation Server jenkins
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: Successful su for jenkins by root
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: + ??? root:jenkins
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: pam_unix(su:session): session opened for user jenkins by (uid=0)
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: pam_unix(su:session): session closed for user jenkins
Sep 26 14:42:40 ip-172-31-45-94 jenkins[14221]: ...done.
Sep 26 14:42:40 ip-172-31-45-94 systemd[1]: Started LSB: Start Jenkins at boot time.

Tags:

JAVA | Jenkins

EC2 instance user data is not executed.

by XDK 18. September 2019 22:27
Explanation:
 
The user data is not executed due to the leading whitespaces in the following format
 
resource "aws_instance" "Terraform-Demo" {
  ami = "${lookup(var.RegionToAmazonAMI, var.Region)}"
  instance_type = "t2.micro"
  key_name = "myaccountkey"
  vpc_security_group_ids =  ["${aws_security_group.webserver-sg-2.id}"]
  user_data = <<EOF
    #cloud-boothook
    #! /bin/bash
    sudo apt update
    sudo apt install -y apache2
    IP_ADDR=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
    sudo chmod 777  /var/www/html
    sudo echo "Terraform instance 2 with IP IP_ADDR" > /var/www/html/index.html
    sudo echo "Terraform instance 2 with IP IP_ADDR -- OK" > /var/www/html/health.html
  EOF
  provisioner "local-exec" {
    command = "echo ${aws_instance.Terraform-Demo.public_ip} > testP.txt"
    }
  tags = {
    Name = "TerraformDemo"
  }
}
 
Solution:
 
Either add hyphen in <<-EOF to trim the leading whitespaces or remove the whitespaces manually 

Tags:

Amazon Web Service | Terraform

A data resource "aws_availability_zones" "available" has not been declared in the root module.

by XDK 18. September 2019 21:45

Exception:

Error: Reference to undeclared resource
on base.tf line 65, in resource "aws_subnet" "public-subnet-a":
65: availability_zone = "${data.aws_availability_zones.available.names[0]}"
A data resource "aws_availability_zones" "available" has not been declared in
the root module.

Explanation:

The exception occurred while assigning the availability zone for a region in the terraform template.

resource "aws_subnet" "public-subnet-a" {
  vpc_id = "${aws_vpc.vpc.id}"
  map_public_ip_on_launch = true
  cidr_block = "10.0.10.0/24"
  availability_zone = "${data.aws_availability_zones.available.names[0]}"
  tags = {
  Name = "public-subnet-a:${var.labname}"
  }
}

Solution:

Add data module to get the availability zones for a region
data "aws_availability_zones" "available" {}

resource "aws_subnet" "public-subnet-a" {
  vpc_id = "${aws_vpc.vpc.id}"
  map_public_ip_on_launch = true
  cidr_block = "10.0.10.0/24"
  availability_zone = "${data.aws_availability_zones.available.names[0]}"
  tags = {
  Name = "public-subnet-a:${var.labname}"
  }
}

Tags:

Amazon Web Service | Terraform

About the author

My name is Xavier Dilip Kumar Jayaraj having 16+ years of IT experience which includes solid experience and depth Knowledge in Application Life Cycle Management, Configuration Management, Implementation and Support using TFS on-premises and Azure DevOps. I have invested in gaining DevOps knowledege to expertise with Cloud Computing providers namely Microsoft Azure and Amazon Web Services in recent years. I am very positive to learn and adapt emerging technologies to client’s environment.

Microsoft Certified: Azure Administrator Associate

Microsoft Certified: Azure DevOps Engineer Expert

DevOps Engineer Certificate Program | Transcript 

OTP-AWSD5: AWS IoT: Developing and Deploying an Internet of Things

[PCEP-30-01] PCEP – Certified Entry-Level Python Programmer

Quotes I Like

"Failure will never overtake me if my determination to succeed is strong enough."  - Dr. APJ. Abdul Kalam

"Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it." - Bruce Lee

"Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important." - Bill Gates

"Innovation distinguishes between a leader and a follower." - Steve Jobs

CategoryList

Disclaimer

The information provided here is based on my expreriences, troubleshooting and online/offline findings. It can be used as is on your own risk without any warranties and I impose no rights.