Ansible 2 of 9: Inventory/Ad-Hoc Configuration
1 of 12. Open AWS Cloud9
2 of 12. Setup folders and files
Create a folder ansible-tasks
The ansible-tasks folder will be placed inside your 'environment' folder
Inside of ansible-tasks folder, create a file called hosts
Insert the Private IPs of the Hosts (host01 and host02) inside of the hosts file
pwd
ls
mkdir ansible-tasks
cd ansible-tasks
touch hosts
echo 172.31.89.75 > hosts
echo 172.31.18.118 >> hosts
If you don't know the private IP of your instances, you can find it easily:
Note: This example depends upon tagging your instances with names beginning with 'host'
aws ec2 describe-instances \
--filters 'Name=tag:Name,Values=host*' \
--query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value|[0],State.Name,PrivateIpAddress]' \
--output text | column -t
3 of 12. Use the ping module to test connectivity.'
Note: You will get an error unless you specify the correct login information, to include SSH key. Notice that the Debian host fails, even if you specify the key file, because Debian uses a default user 'admin' instead of 'ec2-user' like the RedHat host.
For ease of use, move your key file to the ansible-tasks folder
cd ansible-tasks
mv ../tcb-ansible-key.pem .
ansible -i hosts all -m ping
ansible -i hosts all -m ping -e "ansible_ssh_private_key_file=tcb-ansible-key.pem"
4 of 12. Update the "hosts" inventory file
We will add the user information for each host AND we will add the SSH key file information. (This way, we do not have to specify those parameters at runtime.)
Try the ping module afterwards. Note: you can try the username at runtime, but it will only be able to connect to hosts where that username is valid.
host01 ansible_host=172.31.89.75 ansible_user=admin
host02 ansible_host=172.31.18.118 ansible_user=ec2-user
[all:vars]
ansible_ssh_private_key_file=/home/ec2-user/environment/ansible-tasks/tcb-ansible-key.pem
ansible -i hosts all -m ping
5 of 12. Add a group for the webservers to the "hosts" inventory file.
Follow-up by using the ping module against the webservers group
[webservers]
host01
ansible -i hosts webservers -m ping
6 of 12. Check your Ansible config.
Note: You don't have a config file yet.
ansible-config
ansible --version
7 of 12. Let's create a sample ansible config file.
This file will be placed inside the ansible-tasks folder. Copy from the sample ansible config file at Github
8 of 12. Make the ping module the default module.
Follow-up by re-testing ansible against your inventory file 'hosts'. Do not specify the ping module.
module_name = ping
ansible -i hosts all
9 of 12. Set the default inventory file as 'hosts'
Uncomment and set inventory to include the path to your 'hosts' file
Follow-up by re-testing. Do not specify the inventory file
inventory = /etc/ansible/hosts,/home/ec2-user/environment/ansible-tasks/hosts
ansible all
10 of 12. Check the ansible-inventory
ansible-inventory --graph
11 of 12. Check ansible-config version
Try the --version switch.
ansible-config --version
12 of 12. Try the dump option.
Non-default changes will be highlighted.
ansible-config dump
References
Ansible Configuration Settings (Latest)
Comments
Post a Comment