This commit is contained in:
willtome
2023-03-13 10:45:24 -04:00
parent b6896b3617
commit cb53962c2c
7 changed files with 216 additions and 439 deletions

View File

@@ -14,19 +14,6 @@ controller_execution_environments:
- name: Cloud Services Execution Environment - name: Cloud Services Execution Environment
image: quay.io/scottharwell/cloud-ee:latest image: quay.io/scottharwell/cloud-ee:latest
controller_projects:
- name: Ansible Cloud Content Lab - AWS
organization: Default
scm_type: git
wait: yes
#scm_url: https://github.com/ansible-content-lab/aws.infrastructure_config_demos.git
scm_url: https://github.com/willtome/aws.infrastructure_config_demos.git
default_environment: Cloud Services Execution Environment
controller_execution_environments:
- name: Cloud Services Execution Environment
image: quay.io/scottharwell/cloud-ee:latest
controller_projects: controller_projects:
- name: Ansible Cloud Content Lab - AWS - name: Ansible Cloud Content Lab - AWS
organization: Default organization: Default
@@ -99,22 +86,12 @@ controller_groups:
variables: variables:
ansible_user: ec2-user ansible_user: ec2-user
controller_groups:
- name: cloud_aws
inventory: Workshop Inventory
variables:
ansible_user: ec2-user
controller_templates: controller_templates:
- name: Cloud / AWS / Create Peer Infrastructure - name: Cloud / AWS / Create Peer Infrastructure
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
<<<<<<< HEAD
- AWS - AWS
=======
- AWS
>>>>>>> main
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_peer_network.yml playbook: playbook_create_peer_network.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -130,11 +107,7 @@ controller_templates:
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
<<<<<<< HEAD
- AWS - AWS
=======
- AWS
>>>>>>> main
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_delete_peer_network.yml playbook: playbook_delete_peer_network.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -148,11 +121,7 @@ controller_templates:
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
<<<<<<< HEAD
- AWS - AWS
=======
- AWS
>>>>>>> main
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_transit_network.yml playbook: playbook_create_transit_network.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -168,11 +137,7 @@ controller_templates:
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
<<<<<<< HEAD
- AWS - AWS
=======
- AWS
>>>>>>> main
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_delete_transit_network.yml playbook: playbook_delete_transit_network.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -182,20 +147,11 @@ controller_templates:
extra_vars: extra_vars:
aws_region: us-east-1 aws_region: us-east-1
<<<<<<< HEAD
- name: Cloud / Create Infra
job_type: run
organization: Default
credentials:
- AWS
# - Azure
=======
- name: Cloud / AWS / Create VPC - name: Cloud / AWS / Create VPC
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
- AWS - AWS
>>>>>>> main
project: Ansible official demo project project: Ansible official demo project
playbook: cloud/create_vpc.yml playbook: cloud/create_vpc.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -213,29 +169,13 @@ controller_templates:
type: text type: text
variable: aws_owner_tag variable: aws_owner_tag
required: true required: true
<<<<<<< HEAD
choices:
- aws
# - azure
- question_name: AWS Public Key (only required for aws provider)
type: textarea
required: false
variable: aws_public_key
=======
>>>>>>> main
- name: Cloud / AWS / Create VM - name: Cloud / AWS / Create VM
job_type: run job_type: run
organization: Default organization: Default
<<<<<<< HEAD
credentials: credentials:
- AWS - AWS
- Workshop Credential - Workshop Credential
=======
credentials:
- AWS
- Workshop Credential
>>>>>>> main
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_vm.yml playbook: playbook_create_vm.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -285,33 +225,19 @@ controller_templates:
type: text type: text
variable: aws_vpc_subnet_name variable: aws_vpc_subnet_name
required: true required: true
<<<<<<< HEAD
default: dmz-subnet
=======
default: aws-test-subnet default: aws-test-subnet
>>>>>>> main
- question_name: Security Group - question_name: Security Group
type: text type: text
variable: aws_securitygroup_name variable: aws_securitygroup_name
required: true required: true
<<<<<<< HEAD
default: dmz-sg
=======
default: aws-test-sg default: aws-test-sg
>>>>>>> main
- name: Cloud / AWS / Delete VM - name: Cloud / AWS / Delete VM
job_type: run job_type: run
organization: Default organization: Default
<<<<<<< HEAD
credentials: credentials:
- AWS - AWS
- Workshop Credential - Workshop Credential
=======
credentials:
- AWS
- Workshop Credential
>>>>>>> main
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_delete_inventory_vm.yml playbook: playbook_delete_inventory_vm.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -328,7 +254,6 @@ controller_templates:
- question_name: Name or Pattern - question_name: Name or Pattern
type: text type: text
variable: _hosts variable: _hosts
<<<<<<< HEAD
required: true required: true
- name: Cloud / AWS / VPC Report - name: Cloud / AWS / VPC Report
@@ -339,17 +264,6 @@ controller_templates:
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_reports.yml playbook: playbook_create_reports.yml
inventory: Workshop Inventory inventory: Workshop Inventory
=======
required: true
- name: Cloud / AWS / VPC Report
job_type: run
organization: Default
credentials:
- AWS
project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_reports.yml
inventory: Workshop Inventory
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
@@ -361,7 +275,7 @@ controller_templates:
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
- AWS - AWS
project: Ansible Cloud Content Lab - AWS project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_reports.yml playbook: playbook_create_reports.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -375,8 +289,8 @@ controller_templates:
- name: Cloud / AWS / Create Keypair - name: Cloud / AWS / Create Keypair
job_type: run job_type: run
organization: Default organization: Default
credentials: credentials:
- AWS - AWS
project: Ansible official demo project project: Ansible official demo project
playbook: cloud/aws_key.yml playbook: cloud/aws_key.yml
inventory: Workshop Inventory inventory: Workshop Inventory
@@ -408,59 +322,16 @@ controller_workflows:
- name: Deploy Cloud Stack in AWS - name: Deploy Cloud Stack in AWS
description: A workflow to deploy a cloud stack description: A workflow to deploy a cloud stack
organization: Default organization: Default
>>>>>>> main
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
extra_vars: extra_vars:
<<<<<<< HEAD
aws_region: us-east-1
aws_report: vpc
- name: Cloud / AWS / Tags Report
job_type: run
organization: Default
credentials:
- AWS
project: Ansible Cloud Content Lab - AWS
playbook: playbook_create_reports.yml
inventory: Workshop Inventory
notification_templates_started: Telemetry
notification_templates_success: Telemetry
notification_templates_error: Telemetry
extra_vars:
aws_region: us-east-1
aws_report: tags
- name: Cloud / AWS / Create Keypair
job_type: run
organization: Default
credentials:
- AWS
project: Ansible official demo project
playbook: cloud/aws_key.yml
inventory: Workshop Inventory
notification_templates_started: Telemetry
notification_templates_success: Telemetry
notification_templates_error: Telemetry
survey_enabled: true
extra_vars:
aws_region: us-east-1
=======
vm_deployment: cloud_stack vm_deployment: cloud_stack
survey_enabled: true survey_enabled: true
>>>>>>> main
survey: survey:
name: '' name: ''
description: '' description: ''
spec: spec:
<<<<<<< HEAD
- question_name: Keypair Name
type: text
variable: aws_key_name
required: true
default: aws-test-key
=======
- question_name: Owner - question_name: Owner
type: text type: text
variable: aws_owner_tag variable: aws_owner_tag
@@ -473,17 +344,10 @@ controller_workflows:
- Dev - Dev
- QA - QA
- Prod - Prod
>>>>>>> main
- question_name: Keypair Public Key - question_name: Keypair Public Key
type: textarea type: textarea
variable: aws_public_key variable: aws_public_key
required: true required: true
<<<<<<< HEAD
- question_name: Owner
type: text
variable: aws_keypair_owner
required: true
=======
- question_name: Email - question_name: Email
type: text type: text
variable: email variable: email
@@ -558,4 +422,3 @@ controller_workflows:
feedback: Failed to create AWS instance feedback: Failed to create AWS instance
- identifier: Tag Report - identifier: Tag Report
unified_job_template: Cloud / AWS / Tags Report unified_job_template: Cloud / AWS / Tags Report
>>>>>>> main

