GithubHelp home page GithubHelp logo

prm239 / ansible-ad-lab Goto Github PK

View Code? Open in Web Editor NEW

This project forked from blink-zero/ansible-ad-lab

0.0 1.0 0.0 94 KB

Ansible playbook to automate the creation and configuration of an Active Directory home and/or work lab environment using VMware.

License: MIT License

Shell 12.19% PowerShell 31.99% Jinja 55.82%

ansible-ad-lab's Introduction

Ansible AD (Active Directory) Lab

GitHub release (latest by date) GitHub Release Date GitHub Release Date

Ansible playbook to automate the creation and configuration of an Active Directory home and/or work lab environment using VMware.

Note: this project heavily relies on the templates created by vmware-samples/packer-examples-for-vsphere.

Table Of Contents

  1. Description
  2. Playbook Structure
  3. Getting Started
  4. Dependancies
  5. Running The Playbook
  6. Examples
  7. Help
  8. Version History
  9. Acknowledgements

Description

The build consists of an Active Directory Domain Controller and both Windows and Linux machines. The code streamlines the provisioning and configuration process, enabling users to set up a home or work lab environment quickly and easily. The project is designed for those who want to learn about Active Directory, or for those who need to test and develop solutions for a multi-platform environments.

The code can be easily modified to suit specific lab environment by editing the vars/*.yml files after running config.sh.

Playbook Structure

ansible-ad-lab
├── scripts
│   └── powershell
|     ├── ad_scripts
|     └── general_scripts
├── tasks
│   ├── vmware_create_ad
|   | └── main.yml
|   ├── vmware_create_linux_clients
|   | └── main.yml
|   ├── vmware_create_linux_servers
|   | └── main.yml
|   ├── vmware_create_windows_clients
|   | └── main.yml
|   └── vmware_create_windows_servers
|     └── main.yml
├── templates
|   └── *.j2
├── vars
|   ├── ad_vars.yml.example
|   ├── common_vars.yml.example
|   └── vsphere_vars.yml.example
├── inventory_custom.ini.example
├── main.yml
├── requirements.txt
├── config.sh
└── README.md
  • scripts/: directory containing scripts and other files required by the playbook.
  • tasks/: directory containing tasks that will be run by the playbook.
  • templates/: directory containing files for ubuntu realm join.
  • vars/: directory for yml variable files.
  • inventory_custom.ini.example: example inventory of machines to create.
  • main.yml: main playbook in root folder.
  • requirements.txt: dependancies for playbook to run.
  • readme.md: instructions and links related to this playbook.
  • config.sh: renames example vars files and inventory file.

Getting Started

Dependencies

Running the Playbook

On your Ansible Control Node:

git clone https://github.com/blink-zero/ansible-ad-lab.git
  • Change dir to cloned dir
cd ansible-ad-lab
pip install -r requirements.txt
  • Run config.sh to rename example var files and inventory file
chmod +x config.sh
./config.sh
ansible-playbook main.yml -i inventory_custom.ini
  • Enter in passwords when prompted

Examples

Executing (Example)

ansible-playbook main.yml -i inventory_custom.ini

vars/ad_vars.yml Configuration (Example)

---
ad_domain: "lab.example.local"
ad_new_domain_admin_password: 'R@in!$aG00dThing.'
ad_ntp_servers: "0.us.pool.ntp.org,1.us.pool.ntp.org,2.us.pool.ntp.org,3.us.pool.ntp.org"
ad_centos_ou_membership: OU=Computers,DC=lab,DC=example,DC=local
ad_ubu_ou_membership: CN=Computers,DC=lab,DC=example,DC=local
ad_recovery_password: 'R@in!$aG00dThing.'
ad_reverse_dns_zone: "172.16.0.0/24"
ad_upstream_dns_1: 8.8.8.8
ad_upstream_dns_2: 8.8.4.4

vars/common_vars.yml Configuration (Example)

---
common_dns2: "172.16.0.1"
common_domain_admin: '{{ad_domain}}\administrator'
common_domain_admin_simple_name: 'administrator'
common_gateway: "172.16.0.1"
common_lin_disk_size: 40
common_local_admin: '.\administrator'
common_lin_local_admin: 'administrator'
common_netmask: "255.255.255.0"
common_timezone: "255"
common_vm_hw_scsi: "paravirtual"
common_vm_net_name: "VM Network"
common_vm_net_type: "vmxnet3"
common_vm_state: "poweredon"
common_win_disk_size: 100

vars/vsphere_vars.yml Configuration (Example)

---
vsphere_esxi_host: "192.168.0.21"
vsphere_vcenter_datacenter: "Datacenter"
vsphere_vcenter_hostname: "vc.example.local"
vsphere_vcenter_username: "[email protected]"
vsphere_vcenter_validate_certs: false
vsphere_vm_disk_datastore: "Datastore_name"
vsphere_vm_folder: "Lab"
vsphere_vm_type: "thin"

inventory_custom.ini Configuration (Example) - Full List of Tested OS below

Note: Comment out lines with ';' to disable building that machine.

[dc]
172.16.0.20 inventory_guest_hostname='2022DC01' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-server-2022-datacenter-dexp-v23.01' inventory_vm_guestid='windows9Server64Guest'
[win_server]
172.16.0.50 inventory_guest_hostname='2022SERVER01' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-server-2022-datacenter-dexp-v23.01' inventory_vm_guestid='windows9Server64Guest'
172.16.0.51 inventory_guest_hostname='2022SERVER02' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-server-2022-datacenter-core-v23.01' inventory_vm_guestid='windows9Server64Guest'
172.16.0.52 inventory_guest_hostname='2019SERVER01' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-server-2019-datacenter-dexp-v23.01' inventory_vm_guestid='windows9Server64Guest'
172.16.0.53 inventory_guest_hostname='2019SERVER02' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-server-2019-datacenter-core-v23.01' inventory_vm_guestid='windows9Server64Guest'
[win_client]
172.16.0.101 inventory_guest_hostname='W10CLIENT01' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-desktop-10-enterprise-v23.01' inventory_vm_guestid='windows9Server64Guest'
172.16.0.102 inventory_guest_hostname='W10CLIENT02' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-desktop-10-enterprise-v23.01' inventory_vm_guestid='windows9Server64Guest'
172.16.0.103 inventory_guest_hostname='W10CLIENT03' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-desktop-10-enterprise-v23.01' inventory_vm_guestid='windows9Server64Guest'
172.16.0.104 inventory_guest_hostname='W10CLIENT04' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='windows-desktop-10-enterprise-v23.01' inventory_vm_guestid='windows9Server64Guest'
[lin_server]
172.16.0.61 inventory_guest_hostname='CO7SERVER01' inventory_guest_vcpu='1' inventory_guest_vram='2048' inventory_template_name='linux-centos-7-v23.01' inventory_vm_guestid='centos64Guest'
172.16.0.62 inventory_guest_hostname='UBUSERVER01' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='linux-ubuntu-18.04-lts-v23.01' inventory_vm_guestid='ubuntu64Guest'
172.16.0.63 inventory_guest_hostname='UBUSERVER02' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='linux-ubuntu-20.04-lts-v23.01' inventory_vm_guestid='ubuntu64Guest'
172.16.0.64 inventory_guest_hostname='UBUSERVER03' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='linux-ubuntu-22.04-lts-v23.01' inventory_vm_guestid='ubuntu64Guest'
[lin_client]
172.16.0.201 inventory_guest_hostname='CO7CLIENT01' inventory_guest_vcpu='1' inventory_guest_vram='2048' inventory_template_name='linux-centos-7-v23.01' inventory_vm_guestid='centos64Guest'
172.16.0.202 inventory_guest_hostname='UBUCLIENT01' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='linux-ubuntu-18.04-lts-v23.01' inventory_vm_guestid='ubuntu64Guest'
172.16.0.203 inventory_guest_hostname='UBUCLIENT02' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='linux-ubuntu-20.04-lts-v23.01' inventory_vm_guestid='ubuntu64Guest'
172.16.0.204 inventory_guest_hostname='UBUCLIENT03' inventory_guest_vcpu='2' inventory_guest_vram='4096' inventory_template_name='linux-ubuntu-22.04-lts-v23.01' inventory_vm_guestid='ubuntu64Guest'

Help

How do I create the 'Golden Images' VMware Template?

How do I install Ansible?

  • Please refer to the Ansible documentation for install guidance: Ansible Install

Why is Ansible saying X module is missing?

  • Run pip install -r requirements.txt before running playbook

Version History

v1.2.1 (Latest)

  • Minor readme updates

v1.2.0

  • Added GUI to Linux Client machines
    • Support for Ubuntu 18.04, 20.04, 22.04 and CentOS 7
  • Added Linux Realm join
    • Support for Ubuntu 18.04, 20.04, 22.04 and CentOS 7
  • Powershell script folders and files deleted after use
  • Various code clean up

v1.1.0

  • Cleaned up variables
  • Rebuilt vars files (common, vsphere, ad)
  • Added Powershell scripts for Client/Server Applications
  • Split inventory into clients/servers
  • config.sh added for renaming example var files

v1.0.0

  • Initial Release

Acknowledgments

Inspiration, code snippets, etc.

ansible-ad-lab's People

Contributors

blink-zero avatar

Watchers

 avatar

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.