Code Monkey home page Code Monkey logo

terraform-guides's Introduction

Terraform Guides

This repository contains sample Terraform configurations, Sentinel policies, and automation scripts that can be used with Terraform Enterprise.

infrastructure-as-code

This directory contains sample Terraform configurations to provision VMs into AWS, Azure, and Google Cloud Platform (GCP) as well as Kubernetes clusters into Azure Container Service (ACS) and Google Kubernetes Engine (GKE).

self-serve-infrastructure

This directory contains sample Terraform configurations to enable self-service infrastructure. In particular, it illustrates how developers can deploy applications to Kubernetes clusters provisioned by an operations team.

governance

This directory contains some sample Sentinel policies for several clouds which ensure that all infrastructure provisioned with Terraform Enterprise complies with an organization's provisioning rules.

operations

This directory provides artifacts that can be used by operations teams using Terraform Enterprise. In particular, it includes scripts that show how the Terraform Enterprise REST API can be used to automate interactions with Terraform Enterprise, set and delete variables in workspaces, and export, import, and delete Sentinel policies.

cloud-management-platform

This directory provides samples of how Terraform can be used to support cloud management platforms.

gitignore.tf Files

You may notice some gitignore.tf files in certain directories. .tf files that contain the word "gitignore" are ignored by git in the .gitignore file.

If you have local Terraform configuration that you want ignored (like Terraform backend configuration), create a new file in the directory (separate from gitignore.tf) that contains the word "gitignore" (e.g. backend.gitignore.tf) and it won't be picked up as a change.

terraform-guides's People

Contributors

abbasrsyed avatar adamcavaliere avatar amcbarnett avatar andrew-klaas avatar apdavanzo avatar apolloclark avatar ausmartway avatar bensojona avatar fraserpol avatar gitrgoliveira avatar grove-mountain avatar ja5onhughe5 avatar jboero avatar kawsark avatar lanceplarsen avatar mpeters413 avatar mtharpe avatar nfagerlund avatar nrvale0 avatar omazin avatar petems avatar ppruthi avatar raygj avatar rberlind avatar robertpeteuil avatar scarolan avatar shaneschnell avatar tonyganga avatar vancluever avatar vincentramirez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-guides's Issues

Move Sentinel common functions to another repository

Hi! I'm working with Sentinel now and noticed that this repository contains well-defined and tested functions which can be used in different projects.
I'd like to use it in my project as remote modules like it's done here.

But the name of this repository means that it's the right place to set dependencies for.

What do you think about creating a new repository only for Sentinel common-functions?
To allow users to set dependencies and get updates easily.

Unable to ignore .terraform before pushing to GitHub

I have an error that prevents me from pushing my changes to my GitHub repo:

remote: error: File .terraform/plugins/darwin_amd64/terraform-provider-aws_v2.1.0_x4 is 134.07 MB; this exceeds GitHub's file size limit of 100.00 MB

I understand the issue is the file is too large to push to github. I've tried adding the whole .terraform folder to my .gitignore file using these guides: from GitHub and from Hashicorp. My .terraform is greyed out in my VSCode.

I've also tried these from several answers on SOF:

git rm -r --cached <filePath>
git reset -r -- <filePath>
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"

I've also tried this.

However:

$ git rm --cached -r .terraform
fatal: pathspec '.terraform' did not match any files
$ git rm -r --cached ./.terraform
fatal: pathspec './.terraform' did not match any files
$ ls -la
total 216
drwxr-xr-x  15 viet  staff    480 12 Mar 15:07 .
drwxr-xr-x  16 viet  staff    512  7 Mar 14:36 ..
drwxr-xr-x  15 viet  staff    480 12 Mar 15:11 .git
-rw-r--r--   1 viet  staff     66 29 Jan 15:04 .gitattributes
-rw-r--r--   1 viet  staff    933 12 Mar 15:08 .gitignore
drwxr-xr-x   3 viet  staff     96 12 Mar 15:07 .terraform
...
$ git push
Counting objects: 35, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (33/33), done.
Writing objects: 100% (35/35), 26.51 MiB | 5.04 MiB/s, done.
Total 35 (delta 17), reused 0 (delta 0)
remote: Resolving deltas: 100% (17/17), completed with 1 local object.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 9cc1ae0d9a2d56bd6f7e8b4b152a10cd
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File .terraform/plugins/darwin_amd64/terraform-provider-aws_v2.1.0_x4 is 134.07 MB; this exceeds GitHub's file size limit of 100.00 MB
To github.com:nditech/NDI-Demtools.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:<REPO-NAME>'