View File

@@ -1,3 +0,0 @@
galaxy_info:
author: morenod
description: Role created to configure a client to execute openscap policies based on the information obtained from a Red Hat Satellite/Foreman Host.

View File

@@ -1,6 +1,5 @@
--- ---
- name: Install openscap client packages - name: Install openscap client packages
<<<<<<< HEAD
ansible.builtin.yum: ansible.builtin.yum:
name: name:
- openscap-scanner - openscap-scanner
@@ -38,51 +37,11 @@
force_basic_auth: false force_basic_auth: false
body_format: json body_format: json
validate_certs: false validate_certs: false
=======
yum:
name:
- openscap-scanner
- rubygem-foreman_scap_client
state: present
- name: Get Policy parameters
uri:
url: "{{ foreman_server_url }}/api/v2/compliance/policies"
method: GET
user: "{{ foreman_username }}"
password: "{{ foreman_password }}"
force_basic_auth: yes
body_format: json
validate_certs: False
register: policies
no_log: "{{ foreman_operations_scap_client_secure_logging }}"
- name: Build policy {{ policy_name }} parameters
set_fact:
policy: "{{ policy | default([]) }} + {{ [item] }}"
loop: "{{policies.json.results}}"
when: item.name in policy_name or policy_name == 'all'
- name: Fail if no policy found with required name
fail:
when: policy is not defined
- name: Get scap content information
uri:
url: "{{ foreman_server_url }}/api/v2/compliance/scap_contents/{{item.scap_content_id}}"
method: GET
user: "{{ foreman_username }}"
password: "{{ foreman_password }}"
force_basic_auth: yes
body_format: json
validate_certs: False
>>>>>>> main
register: scapcontents register: scapcontents
loop: "{{ policy }}" loop: "{{ policy }}"
no_log: "{{ foreman_operations_scap_client_secure_logging }}" no_log: "{{ foreman_operations_scap_client_secure_logging }}"
- name: Get tailoring content information - name: Get tailoring content information
<<<<<<< HEAD
ansible.builtin.uri: ansible.builtin.uri:
url: "{{ foreman_server_url }}/api/v2/compliance/tailoring_files/{{ item.tailoring_file_id }}" url: "{{ foreman_server_url }}/api/v2/compliance/tailoring_files/{{ item.tailoring_file_id }}"
method: GET method: GET
@@ -91,23 +50,12 @@
force_basic_auth: false force_basic_auth: false
body_format: json body_format: json
validate_certs: false validate_certs: false
=======
uri:
url: "{{ foreman_server_url }}/api/v2/compliance/tailoring_files/{{item.tailoring_file_id}}"
method: GET
user: "{{ foreman_username }}"
password: "{{ foreman_password }}"
force_basic_auth: yes
body_format: json
validate_certs: False
>>>>>>> main
register: tailoringfiles register: tailoringfiles
when: item.tailoring_file_id | int > 0 | d(False) when: item.tailoring_file_id | int > 0 | d(False)
loop: "{{ policy }}" loop: "{{ policy }}"
no_log: "{{ foreman_operations_scap_client_secure_logging }}" no_log: "{{ foreman_operations_scap_client_secure_logging }}"
- name: Build scap content parameters - name: Build scap content parameters
<<<<<<< HEAD
ansible.builtin.set_fact: ansible.builtin.set_fact:
scap_content: "{{ scap_content | default({}) | combine({item.json.id: item.json}) }}" scap_content: "{{ scap_content | default({}) | combine({item.json.id: item.json}) }}"
loop: "{{ scapcontents.results }}" loop: "{{ scapcontents.results }}"
@@ -115,20 +63,10 @@
- name: Build tailoring content parameters - name: Build tailoring content parameters
ansible.builtin.set_fact: ansible.builtin.set_fact:
tailoring_files: "{{ tailoring_files | default({}) | combine({item.json.id: item.json}) }}" tailoring_files: "{{ tailoring_files | default({}) | combine({item.json.id: item.json}) }}"
=======
set_fact:
scap_content: "{{ scap_content | default({}) | combine({item.json.id: item.json }) }}"
loop: "{{ scapcontents.results }}"
- name: Build tailoring content parameters
set_fact:
tailoring_files: "{{ tailoring_files | default({}) | combine({item.json.id: item.json }) }}"
>>>>>>> main
when: item.json is defined when: item.json is defined
loop: "{{ tailoringfiles.results }}" loop: "{{ tailoringfiles.results }}"
- name: Apply openscap client configuration template - name: Apply openscap client configuration template
<<<<<<< HEAD
ansible.builtin.template: ansible.builtin.template:
src: openscap_client_config.yaml.j2 src: openscap_client_config.yaml.j2
dest: /etc/foreman_scap_client/config.yaml dest: /etc/foreman_scap_client/config.yaml
@@ -145,21 +83,3 @@
# hour: "{{crontab_hour}}" # hour: "{{crontab_hour}}"
# minute: "{{crontab_minute}}" # minute: "{{crontab_minute}}"
# user: root # user: root
=======
template:
src: openscap_client_config.yaml.j2
dest: /etc/foreman_scap_client/config.yaml
mode: 0644
owner: root
group: root
#- name: Configure execution crontab
# cron:
# name: "Openscap Execution"
# cron_file: 'foreman_openscap_client'
# job: '/usr/bin/foreman_scap_client {{policy.id}} > /dev/null'
# weekday: "{{crontab_weekdays}}"
# hour: "{{crontab_hour}}"
# minute: "{{crontab_minute}}"
# user: root
>>>>>>> main

