【问题标题】:Is there a way to install nginx using terraform?有没有办法使用 terraform 安装 nginx?
【发布时间】:2020-05-21 19:54:51
【问题描述】:

我想在我的 terraform 文件中包含以下脚本并执行它以在我的 aws 实例上安装 nginix。

我想使用yaml,但我不熟悉。关于如何将其设为 yaml 文件的任何想法?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

【问题讨论】:

标签: amazon-web-services yaml terraform


【解决方案1】:

这看起来像是用于部署的 Kubernetes 配置,因此您的服务器需要成为 Kubernetes 集群的一部分才能运行它。

如果您正在运行 Kubernetes,则可以通过 terraform 运行它,尽管人们通常运行 kubectl to create a deployment

如果您只想使用 Terraform 将 nginx 安装为服务,您可以使用 local-exec

从我个人的角度来看,我会考虑安装服务ansible

【讨论】:

  • 我能够编写一个在我的服务器上安装 nginx 的 ansible playbook。现在我很想在 terraform 中使用这个剧本,但是我在转换为 terraform 文件时遇到了问题。我将非常感谢您的帮助。剧本如下---主机:AppServer成为:是任务:-名称:安装nginx Web服务器apt:名称:nginx状态:存在update_cache:true通知:-启动nginx处理程序:-名称:启动nginx服务:名称: nginx 状态:存在
  • 您好,没有评论中的剧本,您可以添加到问题中
【解决方案2】:

首先,这不适用于普通 EC2 实例。这是一个 kubernetes 清单,因此您必须使用 kubectl 对 k8s 集群运行它。

假设你有一个 k8s 集群,那么要在 terraform 中使用这个 yaml,你可以创建一个 null_resourcelocal-execremote-exec 配置器,它必须配置 kubectl 以访问将安装 nginx 的 k8s 集群.然后只需在 terraform 配置程序中运行 kubectl apply -f <path-to-nginx.yaml>

【讨论】:

    【解决方案3】:

    您可以求助于Terraform Helm provider 在 EKS(亚马逊的 Kubernetes 引擎(弹性 Kubernetes 服务))上安装 nginx。

    nginx helm documentation

    【讨论】: