自动地形审查

tf-cop的Python项目详细描述


TerraForm自动审阅器

地形脚本检查器。
此软件包可帮助您查看tf脚本。
(例如:确认向所有S3存储桶添加日志记录规则)

1安装

$ pip install tf_cop

2用法

2.1 cli使用

在您的控制台

$ tfcop TERRAFORM_ROOT_PATH REVIEW_BOOK_ROOT_PATH(optional)

样本输出

☁  tf_cop [master] ⚡ tfcop test[INFO] tf_root_path     : test[INFO] rbook_root_path  :

==========================================================
RESOURCE AWS_S3_BUCKET.TEST_TF_REVIEW_BUCKET
==========================================================[WARN]  desc_checker    : description not use
[ALERT] tag_checker     : tags not use==========================================================
RESOURCE AWS_S3_BUCKET.TEST_TF_REVIEW_BUCKET2
==========================================================[WARN]  desc_checker    : description not use
[PASS]  tag_checker     : passed
[PASS]  name_checker    : passed
[PASS]  env_checker     : passed==========================================================
DATA AWS_S3_BUCKET.TEST_DATA_TF_REVIEW_BUCKET
==========================================================[PASS]  bucket_checker  : passed=======================| RESOURCE NUM  : 3|| warn NUM      : 2|| alert NUM     : 1|| pass NUM      : 4|=======================

2.2模块使用

2.2.1进行回顾

通过terraform root path&;review_book root path

importtf_copif__name__=='__main__':test=tf_cop.TfCop()test.tf_review("./test","./review_book_default")

2.2.2获取输出

output=test.output(color_flg=True)print(output)

3查看书本yaml规则

3.1文件名规则

review_book_yaml=resource_name.split("_")[1]+'.yaml'

(例如aws_s3_bucket=>;s3.yaml)

文件夹结构

${REVIEW_BOOK_ROOT_PATH}
├── data
│   ├──s3.yaml
│   └──...
└── resource
    ├── acm.yaml
    ├── api.yaml
    └── ...

3.2关键规则

keydescriptionrequired
titletest titlerequired
descdescription for testoption
modetest mode (existance|value|nested)required
keytest target key (ex. tags)required
valuecorrect value regexoption
nestfor nested testoption
typetest type (ex. alert, warn)required

3.2.1生存试验< /H4>

检查目标键是否存在。< BR/> (例如描述)

3.2.2值测试

检查目标值是否正确。
(例如name=“(prd stg dev)-s3-.*-地形”)

3.2.3嵌套测试

测试嵌套键值

tags {
    Name = "${terraform.env}-tf-review-bucket"
    Env = "dev"
}

3.3样品

aws_s3_bucket:-title:description_checkerdescription:simple existance checkermode:existancewarn:Truekey:description-title:private_checkerdescription:simple value checkermode:valuekey:aclvalue:private-title:bucket_checkerdescription:simple value regex checkermode:valuekey:bucketvalue:.*-tf-review-bucket.*-title:tag_checkerdescription:nested value checkermode:nestedkey:tagsnest:-title:name_checkerdescription:nested value checkermode:valuekey:Namevalue:.*-tf-review-bucket.*-title:env_checkerdescription:nested value checkermode:valuewarn:Truekey:Envvalue:(dev|stg|prd)-title:if_checkermode:ifkey:loggingnest:title:name_checkermode:existancekey:lifecycle_rule

4测试

python test.py

5示例用法

使用docker测试terraform文件。

├── Dockerfile
├── main.py
└── requirements.txt
FROM python:3.6RUN apt-get update
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9

RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

WORKDIR /tmpCOPY requirements.txt ./
RUN pip install -r requirements.txt

COPY . .

CMD["python","main.py"]
importtf_copif__name__=='__main__':test=tf_cop.TfCop()test.tf_review("./terraform","./review_book")output=test.output(color_flg=True)print(output)

设置TF_ROOT_PATH&;REVIEW_BOOK_PATH

docker build -t tf_cop .
docker run \
      -v `pwd`/${TF_ROOT_PATH}:/tmp/terraform \
      -v `pwd`/${REVIEW_BOOK_PATH}:/tmp/review_book \
      tf_cop

6作者

ys tydy

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
运行ClassSpy java时发生反射错误   java Android ContextWrapper fileList()看不到我的文件   java使用JAXWS构建大型MTOM/XOP消息   eclipse如何使用ACM库(控制台程序)编写Java程序?   java m2eclipse插件搜索在配置为Nexus时不会给出结果   java Scanner只识别文本文件中的某些行,而不识别其他行   java如何从smartwatch启动活动或服务   java检查数组是否至少有两个具有特定值的元素   JAVA网URL编码器/解码器替代方案   Java中通过引用传递对象   spring如何在使用JavaJSON修补程序进行修补时禁止更新字段   使用java将海量数据存储到mysql的最佳方法   java字符串作为不可变对象   java我无法访问tomcat服务器(localhost),甚至无法访问mysql   java While循环条件未给出预期结果   java如何启动传递图像uri的新活动   Java中类定义在方法中的使用   Java程序在Ubuntu中运行我的另一个程序