View File

@@ -51,149 +51,148 @@ controller_credentials:
password: ansible123! password: ansible123!
controller_inventory_sources: controller_inventory_sources:
- name: Satellite Inventory - name: Satellite Inventory
inventory: Workshop Inventory inventory: Workshop Inventory
credential: Satellite Inventory credential: Satellite Inventory
source: satellite6 source: satellite6
update_on_launch: false update_on_launch: false
execution_environment: Control Plane Execution Environment execution_environment: Control Plane Execution Environment
overwrite: true overwrite: true
source_vars: source_vars:
hostnames: hostnames:
- name.split('.')[0] - name.split('.')[0]
groups: groups:
patch_bugs: foreman_content_attributes.errata_counts.bugfix patch_bugs: foreman_content_attributes.errata_counts.bugfix
patch_enhancements: foreman_content_attributes.errata_counts.enhancement patch_enhancements: foreman_content_attributes.errata_counts.enhancement
patch_security: foreman_content_attributes.errata_counts.security patch_security: foreman_content_attributes.errata_counts.security
keyed_groups: keyed_groups:
- prefix: env - prefix: env
key: foreman_content_attributes.lifecycle_environment_name key: foreman_content_attributes.lifecycle_environment_name
- prefix: cv - prefix: cv
key: foreman_content_attributes.content_view_name key: foreman_content_attributes.content_view_name
- prefix: os - prefix: os
key: foreman_operatingsystem_name key: foreman_operatingsystem_name
- prefix: scap - prefix: scap
key: foreman_compliance_status_label key: foreman_compliance_status_label
validate_certs: false validate_certs: false
group_prefix: satellite_ group_prefix: satellite_
controller_templates: controller_templates:
- name: LINUX / Register with Satellite - name: LINUX / Register with Satellite
project: Ansible official demo project project: Ansible official demo project
playbook: satellite/server_register.yml playbook: satellite/server_register.yml
inventory: Workshop Inventory inventory: Workshop Inventory
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
credentials: credentials:
- Workshop Credential - Workshop Credential
- Satellite Credential - Satellite Credential
extra_vars: extra_vars:
org_id: "Default_Organization" org_id: "Default_Organization"
survey_enabled: true survey_enabled: true
survey: survey:
name: '' name: ''
description: '' description: ''
spec: spec:
- question_name: Server Name or Pattern - question_name: Server Name or Pattern
type: text type: text
variable: HOSTS variable: HOSTS
required: false required: false
- question_name: Choose Environment - question_name: Choose Environment
type: multiplechoice type: multiplechoice
variable: env variable: env
choices: choices:
- Dev - Dev
- QA - QA
- Prod - Prod
required: true required: true
- name: LINUX / Compliance Scan with Satellite - name: LINUX / Compliance Scan with Satellite
project: Ansible official demo project project: Ansible official demo project
playbook: satellite/server_openscap.yml playbook: satellite/server_openscap.yml
inventory: Workshop Inventory inventory: Workshop Inventory
execution_environment: Ansible Engine 2.9 execution environment execution_environment: Ansible Engine 2.9 execution environment
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
credentials: credentials:
- Satellite Credential - Satellite Credential
- Workshop Credential - Workshop Credential
extra_vars: extra_vars:
policy_scan: all policy_scan: all
survey_enabled: true survey_enabled: true
survey: survey:
name: '' name: ''
description: '' description: ''
spec: spec:
- question_name: Server Name or Pattern - question_name: Server Name or Pattern
type: text type: text
variable: HOSTS variable: HOSTS
required: false required: false
- name: SATELLITE / Publish Content View Version - name: SATELLITE / Publish Content View Version
project: Ansible official demo project project: Ansible official demo project
playbook: satellite/satellite_publish.yml playbook: satellite/satellite_publish.yml
inventory: Workshop Inventory inventory: Workshop Inventory
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
credentials: credentials:
- Satellite Credential - Satellite Credential
extra_vars: extra_vars:
env: Dev env: Dev
survey_enabled: true survey_enabled: true
survey: survey:
name: '' name: ''
description: '' description: ''
spec: spec:
- question_name: Select Content View - question_name: Select Content View
variable: content_view variable: content_view
type: multiplechoice type: multiplechoice
choices: "{{ satellite_content_views | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}" choices: "{{ satellite_content_views | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}"
required: true required: true
- name: SATELLITE / Promote Content View Version - name: SATELLITE / Promote Content View Version
project: Ansible official demo project project: Ansible official demo project
playbook: satellite/satellite_promote.yml playbook: satellite/satellite_promote.yml
inventory: Workshop Inventory inventory: Workshop Inventory
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
credentials: credentials:
- Satellite Credential - Satellite Credential
survey_enabled: true survey_enabled: true
survey: survey:
name: '' name: ''
description: '' description: ''
spec: spec:
- question_name: Select Content View - question_name: Select Content View
variable: content_view variable: content_view
type: multiplechoice type: multiplechoice
choices: "{{ satellite_content_views | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}" choices: "{{ satellite_content_views | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}"
required: true required: true
- question_name: Current Lifecycle Environment - question_name: Current Lifecycle Environment
variable: current_lifecycle_environment variable: current_lifecycle_environment
type: multiplechoice type: multiplechoice
choices: "{{ satellite_lifecycle_environments | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}" choices: "{{ satellite_lifecycle_environments | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}"
required: true required: true
- question_name: Next Lifecycle Environment - question_name: Next Lifecycle Environment
variable: lifecycle_environment variable: lifecycle_environment
type: multiplechoice type: multiplechoice
choices: "{{ satellite_lifecycle_environments | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}" choices: "{{ satellite_lifecycle_environments | selectattr('name', 'match', '^RHEL.*$') | map(attribute='name') | list}}"
required: true required: true
- name: SETUP / Satellite - name: SETUP / Satellite
project: Ansible official demo project project: Ansible official demo project
playbook: satellite/setup_satellite.yml playbook: satellite/setup_satellite.yml
inventory: Workshop Inventory inventory: Workshop Inventory
notification_templates_started: Telemetry notification_templates_started: Telemetry
notification_templates_success: Telemetry notification_templates_success: Telemetry
notification_templates_error: Telemetry notification_templates_error: Telemetry
credentials: credentials:
- Satellite Credential - Satellite Credential
controller_launch_jobs: controller_launch_jobs:
- name: SETUP - name: SETUP
wait: false wait: false
@@ -262,8 +261,6 @@ controller_workflows:
extra_data: extra_data:
feedback: Failed to apply updates to RHEL8_Dev feedback: Failed to apply updates to RHEL8_Dev
####################### #######################
### Satellite Vars ### ### Satellite Vars ###
###################### ######################