Plan to split out the sentinel policies?

Hi there,

Firstly, thank you very much for your huge effort on this repo. A lot of people and orgs benefited from this, and I'm sure they want to also contribute back. So my question is, Is there any plan to split out the "governance" folder as a standalone repo (focusing on sentinel policies) so that people can contribute back more useful/common/shared policies? The problem I can see based on our usage is, we have to do copy/paste the sub folder of the "governance" folder and keep maintain it forever. And as you can imagine there could be a huge of duplicated effort from the organizations if they want to implement the same policies. @rberlind @bensojona Thoughts?

How to pull all resources in a plan

In all the examples given, the function find_resources_from_plan = func(type) pulls only resources of one type, now how can I pull all resource types from a plan and check if it is having tag ?

Hashistack quickstart has bad life cycle check


1 error(s) occurred:

* module.hashistack_aws.aws_autoscaling_group.hashistack: 1 error(s) occurred:

* aws_autoscaling_group.hashistack: "hashistack-quick-start-hashistack-2018090318411260410000001020180903184134056900000011": Waiting up to 10m0s: Need at least 3 healthy instances in ELB, have 0. Most recent activity: {
  ActivityId: "8a759682-f69a-bc70-26f3-5b9637b9cf41",
  AutoScalingGroupName: "hashistack-quick-start-hashistack-2018090318411260410000001020180903184134056900000011",
  Cause: "At 2018-09-03T18:41:44Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 3.  At 2018-09-03T18:41:45Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 3.",
  Description: "Launching a new EC2 instance: i-0690717c077f6aaee",
  Details: "{\"Subnet ID\":\"subnet-013ac02609168de79\",\"Availability Zone\":\"us-east-1b\"}",
  EndTime: 2018-09-03 18:42:22 +0000 UTC,
  Progress: 100,
  StartTime: 2018-09-03 18:41:48.207 +0000 UTC,
  StatusCode: "Successful"
}

