Skip to content
This repository was archived by the owner on Oct 7, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
584 commits
Select commit Hold shift + click to select a range
c814de9
Bug fixes 2.x pr 2.x (#2252)
gregharvey Jan 16, 2025
2288a06
Bug fixes 2.x pr 2.x (#2256)
gregharvey Jan 16, 2025
606b8f7
Bug fixes 2.x pr 2.x (#2259)
gregharvey Jan 17, 2025
28243d1
Updating-nodejs (#2262)
drazenCE Jan 22, 2025
de5313a
Fixing-unattended-upgrades (#2268)
drazenCE Jan 23, 2025
b5eca01
Bug fixes 2.x pr 2.x (#2272)
gregharvey Jan 23, 2025
ddc9dac
Allowing more flexible definition of sudo privileges via user_ansible…
gregharvey Jan 24, 2025
e0888ff
Bug fixes 2.x pr 2.x (#2280)
gregharvey Jan 29, 2025
c639402
Bug fixes 2.x pr 2.x (#2281)
gregharvey Jan 30, 2025
84fc781
Enhanced quick start pr 2.x (#2283)
gregharvey Jan 30, 2025
8d3975a
ldap ca certificate refactor (#2247)
filiprupic Jan 30, 2025
207dfcb
Merge branch 'devel-2.x' into 2.x
gregharvey Jan 30, 2025
92fb7c5
Enhanced quick start pr 2.x (#2286)
gregharvey Jan 30, 2025
bfc59e2
Enhanced quick start pr 2.x (#2289)
gregharvey Feb 5, 2025
6e102ab
optional_working_dir_for_ansible_galaxy (#2291)
tymofiisobchenko Feb 10, 2025
670ca54
add_missing_condition (#2293)
tymofiisobchenko Feb 10, 2025
ebbc13d
hide_task_output (#2295)
tymofiisobchenko Feb 10, 2025
63ba8d9
Allowing openvpn role to set up a client config location. (#2297)
gregharvey Feb 11, 2025
de98bc1
Openvpn client config pr 2.x (#2299)
gregharvey Feb 11, 2025
9cd127e
Bug fixes pr 2.x (#2302)
gregharvey Feb 12, 2025
b64ab8b
Bug fixes pr 2.x (#2304)
gregharvey Feb 13, 2025
149af43
Updating-haymarket-drupal-common (#2312)
drazenCE Feb 17, 2025
5a04ee3
Updating-drupal-common-j2 (#2319)
drazenCE Feb 17, 2025
11b740c
Bug fixes pr 2.x (#2322)
gregharvey Feb 19, 2025
468c0ce
Postfix-rsyslog (#2328)
drazenCE Feb 19, 2025
ad8e35a
Reverting-rsyslog-changes (#2335)
drazenCE Feb 20, 2025
0160e68
Updating-timer-persistency (#2323)
drazenCE Feb 20, 2025
922d7c2
adding support for varnish during generates (#2306)
filiprupic Feb 21, 2025
142c0c0
adding swap to common base (#2341)
filiprupic Feb 21, 2025
6a3e9e8
Updating rsyslog conf (#2343)
drazenCE Feb 24, 2025
59e098d
Updating-Backup-validation-role (#2344)
matej5 Feb 25, 2025
f8ee952
Updating-drupal-common-drupal-fallback-optional (#2348)
drazenCE Mar 3, 2025
3c67a2d
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
6c9c9c2
n10-Creating-new-role-for-administration
Mar 4, 2025
3624510
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
2450389
Adding-role-in-meta-tasks
Mar 4, 2025
0d15bcc
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
d5617c6
Moving-swag-file
Mar 4, 2025
b612e6d
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
19f2cb9
Moving-swag-file-2
Mar 4, 2025
7e12c91
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
d6e41d3
Changing-from-swagger-file-to-text
Mar 4, 2025
966575e
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
8b0f681
Adding-API-lookup-prior-to-creation
Mar 4, 2025
2201e65
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
6318134
Adding-API-lookup-prior-to-creation-2
Mar 4, 2025
12ceb50
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
642557d
Adding-API-lookup-prior-to-creation-3
Mar 4, 2025
8dab848
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
7fbec97
Adding-API-lookup-prior-to-creation-4
Mar 4, 2025
fdc336d
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
8fa230a
Adding-API-lookup-prior-to-creation-5
Mar 4, 2025
84a1f11
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
f693aed
Adding-API-lookup-prior-to-creation-6
Mar 4, 2025
16116e2
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
c2de109
Adding-API-lookup-prior-to-creation-7
Mar 4, 2025
f833822
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
27ec0c5
Updating-tasks
Mar 4, 2025
51dc7ff
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
33e4164
Updating-tasks
Mar 4, 2025
c8f39dd
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
aeac776
Updating-tasks-2
Mar 4, 2025
a10bd4c
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
6d24b7b
Updating-tasks-3
Mar 4, 2025
5d989c0
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
71881fa
Updating-tasks-4
Mar 4, 2025
1a4c3a9
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
7fe971c
Updating-tasks-4
Mar 4, 2025
220f413
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
aa62247
Updating-tasks-5
Mar 4, 2025
9172d64
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
c449201
Updating-tasks-6
Mar 4, 2025
2c990ad
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
97c9c48
Updating-tasks-7
Mar 4, 2025
bf7dcf3
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 4, 2025
3aaa16d
Adding-for-loop-for-lambda-functions
Mar 5, 2025
9b7518a
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
cf1295e
Adding-for-loop-for-lambda-functions-2
Mar 5, 2025
a08eaa6
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
fb23ca0
Adding-for-loop-for-lambda-functions-3
Mar 5, 2025
a268d83
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
d89cd20
Adding-for-loop-for-lambda-functions-4
Mar 5, 2025
d634458
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
0c1c28b
Adding-for-loop-for-lambda-functions-5
Mar 5, 2025
fe7caad
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
356b39a
Adding-for-loop-for-lambda-functions-6
Mar 5, 2025
2c83dad
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
6becf47
Adding-for-loop-for-lambda-functions-7
Mar 5, 2025
180c9cf
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
37e18b6
Adding-for-loop-for-lambda-functions-8
Mar 5, 2025
e5c7f93
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
82e9f8b
Adding-for-loop-for-lambda-functions-9
Mar 5, 2025
529ad97
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
77e3ba5
Adding-for-loop-for-lambda-functions-10
Mar 5, 2025
b891684
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
163b82e
Adding-for-loop-for-lambda-functions-11
Mar 5, 2025
527a368
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
34286b7
Switching-role-to-use-aws-cli
Mar 5, 2025
565210f
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
eb12ddc
Switching-role-to-use-aws-cli-2
Mar 5, 2025
d2c5a21
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
f753c72
Switching-role-to-use-aws-cli-3
Mar 5, 2025
8ee110c
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
bc461a1
Switching-role-to-use-aws-cli-4
Mar 5, 2025
b855ff9
Merge branch 'n10-Creating-new-role-for-administration' into n10-Crea…
Mar 5, 2025
587f382
Publish docs pr devel 2.x (#2167)
gregharvey Jan 7, 2025
da689c4
Publish docs pr devel 2.x (#2169)
gregharvey Jan 7, 2025
a9443a8
Switching-role-to-use-aws-cli-5
Mar 5, 2025
d896d15
Switching-role-to-use-aws-cli-6
Mar 5, 2025
0c0eb88
resolving-conflicts
Mar 5, 2025
b917414
Switching-role-to-use-aws-cli-7
Mar 5, 2025
a67c3ca
Switching-role-to-use-aws-cli-8
Mar 5, 2025
3b91b0c
Switching-role-to-use-aws-cli-9
Mar 5, 2025
15d2f31
Switching-role-to-use-aws-cli-10
Mar 5, 2025
3c7649b
Switching-role-to-use-aws-cli-11
Mar 5, 2025
73176b9
Switching-role-to-use-aws-cli-12
Mar 5, 2025
fde5d49
Switching-role-to-use-aws-cli-13
Mar 5, 2025
155631e
Switching-role-to-use-aws-cli-14
Mar 5, 2025
bf496cf
Switching-role-to-use-aws-cli-15
Mar 5, 2025
c90e17a
Switching-role-to-use-aws-cli-16
Mar 5, 2025
0bba695
Switching-role-to-use-aws-cli-17
Mar 5, 2025
60a6074
Switching-role-to-use-aws-cli-18
Mar 5, 2025
a805d3e
Switching-role-to-use-aws-cli-19
Mar 5, 2025
fb13045
Switching-role-to-use-aws-cli-20
Mar 5, 2025
d2ffdf6
Switching-role-to-use-aws-cli-21
Mar 5, 2025
fa3427f
Switching-role-to-use-aws-cli-22
Mar 5, 2025
8128909
Switching-role-to-use-aws-cli-23
Mar 5, 2025
5156d62
Adding-tasks-for-lambda-functions
Mar 5, 2025
e21a6f4
Adding-tasks-for-lambda-functions-2
Mar 5, 2025
065e4b8
Adding-tasks-for-lambda-functions-2
Mar 5, 2025
065f221
Adding-tasks-for-lambda-functions-3
Mar 5, 2025
fa5ca88
Adding-waf
Mar 6, 2025
4395b05
Adding-waf-2
Mar 6, 2025
d2a6c95
Adding-waf-3
Mar 6, 2025
ab7ab6d
Adding-waf-4
Mar 6, 2025
7fc0186
Adding-waf-5
Mar 6, 2025
3d33651
Adding-waf-6
Mar 6, 2025
68cc8f0
Adding-waf-7
Mar 6, 2025
4c200b1
Adding-waf-8
Mar 6, 2025
a9b0e2b
Adding-waf-9
Mar 6, 2025
bcfccca
Adding-waf-9
Mar 6, 2025
d13779c
Adding-waf-11
Mar 6, 2025
50b249f
Adding-waf-12
Mar 6, 2025
a9489e2
Adding-waf-13
Mar 6, 2025
d07d5e4
Adding-waf-14
Mar 6, 2025
be113ac
Adding-waf-15
Mar 7, 2025
59ab43e
Adding-waf-15
Mar 7, 2025
58e8334
Adding-waf-17
Mar 7, 2025
012cfaa
Adding-waf-18
Mar 7, 2025
9b90a4e
Adding-waf-19
Mar 7, 2025
73e8f68
Adding-waf-20
Mar 7, 2025
f4c5063
Adding-waf-21
Mar 7, 2025
3a16cc0
Adding-waf-22
Mar 7, 2025
60507c7
Adding-waf-23
Mar 7, 2025
f0bbf1c
Updating-nitial-tasks
Mar 7, 2025
514b198
Updating-initial-tasks-2
Mar 7, 2025
959bc41
Updating-initial-tasks-3
Mar 7, 2025
8a5901f
Updating-initial-tasks-4
Mar 7, 2025
e8bf304
Updating-initial-tasks-5
Mar 7, 2025
4d9efb5
Updating-initial-tasks-6
Mar 7, 2025
5316a81
Updating-initial-tasks-7
Mar 10, 2025
ac47006
Updating-initial-tasks-8
Mar 10, 2025
72d5514
Updating-initial-tasks-9
Mar 10, 2025
1f6e1e6
Updating-initial-tasks-10
Mar 10, 2025
4dfb8b7
Updating-initial-tasks-11
Mar 10, 2025
c24aeba
Updating-initial-tasks-12
Mar 10, 2025
8890859
Updating-initial-tasks-13
Mar 10, 2025
6273768
Updating-initial-tasks-13
Mar 10, 2025
8104b0c
Updating-initial-tasks-14
Mar 11, 2025
7d71a72
Updating-initial-tasks-15
Mar 11, 2025
848e2a9
Updating-initial-tasks-16
Mar 11, 2025
0b3694e
Updating-initial-tasks-17
Mar 11, 2025
fdcf00e
Updating-initial-tasks-18
Mar 11, 2025
855b169
Updating-initial-tasks-19
Mar 11, 2025
6e116dd
Updating-initial-tasks-20
Mar 11, 2025
52e1871
Updating-initial-tasks-21
Mar 11, 2025
e83c1be
Updating-initial-tasks-22
Mar 11, 2025
f8b1345
Updating-initial-tasks-23
Mar 11, 2025
966d385
Updating-initial-tasks-24
Mar 12, 2025
39fe121
Updating-initial-tasks-24
Mar 12, 2025
9537aff
Updating-initial-tasks-25
Mar 12, 2025
6ee7428
Updating-initial-tasks-26
Mar 12, 2025
1815eb7
Updating-initial-tasks-27
Mar 12, 2025
8f83f2b
Updating-initial-tasks-28
Mar 12, 2025
0a3d337
Updating-initial-tasks-29
Mar 12, 2025
678a00f
Updating-initial-tasks-30
Mar 12, 2025
b78a877
Updating-initial-tasks-31
Mar 12, 2025
e029306
Updating-initial-tasks-32
Mar 12, 2025
fb341af
Updating-initial-tasks-33
Mar 12, 2025
2582c5e
Updating-initial-tasks-34
Mar 12, 2025
c927bdd
Updating-initial-tasks-35
Mar 12, 2025
1dfb5b1
Updating-initial-tasks-36
Mar 12, 2025
7ed72fa
New-admin-tools-role-3
Mar 12, 2025
d0610a4
New-admin-tools-role-4
Mar 12, 2025
450b1df
New-admin-tools-role-5
Mar 12, 2025
a0c5c82
New-admin-tools-role-6
Mar 12, 2025
b14e7c6
New-admin-tools-role-4
Mar 12, 2025
471a55e
Updating-lambda-policy
Mar 13, 2025
b152f43
Updating-lambda-policy-2
Mar 13, 2025
d529b91
Updating-lambda-policy-3
Mar 13, 2025
80fc64b
Updating-lambda-policy-4
Mar 13, 2025
adce175
Updating-lambda-policy-5
Mar 13, 2025
57c96ae
Updating-lambda-policy-6
Mar 13, 2025
4bad8fc
Adding-new-roles-and-updating-old-ones
Mar 14, 2025
a8ab1d5
Adding-new-roles-and-updating-old-ones-2
Mar 14, 2025
f331bec
Adding-new-roles-and-updating-old-ones-3
Mar 14, 2025
a684b8a
Adding-new-roles-and-updating-old-ones-4
Mar 14, 2025
d93664e
Adding-new-roles-and-updating-old-ones-5
Mar 14, 2025
3da0a4d
Adding-new-roles-and-updating-old-ones-5
Mar 14, 2025
1909d52
Adding-new-roles-and-updating-old-ones-7
Mar 14, 2025
3e441eb
Adding-new-roles-and-updating-old-ones-8
Mar 14, 2025
4768a70
Adding-new-roles-and-updating-old-ones-9
Mar 14, 2025
558e48b
Adding-new-roles-and-updating-old-ones-9
Mar 16, 2025
f7f570f
Adding-new-roles-and-updating-old-ones-11
Mar 16, 2025
7a444a6
Adding-new-roles-and-updating-old-ones-12
Mar 16, 2025
bbf4217
Adding-new-roles-and-updating-old-ones-13
Mar 16, 2025
de166d7
Adding-new-roles-and-updating-old-ones-14
Mar 16, 2025
f1ebdb4
Adding-new-roles-and-updating-old-ones-15
Mar 16, 2025
6bb1e43
Adding-new-roles-and-updating-old-ones-16
Mar 16, 2025
fc26b2b
Adding-new-roles-and-updating-old-ones-17
Mar 16, 2025
cee309b
Adding-new-roles-and-updating-old-ones-18
Mar 16, 2025
9d1006a
Adding-new-roles-and-updating-old-ones-19
Mar 16, 2025
0478e4a
Updating-results-on-roles
Mar 16, 2025
5cfd249
Updating-results-on-roles-2
Mar 16, 2025
434403a
Updating-results-on-roles-3
Mar 16, 2025
f4a74b2
Updating-results-on-roles-4
Mar 16, 2025
69f3f10
Updating-results-on-roles-5
Mar 16, 2025
3d77911
Updating-results-on-roles-6
Mar 16, 2025
968d138
Updating-results-on-roles-7
Mar 16, 2025
ea143a2
Updating-results-on-roles-8
Mar 16, 2025
16ed8d9
Updating-results-on-roles-9
Mar 16, 2025
9b5c052
changing-include_role-with-import_role
Mar 19, 2025
494a95d
revert-changing-include_role-with-import_role
Mar 19, 2025
50da0f2
Removing-function_file-variable-from-aws_lambda_var
Mar 19, 2025
e7e891d
Removing-function_file-variable-from-aws_lambda_var-2
Mar 19, 2025
49581d8
Removing-function_file-variable-from-aws_lambda_var-
Mar 19, 2025
f38c24d
Adding-print-variable-before-s3-bucket-creation
Mar 19, 2025
f8da52b
Unsetting-aws-lambda-and-s3-bucket-dicts
Mar 19, 2025
b958a33
Adding-task-to-get-testng-plans
Mar 19, 2025
eb89b6b
Adding-pause-task
Mar 19, 2025
95c298e
Updating-lambda-role
Mar 19, 2025
3288c53
Updating-event-bridge-task
Mar 19, 2025
4abf9a0
Updating-arn-for-tasks
Mar 19, 2025
cd00c9a
Updating-arn-for-tasks-2
Mar 19, 2025
6d58d34
Updating-arn-for-tasks-3
Mar 19, 2025
9d7f438
Updating-arn-for-tasks-4
Mar 19, 2025
7addbaa
Updating-debug-task
Mar 19, 2025
911ba22
Updating-debug-task-2
Mar 19, 2025
6383b88
Revering-meta-tasks
Mar 19, 2025
fc9f069
Merge branch 'devel-2.x' into n10-Creating-new-role-for-administratio…
matej5 Mar 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion roles/aws/aws_admin_tools/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
- name: Create API gateway.
- name: Get account ID for ARN.
ansible.builtin.command: >-
aws sts get-caller-identity
--query Account
Expand Down
2 changes: 1 addition & 1 deletion roles/aws/aws_backup_validation/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
aws_backup_validation:
s3_bucket: "codeenigma-{{ _aws_profile }}-general-storage-{{ _aws_region }}"
s3_bucket: "ce-{{ _aws_profile }}-lambda-functions"
name: "RestoreValidation"
description: "Restore validation is running every Sunday at 00:00AM, and validation reporting is triggered on Monday 00:00AM"
timeout: 60
Expand Down
238 changes: 89 additions & 149 deletions roles/aws/aws_backup_validation/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,162 +1,102 @@
---
- name: Create a role and attach policies
amazon.aws.iam_role:
name: LambdaBackupRestoreRole
assume_role_policy_document: "{{ lookup('file', 'trusted_entitites.j2') }}"
managed_policies:
- arn:aws:iam::aws:policy/AmazonEC2FullAccess
- arn:aws:iam::aws:policy/AWSBackupFullAccess
- arn:aws:iam::aws:policy/AmazonRDSFullAccess
- arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
- arn:aws:iam::aws:policy/AmazonSESFullAccess
- arn:aws:iam::aws:policy/AmazonSSMFullAccess
register: _created_iam_lambda_role

- name: Create an IAM Managed Policy for passing roles
amazon.aws.iam_managed_policy:
policy_name: "PassRole"
policy:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action: "iam:PassRole"
Resource: "*"
state: present
register: _pass_role

- name: Update AWSBackupDefaultServiceRole
amazon.aws.iam_role:
name: AWSBackupDefaultServiceRole
assume_role_policy_document: "{{ lookup('file', 'pass_role_backup.j2') }}"
managed_policies:
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores
- "{{ _pass_role.policy.arn }}"
- name: Create a role and attach policies for Lambda backup validation.
ansible.builtin.include_role:
name: aws/aws_iam_role
vars:
aws_iam_role:
name: LambdaBackupRestoreRole
aws_profile: "{{ _aws_profile }}"
managed_policies:
- arn:aws:iam::aws:policy/AmazonEC2FullAccess
- arn:aws:iam::aws:policy/AWSBackupFullAccess
- arn:aws:iam::aws:policy/AmazonRDSFullAccess
- arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
- arn:aws:iam::aws:policy/AmazonSSMFullAccess
policy_document: "{{ lookup('file', 'trusted_entitites.j2') }}"

- name: Create backup validation Lambda functions.
ansible.builtin.include_role:
name: aws/aws_lambda
vars:
aws_lambda:
name: "{{ aws_backup_validation.name }}_{{ item }}"
description: "{{ aws_backup_validation.description }}"
timeout: "{{ aws_backup_validation.timeout }}"
role: "{{ aws_iam_role._result['LambdaBackupRestoreRole'] }}"
runtime: "{{ aws_backup_validation.runtime }}"
function_file: "{{ lookup('template', item + '_validation.py.j2') }}"
s3_bucket: "ce-{{ _aws_profile }}-lambda-functions"
tags:
Name: "{{ item }}_backup_validation"
loop: "{{ aws_backup_validation.resources }}"

- name: Sleep for 10 seconds for IAM before Lambda creation
ansible.builtin.wait_for:
timeout: 10
#- name: Remove variables containing "-".
# ansible.builtin.set_fact:
# aws_lambda: "{{ aws_lambda | ansible.utils.remove_keys(target=['response_metadata', 'function_file']) }}"

- name: Create an IAM Managed Policy for passing roles and setup IAM role.
ansible.builtin.include_role:
name: aws/aws_iam_role
vars:
aws_iam_role:
name: AWSBackupDefaultServiceRole
aws_profile: "{{ _aws_profile }}"
inline_policies:
name: "PassRole"
resource: "*"
action: "iam:PassRole"
policy_document: "{{ lookup('file', 'pass_role_backup.j2') }}"
managed_policies:
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores

# TODO: Not all clients have verified identity
#- name: Get verified domain.
# ansible.builtin.include_tasks: get_valid_email.yml

- name: Clean and set python functions
block:
- name: Create S3 bucket for lambda functions
amazon.aws.s3_bucket:
name: "{{ aws_backup_validation.s3_bucket }}"
region: "{{ _aws_region }}"
state: present

- name: Check and clean any previous backup validation files
ansible.builtin.file:
path: "{{ _ce_provision_build_dir }}/{{ item }}_validation.py"
state: absent
loop: "{{ aws_backup_validation.resources }}"

- name: Check and clean any previous validation report files
ansible.builtin.file:
path: "{{ _ce_provision_build_dir }}/validation_report.py"
state: absent

- name: Write Lambda functions
ansible.builtin.template:
src: "{{ item }}_validation.py.j2"
dest: "{{ _ce_provision_build_dir }}/{{ item }}_validation.py"
loop: "{{ aws_backup_validation.resources }}"

- name: Get info about newly created restore testing plan.
ansible.builtin.command: >
aws backup list-restore-testing-plans --region {{ _aws_region }}
register: _testing_plans

- name: Print return information from the previous task
ansible.builtin.debug:
var: _testing_plans

- name: Write validation report functions
ansible.builtin.template:
src: "validation_report.j2"
dest: "{{ _ce_provision_build_dir }}/validation_report.py"

- name: Create a zip archive of Lambda functions
community.general.archive:
path: "{{ _ce_provision_build_dir }}/{{ item }}_validation.py"
dest: "{{ _ce_provision_build_dir }}/{{ item }}_validation.zip"
format: zip
loop: "{{ aws_backup_validation.resources }}"

- name: Create a zip archive of validation report
community.general.archive:
path: "{{ _ce_provision_build_dir }}/validation_report.py"
dest: "{{ _ce_provision_build_dir }}/validation_report.zip"
format: zip

- name: Place backup validation functions in S3 bucket
amazon.aws.s3_object:
bucket: "{{ aws_backup_validation.s3_bucket }}"
object: "lambda-functions/{{ item }}_validation.zip"
src: "{{ _ce_provision_build_dir }}/{{ item }}_validation.zip"
mode: put
loop: "{{ aws_backup_validation.resources }}"

- name: Place report function in S3 bucket
amazon.aws.s3_object:
bucket: "{{ aws_backup_validation.s3_bucket }}"
object: "lambda-functions/validation_report.zip"
src: "{{ _ce_provision_build_dir }}/validation_report.zip"
mode: put
loop: "{{ aws_backup_validation.resources }}"

- name: Create Lambda functions
amazon.aws.lambda:
name: "{{ aws_backup_validation.name }}_{{ item }}"
description: "{{ aws_backup_validation.description }}"
region: "{{ _aws_region }}"
timeout: "{{ aws_backup_validation.timeout }}"
s3_bucket: "{{ aws_backup_validation.s3_bucket }}"
s3_key: "lambda-functions/{{ item }}_validation.zip"
state: present
runtime: "{{ aws_backup_validation.runtime }}"
role: "{{ _created_iam_lambda_role.iam_role.arn }}"
handler: "{{ item }}_validation.{{ aws_backup_validation.handler }}"
tags:
Name: "{{ item }}_backup_validation"
register: _lambda_functions
loop: "{{ aws_backup_validation.resources }}"

- name: Create validation report functions
amazon.aws.lambda:
name: "validation_report"
description: "{{ aws_backup_validation.description }}"
region: "{{ _aws_region }}"
timeout: 30
s3_bucket: "{{ aws_backup_validation.s3_bucket }}"
s3_key: "lambda-functions/validation_report.zip"
state: present
runtime: "{{ aws_backup_validation.runtime }}"
role: "{{ _created_iam_lambda_role.iam_role.arn }}"
handler: "validation_report.{{ aws_backup_validation.handler }}"
register: _validation_report

- name: Remove non UTF-8 item
- name: Get info about newly created restore testing plan.
ansible.builtin.command: >
aws backup list-restore-testing-plans --region {{ _aws_region }}
register: _testing_plans

- name: Create validation report function.
ansible.builtin.include_role:
name: aws/aws_lambda
vars:
aws_lambda:
name: "validation_report"
description: "{{ aws_backup_validation.description }}"
timeout: "30"
role: "{{ aws_iam_role._result['LambdaBackupRestoreRole'] }}"
runtime: "{{ aws_backup_validation.runtime }}"
function_file: "{{ lookup('template', 'validation_report.py.j2') }}"
s3_bucket: "ce-{{ _aws_profile }}-lambda-functions"
tags:
Name: "validation_report"

- name: Get account ID for ARN.
ansible.builtin.command: >-
aws sts get-caller-identity
--query Account
--output text
register: _acc_id

- name: Setting previous command output into variable.
ansible.builtin.set_fact:
_lambda_functions: "{{ _lambda_functions | ansible.utils.remove_keys(target=['ZipFile', 'location', 'item.invocation']) }}"
_validation_report: "{{ _validation_report | ansible.utils.remove_keys(target=['ZipFile', 'location', 'item.invocation']) }}"
_acc_id: "{{ _acc_id.stdout | from_json }}"

- name: Create EventBridge for validations
- name: Create EventBridge for validation functions.
amazon.aws.cloudwatchevent_rule:
name: "{{ item.configuration.function_name }}"
description: "{{ item.configuration.description }}"
name: "RestoreValidation_{{ item }}"
description: "{{ aws_backup_validation.description }}"
state: present
region: "{{ _aws_region }}"
event_pattern: '{ "source": ["aws.backup"], "detail-type": ["Restore Job State Change"], "detail": { "resourceType": ["{{ item.item }}"], "status": ["COMPLETED"] } }'
event_pattern: '{ "source": ["aws.backup"], "detail-type": ["Restore Job State Change"], "detail": { "resourceType": ["{{ item }}"], "status": ["COMPLETED"] } }'
targets:
- id: "{{ item.configuration.function_name }}"
arn: "{{ (item.configuration.function_arn.split(':') | map('trim'))[:-1] | join(':') }}" # Remove the version number from ARN
- id: "RestoreValidation_{{ item }}"
arn: "arn:aws:lambda:{{ _aws_region }}:{{ _acc_id }}:function:RestoreValidation_{{ item }}"
loop: "{{ aws_backup_validation.resources }}"
register: _event_bridges
loop: "{{ _lambda_functions.results }}"

- name: Create schedule for validation reports
amazon.aws.cloudwatchevent_rule:
Expand All @@ -166,7 +106,7 @@
region: "{{ _aws_region }}"
targets:
- id: validation_report
arn: "{{ (_validation_report.configuration.function_arn.split(':') | map('trim'))[:-1] | join(':') }}" # Remove the version number from ARN
arn: "{{ (aws_lambda._result['validation_report'].configuration.function_arn.split(':') | map('trim'))[:-1] | join(':') }}" # Remove the version number from ARN
register: _validation_event

- name: Generate unique string
Expand All @@ -176,8 +116,8 @@
- name: Update Lambda policy
amazon.aws.lambda_policy:
state: present
function_name: "{{ item.item.configuration.function_name }}"
statement_id: "{{ item.item.configuration.function_name }}_{{ _rand_str }}"
function_name: "{{ item.rule.name }}"
statement_id: "{{ item.rule.name }}_{{ _rand_str }}"
action: lambda:InvokeFunction
principal: events.amazonaws.com
source_arn: "{{ item.rule.arn }}"
Expand All @@ -188,7 +128,7 @@
amazon.aws.lambda_policy:
state: present
function_name: "validation_report"
statement_id: "{{ _validation_report.configuration.function_name }}_{{ _rand_str }}"
statement_id: "validation_report_{{ _rand_str }}"
action: lambda:InvokeFunction
principal: events.amazonaws.com
source_arn: "{{ _validation_event.rule.arn }}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,9 @@ failed_job = backup_cli.list_restore_jobs(
{% endfor %}

if len(failed_jobs) > 0:
mail_title = "Failed!"
mail_title = "🔴 Failed!"
else:
mail_title = "Success!"
mail_title = "🟢 Success!"
print("Successful restore jobs:")
print(completed_jobs)

Expand Down
4 changes: 4 additions & 0 deletions roles/aws/aws_iam_role/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ aws_iam_role:
aws_profile: "{{ _aws_profile }}"
# Pass either names or ARNs for the role.
managed_policies: []
inline_policies:
name: "example_inline_polcy" # Name of inline policy
resource: "*"
action: []
# Which document policy to apply.
# Current options are 'ec2', 'ecs' or 'backup'
policy_document: ec2
Expand Down
39 changes: 36 additions & 3 deletions roles/aws/aws_iam_role/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,42 @@
- name: Create an IAM Managed Policy if defined.
amazon.aws.iam_managed_policy:
policy_name: "inline_{{ aws_iam_role.name }}_policy"
policy:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action: "{{ aws_iam_role.inline_policies.action }}"
Resource: "{{ aws_iam_role.inline_policies.resource }}"
state: present
register: _inline_iam_policy
when: inline_policies.action is defined and inline_policies.action > 0

- name: Join managed and inline policy.
ansible.builtin.set_fact:
_combined_policies: "{{ aws_iam_role.managed_policies + [_inline_iam_policy.arn] }}"
when: inline_policies.action is defined and inline_policies.action > 0

- name: Create combined var if inline policy is not defined or empty.
ansible.builtin.set_fact:
_combined_policies: "{{ aws_iam_role.managed_policies }}"
when: inline_policies.action is not defined or inline_policies.action == 0

- name: Create assume role policy document if predefined string is passed.
ansible.builtin.set_fact:
_assume_role_policy: "{{ lookup('file', aws_iam_role.policy_document + '_document_policy.json') }}"
when: aws_iam_role.policy_document | type_debug == 'str'

- name: Create assume role policy document if template is provided.
ansible.builtin.set_fact:
_assume_role_policy: "{{ aws_iam_role.policy_document }}"
when: aws_iam_role.policy_document | type_debug != 'str'

- name: Create an IAM role.
amazon.aws.iam_role:
profile: "{{ aws_iam_role.aws_profile }}"
name: "{{ aws_iam_role.name }}"
assume_role_policy_document: "{{ lookup('file', aws_iam_role.policy_document + '_document_policy.json') }}"
managed_policies: "{{ aws_iam_role.managed_policies }}"
assume_role_policy_document: "{{ _assume_role_policy }}"
managed_policies: "{{ _combined_policies }}"
purge_policies: "{{ aws_iam_role.purge_policies }}"
tags: "{{ aws_iam_role.tags }}"
create_instance_profile: "{% if aws_iam_role.policy_document == 'ec2' %}true{% else %}false{% endif %}"
Expand All @@ -12,4 +45,4 @@

- name: Register aws_iam_role results.
ansible.builtin.set_fact:
aws_iam_role: "{{ aws_iam_role | combine({'_result': {aws_iam_role.name: _aws_iam_role_result}}) }}"
aws_iam_role: "{{ aws_iam_role | combine({'_result': {aws_iam_role.name: _aws_iam_role_result}}, recursive=True) }}"
10 changes: 10 additions & 0 deletions roles/aws/aws_lambda/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
aws_lambda:
name: "lambda_function_name"
description: "Description for AWS Lambda function"
timeout: "20" # Maximum number of seconds before function times out
handler: "lambda_handler" # Name of main function
s3_bucket: "ce-{{ _aws_profile }}-lambda-functions"
function_file: "" # template to pass in S3 bucket
runtime: "python3.12"
role: ""
tags: []
Loading