View File

@@ -4,47 +4,47 @@
gather_facts: false gather_facts: false
tasks: tasks:
- name: Set Local Admin Password - name: Set Local Admin Password
ansible.windows.win_user: ansible.windows.win_user:
name: Administrator name: Administrator
password: "{{ ansible_password }}" password: "{{ ansible_password }}"
- name: Create new domain in a new forest on the target host - name: Create new domain in a new forest on the target host
ansible.windows.win_domain: ansible.windows.win_domain:
dns_domain_name: ansible.local dns_domain_name: ansible.local
safe_mode_password: "{{ lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1) }}" safe_mode_password: "{{ lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1) }}"
register: new_forest register: new_forest
- name: Reboot the target host - name: Reboot the target host
ansible.windows.win_reboot: ansible.windows.win_reboot:
reboot_timeout: 3600 reboot_timeout: 3600
when: new_forest.reboot_required when: new_forest.reboot_required
- name: Wait up to 10min for AD web services to start - name: Wait up to 10min for AD web services to start
community.windows.win_wait_for_process: community.windows.win_wait_for_process:
process_name_exact: Microsoft.ActiveDirectory.WebServices process_name_exact: Microsoft.ActiveDirectory.WebServices
pre_wait_delay: 60 pre_wait_delay: 60
state: present state: present
timeout: 600 timeout: 600
sleep: 10 sleep: 10
remote_user: Administrator remote_user: Administrator
- name: Create some groups - name: Create some groups
community.windows.win_domain_group: community.windows.win_domain_group:
name: "{{ item.name }}" name: "{{ item.name }}"
scope: global scope: global
loop: loop:
- { name: "GroupA" } - { name: "GroupA" }
- { name: "GroupB" } - { name: "GroupB" }
- { name: "GroupC" } - { name: "GroupC" }
- name: Create some users - name: Create some users
community.windows.win_domain_user: community.windows.win_domain_user:
name: "{{ item.name }}" name: "{{ item.name }}"
groups: "{{ item.groups }}" groups: "{{ item.groups }}"
password: "{{ lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1) }}" password: "{{ lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1) }}"
update_password: on_create update_password: on_create
loop: loop:
- { name: "UserA", groups: "GroupA" } - { name: "UserA", groups: "GroupA" }
- { name: "UserB", groups: "GroupB" } - { name: "UserB", groups: "GroupB" }
- { name: "UserC", groups: "GroupC" } - { name: "UserC", groups: "GroupC" }

