Step 1: Installing Ansible

You can install Ansible with:

apt-get install ansible

You need to put all the servers that you want to manage with Ansible in the /etc/ansible/hosts file. Actually you can setup the hosts file in the same location as the playbook file.

Configuration file:

We can use the default configuration file, if you like you can configure it according to your need. Ansible looks for an ansible.cfg file in the following places, in this order:

1. File specified by the ANSIBLE_CONFIG environment variable
2.
./ansible.cfg (ansible.cfg in the current directory)
3.
~/.ansible.cfg (.ansible.cfg in your home directory)
4.
/etc/ansible/ansible.cfg

 

Step 2: Setting up SSH keys

Ansible works with SSH keys. If your SSH key on nodes isn’t the same as on your Ansible server, it will give you an error. Therefore, we need to generate an SSH key.

If you need openssh installed, use apt-get install openssh-server

Then create a key pair:

ssh-keygen

This create a private key ~/.ssh/id_rsa and a public key ~/.ssh/id_rsa.pub

Now add your SSH key to your nodes. It can be found here:

cat ~/.ssh/id_rsa.pub

Copy the content , on the target server, also make sure openssh is installed, then make sure folder .ssh exist in your home folder,  create a file ~/.ssh/authorized_keys

Then append the public key content to it.

If you are managing AWS VMs, you can also use the private key provided by Amazon and then specify the private key in the command in step 5 or 6 by switch –private-key.

Step 3: make sure Python is installed on the target servers

To install Python, use apt-get install python

Step 4: Add host to the host file

In the hosts file or /etc/ansible/hosts

add lines:

[test]
192.168.10.73

192.168.10.73 is the IP address is target server.

Step 5: test
ansible -m ping all

For the AWS, you need to type like this with the private key ( in my case, I used the red hat Linux, you may have to change the user name according to your OS):

ansible test -m ping -a uptime --private-key=/home/ec2-user/openshift-aws-installer-image/ck_workshop.pem -u ec2-user

If you want to execute sudo command, you need to add -su --su-user=ec2-user

Note, the -su --su-user=ec2-user -u ec2-user must in this particular order.

Step 6: create a playbook

You can create a playbook in ymal format, we will try to install nmap on a target machine:

---

- hosts: test
  tasks:
    - name: Setup nmap
       apt: pkg=nmap state=installed update_cache=true

 

If you want to add password use --extra-vars "ansible_sudo_pass=yourPassword"

ansible-playbook playbook.yml -i /etc/ansible/hosts -u username --extra-vars "ansible_sudo_pass=yourPassword"
  • -i is the host file
  • -u username : this may useful if you want to use sudo command.