Я запускаю новый экземпляр AWS EC2, используя terraform main.tf для Centos AMI. Я могу создать и подключить экземпляр AWS.
но у меня есть проблема ниже
- Когда я запускаю простой http-сервер на основе python 3, который просто печатает «hello world», я не могу запустить скрипт python, используя функцию file из terraform. Может ли кто-нибудь помочь мне, как выполнить. я должен использовать функцию или использовать
ресурс "null_resource" "кластер" {
используя переводчик?
- из внешнего мира, я не могу подключить публичный домен: открытый порт (используя curl http://publicip:8080). Хотя я создал группу безопасности.
Может кто-нибудь помочь мне ... Есть ли возможность проверить в terraform, что эти ресурсы действительно созданы в экземпляре AWS EC2. как какой-то журнал отладки.
PS: в моем экземпляре EC2 по умолчанию установлен python2.7, поэтому в main.tf я попытался установить python3, используя для выполнения сценарий python, и этот сценарий python отлично работает на моем локальном компьютере.
Или есть ли лучший подход для выполнения этого.
Я все еще изучаю AWS, используя terraform.
simple-hello-world.py
from http.server import BaseHTTPRequestHandler, HTTPServer
# HTTPRequestHandler class
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
# GET
def do_GET(self):
# Send response status code
self.send_response(200)
# Send headers
self.send_header('Content-type', 'text/html')
self.end_headers()
# Send message back to client
message = "Hello world!"
# Write content as utf-8 data
self.wfile.write(bytes(message, "utf8"))
return
def run():
print('starting server...')
# Server settings
# Choose port 8080, for port 80, which is normally used for a http server, you need root access
server_address = ('127.0.0.1', 8081)
httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
print('running server...')
httpd.serve_forever()
run()
main.tf
provider "aws" {
region = "us-east-2"
version = "~> 1.2.0"
}
resource "aws_instance" "hello-world" {
ami = "ami-ef92b08a"
instance_type = "t2.micro"
provisioner "local-exec" {
command = <<EOH
sudo yum -y update
sudo yum install -y python3.6
EOH
}
user_data = "${file("${path.module}/simple-hello-world.py")}"
tags {
Name = "my-aws-terraform-hello-world"
}
}
resource "aws_security_group" "allow-tcp" {
name = "my-aws-terraform-hello-world"
ingress {
from_port = 8080
to_port = 8080
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}