介绍

terraform-docs可以生成terraform module的说明文档,可以以markdown的形式输出。

安装

# 从github release下载压缩包:https://github.com/terraform-docs/terraform-docs/releases/tag/v0.20.0
# tar zxvf解压
# 直接把可执行文件挪到执行目录
sudo cp terraform-docs /usr/local/bin/

使用

模板文件

定义terraform-docs怎么输出module里面的信息:

formatter: "markdown table" # this is required
version: "0.20"
header-from: main.tf
footer-from: ""
recursive:
  enabled: false
  path: ""
  sections:
  hide: []
  show: []
  hide-all: false # deprecated in v0.13.0, removed in v0.15.0
  show-all: true  # deprecated in v0.13.0, removed in v0.15.0
content: |-
  {{ .Requirements }}
  ## Usage
  Basic usage of this module is as follows:
```hcl
module "example" {
  {{"\t"}} source  = "<module-path>"
    {{- if .Module.RequiredInputs }}
        {{"\n\t"}} # Required variables
        {{- range .Module.RequiredInputs }}
        {{"\t"}} {{ .Name }}  = {{ .GetValue }}
        {{- end }}
        {{- end }}

    {{- if .Module.OptionalInputs }}
        {{"\n\t"}} # Optional variables
        {{- range .Module.OptionalInputs }}
        {{"\t"}} {{ .Name }}  = {{ .GetValue | printf "%s" }}
        {{- end }}
        {{- end }}
}
```
  {{ .Resources }}

  {{ .Inputs }}

  {{ .Outputs }}

output:
  file: README.md
  mode: inject
  template: |-
      <!-- BEGIN_AUTOMATED_TF_DOCS_BLOCK -->
      {{ .Content }}
      <!-- END_AUTOMATED_TF_DOCS_BLOCK -->

output-values:
  enabled: false
  from: ""

sort:
  enabled: true
  by: name

settings:
  anchor: true
  color: true
  default: true
  description: true
  escape: true
  hide-empty: false
  html: true
  indent: 2
  lockfile: true
  read-comments: true
  required: true
  sensitive: true
  type: true

生成README

在命令行中需要指定module目录,才能读取module的信息

terraform-docs -c .terraform-docs.yml ../modules/build-agents

运行后会自动在module目录下生成README.md文件