Lab Guide: Provisioning an AWS EC2 Instance with Ansible Lightspeed
A guide to using Ansible Lightspeed to generate a playbook that provisions a t3.small EC2 instance on AWS.
Introduction and Setup
|
Important Note About This Lab IBM watsonx Code Assistant models are continuously updated and improved. As a result, some specific task generation challenges in this lab may not work exactly as described due to model updates. This is expected behavior. The primary goal of this lab is to help you understand the key features of Ansible Lightspeed, including:
If a specific prompt doesn’t generate suggestions as expected:
|
In this challenge, you will use Ansible Lightspeed to generate an Ansible Playbook that automates the provisioning of an Amazon Web Services (AWS) EC2 instance.
Your Mission
Your goal is to use Ansible Lightspeed to generate a playbook that automates the following tasks:
-
Gathers information about an existing VPC subnet.
-
Provisions a
t3.smallEC2 instance within that subnet. -
Waits for the instance to be ready and then prints its public IP address.
The examples used in this lab are available in the Ansible Lightspeed Demo repository.
|
AWS Credentials: This lab uses a temporary AWS account. You’ll find the credentials in the AWS/Azure tab at the top of your lab environment when you need them in Task 4. Need Help? If you encounter difficulties or want to verify your work, you can reference the solution playbook at |
Task 1: Generate Playbook Tasks with Ansible Lightspeed
You will now edit a pre-created playbook file and use natural language prompts to have Ansible Lightspeed generate the necessary tasks.
-
Open the playbook file in VS Code.
-
Click on the VS Code tab at the top of your lab environment
Work in a new browser tab: For the best experience with Ansible Lightspeed features, click the VS Code tab to open it in a new browser tab rather than using the inline embedded window.
-
On the left side of VS Code, click the Explorer icon (two overlapping documents) to show the file explorer
-
In the file explorer, expand these folders: playbooks → cloud → aws
-
Click on demo_provision_ec2_instance.yml to open it in the editor
-
-
Generate the subnet info and variable tasks.
Multi-task prompt: This comment starts with
#and uses&to separate TWO tasks. Do NOT uncomment - just press ENTER at the end.-
Find the line:
# Gather info from subnet called subnet-lightspeed & create vpc_subnet_id var -
Do NOT uncomment this line - leave the
#symbol in place -
Place your cursor at the end of the line (after "var")
-
Press
ENTERto create a new line -
Press
TABwhen Lightspeed shows suggestions for BOTH tasks_Lightspeed Highlight:_ Lightspeed generates two tasks from this single prompt. The first gathers information about the named subnet, and the second uses the `set_fact` module to create a new variable, `vpc_subnet_id`, from the results of the first task.
-
-
Generate the EC2 instance provisioning task.
-
Find the commented line:
#- name: Provision t3.small instance using my_instance var -
Uncomment the line by removing the
#(or pressCTRL+/for Windows/Linux orCMD+/for Mac) -
Place your cursor at the end of the line (after "var")
-
Press
ENTERto create a new line -
Press
TABwhen Lightspeed shows a suggestion_Lightspeed Highlight:_ Lightspeed correctly uses the `amazon.aws.ec2_instance` module. It also incorporates the `my_instance` variable (defined in the playbook's `vars` section) and the `vpc_subnet_id` variable created in the previous step.
-
-
Generate the tasks to get and print the public IP.
Multi-task prompt: This will generate TWO tasks - one to get the IP and one to print it.
-
Find the line:
# Create var from public_ip_address with retry & print it out -
Do NOT uncomment this line - leave the
#symbol in place -
Place your cursor at the end of the line (after "out")
-
Press
ENTERto create a new line -
Press
TABwhen Lightspeed shows suggestions for BOTH tasks_Lightspeed Highlight:_ Lightspeed generates a task to create a new variable for the public IP address, including a `wait_for` condition to ensure the IP is available. It then creates a second task to print the value of that new variable.
-
-
Save the playbook.
Click **File** → **Save** from the top menu, or press `CTRL+S` (Windows/Linux) or `CMD+S` (Mac).
Task 2: Review Ansible Lightspeed Training Matches
One of Ansible Lightspeed’s key differentiators is providing information on the potential training data used to generate suggestions.
-
Open the Lightspeed Training Matches view.
-
At the top of VS Code, click View in the menu bar
-
Select Open View…
-
In the search box that appears, type
Lightspeed -
Click on Lightspeed Training Matches from the list
-
-
Examine a training match.
-
In your playbook, click on any task name you generated
-
Delete one line of the generated code and press
ENTERto regenerate the suggestion -
Look at the Lightspeed Training Matches pane (usually at the bottom of VS Code)
-
You’ll see potential training sources. Click on any entry to see details including the content source, author, and license information.
-
Task 3: Run the Playbook
You can now choose to run the completed playbook using either the automation controller or ansible-navigator.
Option 1: Using Automation Controller
-
Commit and push the playbook to Git.
-
On the left side of VS Code, click the Source Control icon (it looks like a branch with circles)
-
You should see
demo_provision_ec2_instance.ymllisted under "Changes" -
Hover over the file name and click the + (plus) icon that appears to stage the changes
-
At the top, in the "Message" box, type a commit message like:
Provision EC2 instance -
Click the Commit button (checkmark icon)
-
Click the Sync Changes button to push your playbook to the Git repository
-
-
Run the playbook from Automation Controller.
-
Click the Ansible Automation Platform tab at the top of the lab window
-
If you see a login screen, enter:
-
Username:
admin -
Password:
ansible123!
-
-
On the left sidebar, click Resources → Templates
-
Find the template named Provision EC2 instance
-
Click the launch icon (🚀 rocket ship) on the right side of that row
-
Wait for the job to complete successfully (you’ll see a green "Successful" status)
-
Option 2: Using ansible-navigator
-
Open a terminal in VS Code.
-
Make sure you’re on the VS Code tab
-
Look at the top menu bar and click Terminal → New Terminal
-
A terminal panel will open at the bottom of VS Code
-
-
Navigate to the playbook folder.
In the terminal, type the following command and press `ENTER`:
cd playbooks/cloud/aws -
Run the playbook with ansible-navigator.
Type the following command and press `ENTER`:
ansible-navigator run demo_provision_ec2_instance.ymlThe playbook will run and show you the results. Press the `ESC` key to return to the terminal prompt when it's done.
Task 4: Verify the EC2 Instance Creation
Finally, verify that the new EC2 instance is running in the AWS console.
-
Get your AWS credentials and access the console.
-
At the very top of your lab environment, click the AWS/Azure tab
-
You’ll see AWS account credentials displayed (Account ID, Username, Password, and Console URL)
-
Click the AWS Console URL link (or copy it to a new browser tab)
-
-
Log in to the AWS Console.
-
Go back to the AWS/Azure tab to copy the credentials
-
Copy the Username and Password shown
-
Paste them into the AWS login page
-
Click Sign In
-
-
View your EC2 instance.
-
At the top of the AWS Console, make sure the region is set to N. Virginia (us-east-1)
-
In the search bar at the top, type
EC2and click on EC2 service -
On the left sidebar, click Instances (under "Instances")
-
You should see your new instance named lightspeed-instance with a status of "Running"
-
This confirms that your Ansible playbook successfully created the EC2 instance!
-
Conclusion and Additional Resources
Congratulations! You’ve successfully created an Ansible Playbook using Ansible Lightspeed to provision an AWS EC2 Instance!
|
Solution Playbook Available: If you encountered issues or want to compare your work, you can review the complete solution at |
Additional Resources
-
More information on Red Hat Ansible Lightspeed with IBM watsonx Code Assistant