이전 글 참조(NGINX-Tomcat 연동)
https://bo20cy.tistory.com/12
테라폼 연동 방법 2탄
Centos 7.8 기준
3티어 구성 서버 내부에 AP들을 심어서 구성을 했습니다.
WEB에는 NGINX, WAS에는 Tomcat을 연동시키고
WAS에는 Tomcat에 ,DB에는 Cloud for MySQL을 연동 자동화를 해보겠습니다.
이번에는 각 서버를 분리하고 각각에 서버이미지를 만들어서 값을 채워주는 방식을 적어보겠습니다.
1탄과 같이 sed 명령어로 값을 변경해주는 방식으로 말고
tpl파일을 만들어서 값을 변경해주는 방식으로 하겠습니다.
#!/bin/bash
sudo yum install -y java-11-openjdk-devel.x86_64
sudo cd /usr/local/
sudo wget -P /usr/local/ https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz --no-check-certificate
sudo tar -xvf /usr/local/apache-tomcat-10.1.19.tar.gz -C /usr/local/tomcat --strip-components=1
sudo mkdir /usr/local/tomcat
sudo wget -P /usr/local/ https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.2.0.tar.gz
sudo tar -xvf /usr/local/mysql-connector-j-8.2.0.tar.gz -C /usr/local/
sudo mv /usr/local/mysql-connector-j-8.2.0/mysql-connector-j-8.2.0.jar /usr/local/tomcat/lib
bash /usr/local/tomcat/bin/startup.sh
Tomcat과 Mysql은 연동시켜두고
MySQL 변수 설정
전에는 직접 넣었지만 이제는 변수로 쉽게 관리하겠습니다.
variable.tf
......
variable "db_config" {
type = list(any)
default = ["bo20cy", "1q2w3e4r!@", "mysqldb"]
}
MySQL 연동
wget -P /usr/local/ https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.2.0.tar.gz
tar -xvf /usr/local/mysql-connector-j-8.2.0.tar.gz -C /usr/local/
mv /usr/local/mysql-connector-j-8.2.0/mysql-connector-j-8.2.0.jar /usr/local/tomcat/lib
mysql-connector이 tomcat library에 집어 넣어줍니다.
연동확인 페이지는 templatefile로 init-script를 적어서 보내겠습니다.
templatefile에 변수값을 넣어서 제작 한번에 연동합니다.
templatefile 공식설명
https://developer.hashicorp.com/terraform/language/functions/templatefile
templatefile - Functions - Configuration Language | Terraform | HashiCorp Developer
The templatefile function reads the file at the given path and renders its content as a template.
developer.hashicorp.com
tomcatcon.tpl
cat << EOF >> /usr/local/tomcat/webapps/ROOT/mysql.jsp
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=utf-8" %>
<%
String DB_URL = "jdbc:mysql://##Private 도메인##:3306/##db-name##";
String DB_USER = "##user-name##";
String DB_PASSWORD= "##password##";
Connection conn;
Statement stmt;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
conn.close();
out.println("MySQL Connection Success!");
}
catch(Exception e){
out.println(e);
}
%>
EOF
mysql.jsp 확인페이지를 넣고
##Private 도메인##
##db-name##
##user-name##
##password##
부분을 수정해 줍니다.
#was 이니스크립트
resource "ncloud_init_script" "create_was_init" {
name = "${var.pnoun}-was-con"
content = templatefile("./tomcatcon.tpl", {
##Private 도메인## = ncloud_mysql.create_mysql.mysql_server_list[0].private_domain,
##db-name## = var.db_config[2],
##user-name## = var.db_config[0],
##password## = var.db_config[1]
})
depends_on = [ncloud_mysql.create_mysql]
}
depend_on 모듈은 정의된 함수가 완료되야만 리소스 부분이 작동하게 해줍니다.
MySQL 도메인이 작성되야 이니스크립트에 잘 들어갈 테니깐 보통은 문제가 없으나
서버가 MySQL보다 항상 일찍만들어지기 때문에 강제적으로 늦게 만들게 하는 방법이 좋습니다.
depend_on 공식 설명
https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on
The depends_on Meta-Argument - Configuration Language | Terraform | HashiCorp Developer
The depends_on meta-argument allows you to handle hidden resource or module dependencies.
developer.hashicorp.com
그리고 톰캣을 재시작할 필요는 없습니다.
lib파일을 넣고는 톰캣이 읽도록 재시작이 필요하지만
.jsp 파일 넣기만 해도 됩니다.
공인IP/mysql.jsp 에 들어가서 확인 할 수 있습니다.
연동끝!
'네이버클라우드플랫폼(Ncloud) > 테라폼' 카테고리의 다른 글
테라폼 NGINX - Tomcat연동 (2) | 2024.03.29 |
---|---|
Cloud for MySQL (+Init-script) (2) | 2024.03.25 |
테라폼 Auto Scaling Group 생성(+ 서버이미지 적용) (4) | 2024.03.01 |
테라폼 ACG 설정하기(+dynamic) (2) | 2024.02.04 |
테라폼 Loadbalancer 구축하기(+count) (2) | 2024.01.29 |