Introduction to Ansible Transcripts
Chapter: Data
Lecture: Ansible Variables

Login or purchase this course to watch this video and the rest of the course contents.
0:00 We're going to modify our existing playbook to use variables instead of hardcoding values and tasks. This will make our playbooks more maintainable
0:08 and much easier to read. Flip back over into your development environment. We should be in the same directory where we have our first playbook.
0:16 Create a new directory named group_vars. Within group_vars, create a file named all. In all, we're going to have a bunch of key value pairs
0:26 and a couple of good ones to start with are the values for our deployer user and the name of the group we have for the deployer user.
0:32 So instead of hardcoding deployer or deployers in our task we'll pull that from a variable. Your first variable, deploy_user.
0:39 deploy_user will be named deployer. A deploy_group as a second key the deployers as the value. Save the file
0:51 go back to the route directory of our playbook and into roles/common/tasks and modify the new_user file. Instead of having hardcoded name deployers
1:02 we'll use the variable here. And here where we create our non-root user we use the deploy_user variable and again, deploy_group as our variable.
1:18 Keep going down and then under our user of deploy user then we'll save that. And there's a couple other places where we could use variables.
1:26 For example, which shell we would want and this hardcoded path for where our public key is. But let's give this a try for now
1:32 just with these two new variables and see how this works. Head back into the top level directory and let's re-run our playbook. Same command as before.
1:49 Okay, and we ran into an issue and this will often come up if you have hardcoded values and you're placing them with variables.
1:55 The spaces are throwing off Ansible. It can't parse what's happening here so we need to make sure that we have double quotes
2:01 around our variable names when they're used as values. So just head back into roles/common/tasks, modify the user
2:10 and then down here, name, deploy_group make sure to put all these in double quotes. Cool. Let's re-run this. Okay, so I got us past the first error
2:26 and this is a really good time to take a look at a common error that will come up when you make a typo. So we had a variable defined deploy_user
2:33 but in this case, I typed in deployer_user and of course, there is no deployer_user variable. So let's fix this one error where we said deployer
2:45 and re-run one more time. Awesome. Everything was successful and now as you can see, under group_vars when we take a look at our variables file
2:55 we now have two variables: deploy_user, deploy_group and their values which we can change whenever we want.
3:01 So if I wanted my deploye_user to be named matt do that instead and that would then affect every place
3:06 that we've used this variable across our entire playbook. Much more maintainable than hardcoding deployer everywhere.

Talk Python's Mastodon Michael Kennedy's Mastodon