View File

@@ -4,36 +4,36 @@
gather_facts: false gather_facts: false
tasks: tasks:
- name: Setting host facts using complex arguments - name: Setting host facts using complex arguments
set_fact: ansible.builtin.set_fact:
temp_password: "{{ lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1) }}" temp_password: "{{ lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1) }}"
# Example result: ['&Qw2|E[-'] # Example result: ['&Qw2|E[-']
- name: Create new user - name: Create new user
community.windows.win_domain_user: community.windows.win_domain_user:
name: "{{ firstname }} {{ surname }}" name: "{{ firstname }} {{ surname }}"
firstname: "{{ firstname }}" firstname: "{{ firstname }}"
surname: "{{ surname }}" surname: "{{ surname }}"
sam_account_name: "{{ firstname[0] }}{{ surname }}" sam_account_name: "{{ firstname[0] }}{{ surname }}"
company: BobCo company: BobCo
password: "{{ temp_password }}" password: "{{ temp_password }}"
state: present state: present
groups: groups:
- "GroupA" - "GroupA"
- "GroupB" - "GroupB"
street: "{{ street }}" street: "{{ street }}"
city: "{{ city }}" city: "{{ city }}"
state_province: IN state_province: IN
postal_code: "{{ postal_code }}" postal_code: "{{ postal_code }}"
country: US country: US
attributes: attributes:
telephoneNumber: "{{ telephone_number }}" telephoneNumber: "{{ telephone_number }}"
register: new_user register: new_user
- name: Display User - name: Display User
ansible.builtin.debug: ansible.builtin.debug:
var: new_user var: new_user
- name: Show temp password - name: Show temp password
ansible.builtin.debug: ansible.builtin.debug:
var: temp_password var: temp_password

View File

@@ -6,12 +6,12 @@
ps_script: undef ps_script: undef
tasks: tasks:
- name: Run PowerShell - name: Run PowerShell
ansible.windows.win_powershell: ansible.windows.win_powershell:
script: | script: |
{{ ps_script }} {{ ps_script }}
register: ps_output register: ps_output
- name: Print output - name: Print output
ansible.builtin.debug: ansible.builtin.debug:
msg: "{{ ps_output.output }}" msg: "{{ ps_output.output }}"