- This assignment requires you to automate creation of an entire application environment on Azure.
- The environment consists of two VMs, details of which are enclosed below.
- All VMs are Windows VMs.
- Each VM needs to have specific disks attached to it, in addition to the C: D: E: drives.
Time Limit
- 3 calendar days (24 hours of work)
Tasks
Use Ansible to
- Create Azure Windows VMs as per the requirements.
- Create Azure Managed Disks as per the requirements.
- Attach Azure Managed Disks to the VMs.
- Create disk drives as per the requirements.
VM Requirements
- Each VM has specific number of Azure managed disks attached to it.
- Further, inside the VM, the disks are initialized and formatted with specific drive letters.
- For example,
sqldbvm1
has 3 Azure Managed Disks attached to it. And the 300 GB Azure disk will be visible inside the VM as "F" drive.
Purpose | VM Name | OS | Managed Disks |
---|---|---|---|
Application Server | webappvm1 |
Windows Server 2016 | 2 disks: "F" drive (100GB) named "data" "L" drive (100GB) named "logs" All Drives formatted as NTFS. |
Database Server | sqldbvm1 |
Windows Server 2016 | 3 disks: "F" drive (300GB) named "data" "L" drive (100 GB) named "logs" "B" drive (300GB) named "backup" All Drives formatted as NTFS. |
Toolstack Requirements
You would use the following toolstack
- Ansible - for overall automation
- Azure - cloud technology
- You may use Azure CLI if required but the bulk of automation should be achieved using Ansible and Ansible's Azure modules.
- You may use Azure's 30-day trial to achieve these objectives.
Ansible Requirements
- The following Ansible YAML variable has been created for your use.
- You need to declare the Ansible variable below while creating the Azure VMs and Azure Disks.
vms:
appvm:
name: webappvm1
disks:
- name: data
driveletter: F
size_gb: 100
- name: logs
driveletter: L
size_gb: 100
dbvm:
name: sqldbvm1
disks:
- name: data
driveletter: F
size_gb: 300
- name: logs
driveletter: L
size_gb: 100
- name: backup
driveletter: B
size_gb: 300
Other Requirements
- Configuration parameters must not be hard-coded, all values must be stored in variables.
- ❗ Do not store credentials in Version Control. If you do, your submission is disqualified.
- ❗ Do not open up Network Security Group rules to the open internet. Create rules such that only your IP address is allowed.
- Github Repository containing working code-base.
- README file in Github repository with the following:
- How to run the code
- What does the playbook do
- References
- Screenshots (or video recordings) showing proof of working code-base.