File tree Expand file tree Collapse file tree 10 files changed +166
-0
lines changed Expand file tree Collapse file tree 10 files changed +166
-0
lines changed Original file line number Diff line number Diff line change
1
+ name : Generate terraform docs
2
+
3
+ on :
4
+ - pull_request
5
+
6
+ jobs :
7
+ docs :
8
+ runs-on : ubuntu-latest
9
+ steps :
10
+ - uses : actions/checkout@v4
11
+ with :
12
+ ref : ${{ github.event.pull_request.head.ref }}
13
+
14
+ - name : Render terraform docs and push changes back to PR
15
+ uses : terraform-docs/gh-actions@main
16
+ with :
17
+ working-dir : .
18
+ output-file : README.md
19
+ output-method : inject
20
+ git-push : " true"
Original file line number Diff line number Diff line change
1
+ # Local .terraform directories
2
+ ** /.terraform /*
3
+
4
+ # .tfstate files
5
+ * .tfstate
6
+ * .tfstate. *
7
+
8
+ # Crash log files
9
+ crash.log
10
+ crash. * .log
11
+
12
+ # Exclude all .tfvars files, which are likely to contain sensitive data, such as
13
+ # password, private keys, and other secrets. These should not be part of version
14
+ # control as they are data points which are potentially sensitive and subject
15
+ # to change depending on the environment.
16
+ * .tfvars
17
+ * .tfvars.json
18
+
19
+ # Ignore override files as they are usually used to override resources locally and so
20
+ # are not checked in
21
+ override.tf
22
+ override.tf.json
23
+ * _override.tf
24
+ * _override.tf.json
25
+
26
+ # Include override files you do wish to add to version control using negated pattern
27
+ # !example_override.tf
28
+
29
+ # Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
30
+ # example: *tfplan*
31
+
32
+ # Ignore CLI configuration files
33
+ .terraformrc
34
+ terraform.rc
Original file line number Diff line number Diff line change
1
+ # Terraform AWS IAM Role for GitHub Actions
2
+
3
+ This repository provides a Terraform module to create an IAM role with the necessary permissions and trust policies for GitHub Actions to manage AWS Organizations resources.
4
+
5
+ ## Usage
6
+
7
+ ### Module
8
+
9
+ ``` hcl
10
+ module "github_actions_iam_role" {
11
+ source = "github.com/infraspecdev/terraform-aws-github-actions-iam-role?ref=main"
12
+
13
+ aws_account_id = "YOUR_AWS_ACCOUNT_ID"
14
+ github_username = "YOUR_GITHUB_USERNAME"
15
+ repository_names = "YOUR_REPO_NAMES"
16
+ role_name = "GitHubActionsRole"
17
+ }
18
+ ```
19
+
20
+ ## Variables
21
+
22
+ - ** aws_account_id** : The AWS Account ID where the IAM role will be created.
23
+ - ** github_username** : The GitHub username or organization name.
24
+ - ** repository_names** : The list of GitHub repository names.
25
+ - ** role_name** : (Optional) The name of the IAM role. Default is ` GitHubActionsRole ` .
26
+
27
+ ## Outputs
28
+
29
+ - ** role_arn** : The ARN of the IAM role.
Original file line number Diff line number Diff line change
1
+ data "aws_iam_policy_document" "assume_role_policy" {
2
+ statement {
3
+ effect = " Allow"
4
+
5
+ principals {
6
+ type = " Federated"
7
+ identifiers = [" arn:aws:iam::${ var . aws_account_id } :oidc-provider/token.actions.githubusercontent.com" ]
8
+ }
9
+
10
+ actions = [" sts:AssumeRoleWithWebIdentity" ]
11
+
12
+ condition {
13
+ test = " StringEquals"
14
+ variable = " token.actions.githubusercontent.com:sub"
15
+ values = local. repository_ref_list
16
+ }
17
+
18
+ condition {
19
+ test = " StringEquals"
20
+ variable = " token.actions.githubusercontent.com:aud"
21
+ values = [" sts.amazonaws.com" ]
22
+ }
23
+ }
24
+ }
Original file line number Diff line number Diff line change
1
+ locals {
2
+ repository_ref_list = flatten ([
3
+ for repo in var . repository_names :
4
+ " repo:${ var . github_username } /${ repo } :*"
5
+
6
+ ])
7
+ }
Original file line number Diff line number Diff line change
1
+ resource "aws_iam_role" "github_actions_role" {
2
+ name = var. role_name
3
+ assume_role_policy = data. aws_iam_policy_document . assume_role_policy . json
4
+ }
5
+
6
+ resource "aws_iam_role_policy_attachment" "attach_admin_policy" {
7
+ role = aws_iam_role. github_actions_role . name
8
+ policy_arn = " arn:aws:iam::aws:policy/AdministratorAccess"
9
+ }
Original file line number Diff line number Diff line change
1
+ output "role_arn" {
2
+ description = " The ARN of the IAM role"
3
+ value = aws_iam_role. github_actions_role . arn
4
+ }
Original file line number Diff line number Diff line change
1
+ provider "aws" {
2
+ region = " ap-south-1"
3
+
4
+ default_tags {
5
+ tags = {
6
+ ManagedBy = " Terraform"
7
+ }
8
+ }
9
+ }
Original file line number Diff line number Diff line change
1
+ variable "aws_account_id" {
2
+ description = " The AWS Account ID"
3
+ type = string
4
+ }
5
+
6
+ variable "github_username" {
7
+ description = " The name of the GitHub user or organization that owns the repository(ies) the role will use."
8
+ type = string
9
+ }
10
+
11
+ variable "repository_names" {
12
+ description = " List of names of the GitHub repository that will be allowed to assume the role."
13
+ type = list (string )
14
+ }
15
+
16
+ variable "role_name" {
17
+ description = " The name of the IAM Role to be created."
18
+ type = string
19
+ default = " GitHubActionsRole"
20
+ }
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ required_providers {
3
+ aws = {
4
+ source = " hashicorp/aws"
5
+ version = " ~> 5.51.0"
6
+ }
7
+ }
8
+
9
+ required_version = " ~> 1.8.4"
10
+ }
You can’t perform that action at this time.
0 commit comments