Terraform does not automatically rollback in the face of errors.
Instead, your Terraform state file has been partially updated with
any resources that successfully completed. Please address the error
above and apply again to incrementally change your infrastructure.```

Query resources not managed by terraform

Hi team,

This is more like a question than issue. Is there a way to query AWS resources not managed by Terraform in Sentinel? We have some AMIs not managed by Terraform and we want to write sentinel policies to restrict new EC2 instances to use those AMIs. Is there a way to do this without terraform import? Is there a way to query the resources in Terraform sentinel? Thanks in advance.

Running Third Generation Sentinel Policy Causes Error

Hi all,

I downloaded the Sentinel code examples for policies to try running on my local machine. When I attempt to run the example third generation policies for any of the cloud providers I receive the following error message:

?[0m?[1m?[31mFAIL - enforce-mandatory-tags.sentinel?[0m
?[0m?[1m?[31m  ERROR - test\enforce-mandatory-tags\fail.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\enforce-mandatory-tags\pass.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m
?[0m?[1m?[31mFAIL - restrict-aks-clusters.sentinel?[0m
?[0m?[1m?[31m  ERROR - test\restrict-aks-clusters\fail-max-count.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-aks-clusters\fail-node-count.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-aks-clusters\fail-vm-size.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-aks-clusters\pass-with-autoscaling.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-aks-clusters\pass.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m
?[0m?[1m?[31mFAIL - restrict-app-service-to-https.sentinel?[0m
?[0m?[1m?[31m  ERROR - test\restrict-app-service-to-https\fail.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-app-service-to-https\pass.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m
?[0m?[1m?[31mFAIL - restrict-publishers-of-current-vms.sentinel?[0m
?[0m?[1m?[31m  ERROR - test\restrict-publishers-of-current-vms\fail.json?[0m
?[0m?[31m    Module tfstate-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-publishers-of-current-vms\pass.json?[0m
?[0m?[31m    Module tfstate-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m
?[0m?[1m?[31mFAIL - restrict-vm-size.sentinel?[0m
?[0m?[1m?[31m  ERROR - test\restrict-vm-size\fail.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m?[0m?[1m?[31m  ERROR - test\restrict-vm-size\pass.json?[0m
?[0m?[31m    Module tfplan-functions installation failed: CreateFile C:\Users\<user>\Desktop\Terraform\Sentinel\MockData\terraform-guides\governance\third-generation\azure\.sentinel\test-modules\C:: The filename, directory name, or volume label syntax is incorrect.
?[0m

I can successfully run the second generation policy examples:

?[0m?[1m?[32m  PASS - test\enforce-mandatory-tags\fail-missing-tag-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\enforce-mandatory-tags\fail-missing-tag-0.12.json?[0m
?[0m?[1m?[32m  PASS - test\enforce-mandatory-tags\fail-no-tags-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\enforce-mandatory-tags\fail-no-tags-0.12.json?[0m
?[0m?[1m?[32m  PASS - test\enforce-mandatory-tags\pass-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\enforce-mandatory-tags\pass-0.12.json?[0m
?[0m?[1m?[32mPASS - restrict-app-service-to-https.sentinel?[0m
?[0m?[1m?[32m  PASS - test\restrict-app-service-to-https\fail-0.12.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-app-service-to-https\pass-0.12.json?[0m
?[0m?[1m?[32mPASS - restrict-publishers-of-current-vms.sentinel?[0m
?[0m?[1m?[32m  PASS - test\restrict-publishers-of-current-vms\fail-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-publishers-of-current-vms\fail-0.12.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-publishers-of-current-vms\pass-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-publishers-of-current-vms\pass-0.12.json?[0m
?[0m?[1m?[32mPASS - restrict-vm-size.sentinel?[0m
?[0m?[1m?[32m  PASS - test\restrict-vm-size\fail-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-vm-size\fail-0.12.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-vm-size\pass-0.11.json?[0m
?[0m?[1m?[32m  PASS - test\restrict-vm-size\pass-0.12.json?[0m

My current version of Sentinel is the following:Sentinel v0.16.1 and I have tried running the command using administrator rights. I am running this on a Windows 10 machine.

Could you please elaborate more on why a "Hashistack" cluster practice?

What are the implications of having this cluster setup, where:

3 server nodes where each node has a Vault, Consul, and Nomad agent running in Server mode,

and

3 client nodes, where each node has a Vault, Consul, and Nomad agent running in Client mode.

I would be able to sit down and think of some obvious repercussions, but it would be great if someone more qualified on the matter could elaborate on the whats and whys, and if this is more about conventions and antipatterns than it is about actual risks and potential issues. Thanks in advance.

no reference to old terraform version in any import files to be used in sentinel policy

Hi, we are trying to setup a sentinel policy through which we can warn TFE workspace users about the change in the workspace terraform version. so that they can update the TFE codes to avoid any issues after the terraform version is updated from their last code apply. doing this I am trying to refer the import files. tfstate and tfplan both poin to the updated version of workspace so I can not compare them in the policy. another way would be to compare the tfplan's terraform_version with workspace settings. but the tfrun import also doesnot mention the terraform_version it is set to. attached a mock file downloaded after the workspace terraform_version was updated.
please help with a possible solution for this situation
run-9nL5KCoNJpiQHCxA-sentinel-mocks.tar.gz

Error - r.type is type

Getting lots of below error -

Note - I am running it on TFE workspace and after each run this count of this error increases...

FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type

TRUE - ./restrict-resources-by-module-source.sentinel:125:1 - Rule "evaluate_policy"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
TRUE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:26:4 - r.mode is "managed"
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:8 - strings.has_prefix(module_source, "./")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:574:51 - strings.has_prefix(module_source, "../")
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type
FALSE - ../common-functions/tfconfig-functions/tfconfig-functions.sentinel:25:4 - r.type is type

What is the TTL format for Neptr/reaper

For the project folder terraform-guides/infrastructure-as-code/aws-lambda-ec2-lifecycles/, there is nothing in the docs that outlines what format TTL is in.

I can see from reading the code that "-1" is live forever.

I think it would be easier if the README outlines if TTL is in seconds, or if you can set some format like 30d for 30 days etc. Right now I'm going to just have to try it out to understand this.

aws provider 4 & require-private-acl-and-kms-for-s3-buckets fails on new s3 buckets

We're seeing failures in the require-private-cl-and-kms-for-s3-buckets policy fail in sentinel for new s3 buckets after upgrading to aws provider 4. Looking at the code, we believe it is because the terraform plan output in 0.13.7 runtime for aws provider 4 produces a plan result where server_side_encryption_configuration is linked to new resource objects as opposed to embedding the object. Which causes the "computed" clause here to fail.

https://github.com/hashicorp/terraform-guides/blob/master/governance/second-generation/aws/require-private-acl-and-kms-for-s3-buckets.sentinel#L83

The output of List format is incorrect when use plan.find_resources or tfplan.resource_changes

Issue Statement:

Input Data:

"allow": [
					{
						"ports": [
							"80",
							"10-100",
							"1000-4000",
						],
						"protocol": "tcp",
					},

Output data:

{"allow": [{"ports": ["80" "10-100" "1000-4000"], "protocol": "tcp"}]

i.e. the comma "," is missing between the list elements in the output.
Link1 on Playground

Extract list elements, good example

Each list member is extracted correctly - because they are separated by a comma.

List extract, good example

Extract list elements, error.

Implication : Not able to extract list elements if list members are not separated by comma ","

List extract, error

Questions

  1. Why does the function remove the comma[s] from a list with multiple elements?
  2. Is there some environment variables or some flags that can be set to include the comma[s] in the output?
  3. What is the recommendation to extract each member of the list when they are not separated by comma[s]?
  4. What function(s) can we use for list processing where elements are not complied to standard?

Any related advise or suggestion to overcome this feature is appreciated.

Does not have attribute 'path' for variable 'vault_aws_secret_backend.aws.path'

First of all, thanks for the very nice guide to setup Dynamic AWS Credentials

I'm current getting stuck with this error while trying to execute terraform apply on the first setup at producer side, the error says:

vault_aws_secret_backend_role.producer: Resource 'vault_aws_secret_backend.aws' does not have attribute 'path' for variable 'vault_aws_secret_backend.aws.path'

I have followed exactly the tutorial, and noticed that the new producer-path has been mounted successfully at aws engine on vault, but couldn't write anything due to the above error.

Currently using:
For vault server: Vault v0.11.0 ('87492f9258e0227f3717e3883c6a8be5716bf564')

Terraform v0.11.8

  • provider.aws v1.35.0
  • provider.vault v1.1.1

Could this be due to an API change from the aws provider? Or could I miss anything? Many thanks.

Is it possible to scan multiple resources?

It would be nice to be able to add multiple types of GCP resources.

instead of this:

allGCEInstances = plan.find_resources("google_compute_instance")

Something like this:

resource_types = ["google_compute_instance", "google_storage_bucket"]
allGCEInstances = plan.find_resources(resource_types)

allGCEInstances = plan.find_resources("google_compute_instance")

governance/aws/enforce-mandatory-tags.sentinel doesn't provide useful results

I'm using governance/aws/enforce-mandatory-tags.sentinel (with the tags modified) and when it fails it doesn't produce useful results:

Sentinel Result: false
 
Sentinel evaluated to false because one or more Sentinel policies evaluated
to false. This false was not due to an undefined value or runtime error.
 
1 policies evaluated.
 
Policy 1: AWS_Mandatory_tags.sentinel (hard-mandatory)
 
Result: false
 
FALSE - AWS_Mandatory_tags.sentinel:38:1 - Rule "main"
FALSE - AWS_Mandatory_tags.sentinel:29:5 - all aws_instances as _, instances {
    all instances as index, r {
        all mandatory_tags as t {
            r.applied.tags contains t
        }
    }
}
 
FALSE - AWS_Mandatory_tags.sentinel:28:1 - Rule "instance_tags"

This tells you what part of the rule failed, but not what or where it failed on. Ideally you'd see a type and a name or a line number here to help.

A question really not an issue about remote state and .gitignore

Hi there

I've created a backend.tf file and we're pointing our remote state at azure. It'll help us massively as our team just grew alot and we were getting into a proper mess with local tfstate files.

I can see that your guidelines here suggest to .gitignore the .terraform folder

https://github.com/hashicorp/terraform-guides/blob/master/.gitignore

My question is how would the app know to use the remote backend if there's no .terraform folder?

When the next dev pulls down the app, will it be ok?

Thanks

EKS introduction is a bit messed up

Much like #157 I'm not entirely sure where best to raise this issue, this was the best place I could find.

The AWS EKS Introduction guide seems to have suffered from bitrot, in particular the IAM roles don't seem to make sense now. The worker node IAM role now appears to be a duplicate of the cluster role in that it has the same name and the same policies attached as the cluster, when it should have the CNI policy, etc. attached instead. Also the wrong IAM role is interpolated in the ConfigMap near the end; it references the cluster IAM role instead of the worker role which results in no obvious errors but the workers cannot access the API to join the cluster as they are unauthorized.

While it's a good learning experience to work out what's wrong and fix it, I suspect this wasn't the original intent of the guide. If there's a more suitable repo to migrate this issue to, and/or the source for the document I'm happy to try and submit a PR.

This method cannot be used with the terraform s3 backend

This example works great with the local state backend, but if you're using S3 as your remote state, you can't set the backend configuration using the generated credentials.

For example, this project:

terraform {
  backend "s3" {
    access_key = "${data.vault_aws_access_credentials.creds.access_key}"
    secret_key = "${data.vault_aws_access_credentials.creds.secret_key}"

    bucket     = "tfstate"
  }
}

provider "vault" {}

data "vault_aws_access_credentials" "creds" {
  backend = "aws"
  role    = "terraform"
}

provider "aws" {
  access_key = "${data.vault_aws_access_credentials.creds.access_key}"
  secret_key = "${data.vault_aws_access_credentials.creds.secret_key}"
}

throws the error:

Error loading backend config: 1 error(s) occurred:

  • terraform.backend: configuration cannot contain interpolations

This is apparently a known issue with terraform backends hashicorp/terraform#15131.

This would have been a great solution, but without some other process to insert credentials for the s3 backend out-of-band, is unworkable.

Publish a release?

I would like to use the tfplan-functions and the like in sentinel policies with direct references, similar to one as seen here https://nicovibert.com/2020/10/05/first-look-into-hashicorp-sentinel-and-policy-as-code-part-2/

like

module "tfplan-functions" {
    source = "https://raw.githubusercontent.com/hashicorp/terraform-guides/master/governance/third-generation/common-functions/tfplan-functions/tfplan-functions.sentinel"
}
 
module "tfstate-functions" {
    source = "https://raw.githubusercontent.com/hashicorp/terraform-guides/master/governance/third-generation/common-functions/tfstate-functions/tfstate-functions.sentinel"
}
 
module "tfconfig-functions" {
    source = "https://raw.githubusercontent.com/hashicorp/terraform-guides/master/governance/third-generation/common-functions/tfconfig-functions/tfconfig-functions.sentinel"
}

When I looked at this repo, there are no releases published, is it possible to publish a release it is not pointing to a moving branch (master). Thanks!

And if this not a recommended practice please let me know.

Thanks!
Balaji

Restrict to deployment to region

Hi,

this is more a question rather than a problem.
Maybe I do not fully understand the sentinel engine.

But how can I restrict the resource deployment to a specific region?
For instance, when the provider is aws, only deployments in eu-central-1 are allowed.

how do we work with imports

i'm not sure if this is an issue
i have a code policy.sentinel

import "tfplan"
allowed_machine_types = [
"n1-standard-1",
"n1-standard-2",
"n1-standard-4",
"n1-standard-8",
]

main = rule {
all tfplan.resources as type, resources {
all resources as r {
r.applied.machine_type in allowed_machine_types
}
}
}

then i have config.json

{
"imports": {
"tfplan": {
"path": "terraplan"
}
}
}

where terraplan is an executable file generrated when i run
terraform plan -out terraplan
when i run sentinel apply -config=config policy.sentinel
i get this error

Runtime error while running the policy:

test.sentinel:1:1: exec: "terraform": executable file not found in $PATH

A runtime error is a non-recoverable error and always represents a bug
in the policy. When a runtime error is experienced, the result of the
policy is "false". Please fix the error above and try again.

what could i be doing wrong??

restrict-assumed-role-by-workspace.sentinel policy throws some syntax error when module in terraform used

while apply sentinel policy "restrict-assumed-role-by-work space" throws an syntax error as below

An error occurred: aws-apps/restrict-assumed-role-by-workspace.sentinel:28:15: only a list or map can be indexed, got undefined
sentinel policy error

The below code of line has some issues especially the highlighted one.

  for tfconfig.module_paths as path {
    # Iterate over providers of given type in module
    aliases = tfconfig.module(path).providers[type]["alias"] else {}         ###This is the line number gets the error####
    for aliases as alias, data {
      # Change default alias ("") to "default"
      if alias is "" {
        alias = "default"
      }
      # Get the address of the provider alias
      if length(path) == 0 {
        # root module
        address =  type + "." + alias
      } else {
        # non-root module
        address = "module." + strings.join(path, ".module.") + "." +
                  type + "." + alias
      }
      providers[address] = data
    } // end aliases loop
  } // end module_paths loop
  return providers
}

Can someone look this into and help me to resolve it. Thanks.

TFE demo updates

terraform-guides/infrastructure-as-code/aws-ec2-instance/variables.tf

line 7: update to Ubuntu 18.04
line 8: update AMI to ami-063aa838bd7631e0b

terraform-guides/infrastructure-as-code/aws-ec2-instance/main.tf

line 12: update AZ suffix from "a" to "b"

3rd generation plan functions - filter_attribute_is_not_value

Hi,

Thanks for putting together all these guide and sample code to help write better sentinel policies.

I have a situation where I want to test if a property is an empty list, but the plan could also return a null.

I did try to use filter_attribute_is_not_value, but it would return an error when the plan was empty.

sentinel test
...
module.key_vault.azurerm_key_vault.this has network_acls.0.ip_rules that is null or undefined. It is supposed to be []

So, I made a new function filter_attribute_is_not_value_allow_null that has another parameter to allow or not allow null values.

### filter_attribute_is_not_value_allow_null ###
# Filter a list of resources to those with a specified
# attribute (attr) that does not have a given value.
# Resources should be derived by applying filters to tfplan.resource_changes.
# Set prtmsg to `true` (without quotes) if you want to print violation messages.
filter_attribute_is_not_value_allow_null = func(resources, attr, value, allow_null, prtmsg) {
  violators = {}
	messages = {}

  for resources as address, rc {
    v = evaluate_attribute(rc, attr) else null
    if v is null {
      if allow_null == false {
        # Add the resource and a warning message to the violators list
        message = to_string(address) + " has " + to_string(attr) +
                  " that is null or undefined. " + "It is supposed to be " +
                  to_string(value)
        violators[address] = rc
        messages[address] = message
        if prtmsg {
          print(message)
        }
      }
    } else if v is not value {
      # Add the resource and a warning message to the violators list
      message = to_string(address) + " has " + to_string(attr) + " with value " +
                to_string(v) + " that is not equal to " + to_string(value)
      violators[address] = rc
			messages[address] = message
      if prtmsg {
        print(message)
      }
    }
  }
  return {"resources":violators,"messages":messages}
}

This issue is to raise this new scenario for your consideration.
Potentially, the existing function could be updated, or a new one added.

Cheers

Get rid of "master" and any other insensitive terms

As part of the PDCT-002 initiative on sensitive language, we should remove all occurences of "master" that can be removed without breaking functionality of the examples in this repository.

I previously removed all occurences of "blacklist" and "whitelist" (mostly from some Sentinel policies).

Terraforming Physical Machines/Baremetal

Any examples of Terraforming local infrastructure on premise ? I know cloud is the rage, but there are not many examples of terraforming a set of local servers.
This is an enhancement request

Nomad HashiStack in 'dev' mode for Vagrant is not accessible via the UI

Ports 8500, 8200, and 4646 are forwarded from host to guest in the config file. I am able to view the Consul and Vault UIs in a web browser, but port 4646 throws connection errors. If you vagrant ssh and then curl http://localhost:4646 it gives a redirect, and you can also curl http://localhost:4646/ui/ and get the Nomad UI to load.

I will investigate further and try to find out if its a problem with my machine.

Default values for rich type variables

When defining rich type variables, is it possible to specify a default value just like for string in the example below?

variable "label" {
type = "string"
default = "dev"
}

KeyError

Hi @rberlind - I generated the API token, specified variables.csv and ran with a sample git repo. I get the following error:
KeyError: 'data'
Run Status:
Traceback (most recent call last):
File "", line 1, in
KeyError: 'data'
Run can be applied:
We will sleep and try again soon.
Checking run status
Traceback (most recent call last):
File "", line 1, in
KeyError: 'data'
Run Status:
Traceback (most recent call last):
File "", line 1, in
KeyError: 'data'
Run can be applied:
We will sleep and try again soon.
Checking run status
Traceback (most recent call last):
File "", line 1, in
KeyError: 'data'
Run Status:
Traceback (most recent call last):
File "", line 1, in
KeyError: 'data'
Run can be applied:

Nomad not registered with consul

After provisioning all infrastructure as defined in 'best practices' example, nomad is not listed when executing consul catalog services from the bastion host and is not registered. Using all default settings.

Running in us-west-2

I have an update for the require latest modules policy check but, doesn't account for public registry.

For policy check: https://github.com/hashicorp/terraform-guides/blob/master/governance/third-generation/cloud-agnostic/http-examples/use-latest-module-versions.sentinel

Currently that policy check doesn't pull all modules, this function will allow you to pull all of them but, doest account for public module registry. As it would break certain usages of the original policy because of the lack of support for public module registry, I have created this as an issue instead of a PR on the policy.

@rberlind thought this might useful.

get_modules = func(url, modules) {
  req = http.request(url)
  req = req.with_header("Authorization", "Bearer " + token)
  res = json.unmarshal(http.get(req).body)
  # Iterate over the modules and extract names, providers, and latest versions
  for res.modules as m {
    index = m.namespace + "/" + m.name + "/" + m.provider
    modules[index] = m.version
  }
  for keys(res.meta) as attr{
    if attr == "next_url" {
      if int(res.meta.next_offset) > 0 {
        return get_modules(address + "/api/registry/v1/modules/" + organization + "?namespace=clover&offset=" + string(res.meta.next_offset), modules)
      }
    }
  }
  return modules
}

Variables not being applied to Workspace

While running (https://github.com/hashicorp/terraform-guides/blob/master/operations/automation-script/loadAndRunWorkspace.sh), variables listed in Variables.CSV (stored in repository with main.tf) file are acknowledged in the script output as it runs, but are not shown nor found by Terraform in the workspace.

run-ab8smWGF9aZH3tpF-plan-log.txt

The Readme states variables applied via the CSV file will be shown in the workspace. Not sure where the error is, but suggest it could be due to new versioning of TF Cloud, since I also had to update the hardcoded Terraform Version in the loadandrunworkspace.sh file to get as far as I did.

Of course, I could be missing something as well! I appreciate any assistance provided.

EKS VPC requires 'enable_dns_hostnames'

Hi,

I'm filing this issue to report a problem with the AWS EKS Introduction guide. I know it's not in this repository, but I'm not finding any other way to suggest changes to those guides.

The guides creates a VPC with the following:

resource "aws_vpc" "demo" {
  cidr_block = "10.0.0.0/16"

  tags = "${
    map(
     "Name", "terraform-eks-demo-node",
     "kubernetes.io/cluster/${var.cluster-name}", "shared",
    )
  }"
}

EKS VPCs need the enable_dns_hostnames option to be true.

resource "aws_vpc" "demo" {
  cidr_block = "10.0.0.0/16"
  enable_dns_hostnames = true

  tags = "${
    map(
     "Name", "terraform-eks-demo-node",
     "kubernetes.io/cluster/${var.cluster-name}", "shared",
    )
  }"
}

See https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html

Your VPC must have DNS hostname and DNS resolution support. Otherwise, your worker nodes cannot register with your cluster.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.