Рет қаралды 1,475
Key points:
1. Deploy ELK stack via Terraform
2. Configure DNS for Kibana on Route53 and automate it via Terraform
3. Configure Nginx reverse proxy
Notes:
Nginx configuration example:
server {
listen 80;
server_name elk.zztalks.xyz;
location / {
proxy_pass localhost:5601;
}
}
Steps to install Nginx, configure the reverse proxy and enable the configuration:
sudo apt-get install nginx -y
sleep 10
sudo mv /tmp/zztalks.xyz /etc/nginx/sites-available/zztalks.xyz
sudo ln -s /etc/nginx/sites-available/zztalks.xyz /etc/nginx/sites-enabled/
sudo service nginx restart
Timestamp:
0:00 - Intro
08:13 - Terraform for deploying ELK stack
16:46 - Terraform for Route 53
24:28 - Terraform apply & verification
32:28 - Nginx reverse proxy configuration
Key configuration:
cat installELK.sh
#!/bin/bash
sudo apt update && sudo apt-get upgrade -y
sudo apt-get install default-jre -y
sudo java -version
install elasticsearch
wget -qO - artifacts.elastic.co/GPG-KEY-... | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb artifacts.elastic.co/packages... stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install elasticsearch -y
sleep 10
sudo service elasticsearch start
sudo curl localhost:9200
instll logstash
sudo apt-get install logstash
sleep 10
install kibana
sudo apt-get install kibana
sleep 10
sudo mv /tmp/kibana.yml /etc/kibana/kibana.yml
sudo service kibana start
install metricbeat
sudo apt-get install metricbeat
sleep 10
sudo service metricbeat start
start logstash
sudo mv /tmp/apache.conf /etc/logstash/conf.d/apache.conf
sleep 15
sudo service logstash start
install nginx
sudo apt-get install nginx -y
sleep 10
sudo mv /tmp/zztalks.xyz /etc/nginx/sites-available/zztalks.xyz
sudo ln -s /etc/nginx/sites-available/zztalks.xyz /etc/nginx/sites-enabled/
sudo service nginx restart
===============================================================================
cat route53.tf
Manage a Route53 hosted zone
resource "aws_route53_zone" "zztalk" {
name = "zztalks.xyz"
}
Provide a Route53 record resource
resource "aws_route53_record" "elk" {
zone_id = aws_route53_zone.zztalk.zone_id
name = "elk.zztalks.xyz"
type = "A"
ttl = "300"
records = [aws_eip.ip.public_ip]
}
output "name_server" {
value = aws_route53_zone.zztalk.name_servers
}
#terraform #zzTalk #nginx #route53 #DNS #automation #aws #reverseproxy #infrastructureascode