Project 1: Package an Application#
In this project you’ll use Ansible and Terraform to package the work you did in the Install Software Three Ways lab. In the last lab you modified your VM manually, which is important for learning how to get things working, but can’t be quickly copied and redone.
Project Note
Use the code you develop in main.tf
and playbook.yaml
as a start for this project and will be the basis for future projects.
Copy the base
Directory#
In your git repository, create copy the base
directory to create a new directory for this project.
$ cp -R base project1
$ cd project1
Danger
You should have performed terraform destroy
in base
before making a copy
Configure the ACL#
In the main.tf
file update the allowed ports to include only:
22 (SSH)
80 (HTTP)
Update Packages#
The playbook.yaml
file already has a play that installs the python3-pip
and python3-venv
packages. Add the following packages to the list:
apache2
nodejs
Create a Custom HTML File#
Here’s some HTML. Update it with your name and copy paste it into a file called index.html
in the same directory as playbook.yaml
.
<!DOCTYPE html>
<html>
<body>
<h1>Welcome to my CIS-91 project!</h1>
<p>Your name here.</p>
</body>
</html>
Write a Play to Install index.html
#
Ansible can copy files from the local machine to the target. You can find the full documentation in the documentation of ansible.builtin.copy. Add the following task to your existing ansible play.
- name: Copy file with owner and permissions
ansible.builtin.copy:
src: index.html
dest: /var/www/html/index.html
owner: www-data
group: www-data
mode: '0644'
Test your Work#
Start by using Terraform to create your infrastructure:
$ terraform init
$ terraform apply
Now use Ansible to apply the VM configuration:
$ ansible-playbook --private-key ~/.ssh/google_compute_engine -i ../inventory.gcp.yaml playbook.yaml
You should see your custom HTML by directing your browser to your IP address.
Commit and Push Your Changes#
In class I demonstrate committing your work using the Cloud Shell Editor and vscode. You can also do it on the command line:
$ git add index.html main.tf playbook.yaml
$ git commit -m "First commit of lab 07"
$ git push
Turn In#
Turn in the following:
The URL of your GitHub repo (I will browse there and look at your
main.tf
andplaybook.yaml
)The IP address of your project so I can visit your page.