Apart from certain Linux distributions, Ansible also works with FreeBSD. Let’s have a look at how to install Ansible on FreeBSD 11.
In this article let’s assume the following details for the machines
Server – Hostname: server, IP : 172.16.0.10
Node1 – Hostname: node1, IP : 172.16.0.11
Node2 – Hostname: node2, IP : 172.16.0.12
Ansible is available through pkg. Install Ansible and Python using the following command.
pkg install ansible python
Ansible looks for Python in /usr/bin/ but is present in /usr/bin/local. So we’ll create a soft link for Python in /usr/bin
ln -s /usr/local/bin/python /usr/bin/python
Generate ssh keypair on the Ansible server.
ssh-keygen
Do the following on nodes
Copy the public key of the server to all the nodes
cat .ssh/id_rsa.pub (On Server to copy public key)
Append the public key copied from the server to .ssh/authorized_keys file on all the nodes
Once the keys have been copied we can check them by using the following commands on the server.
# ssh root@node-1 . . # ssh root@node-x
The above command should login directly and not wait for a password.
The ansible “hosts” file is present as a sample in /usr/local/share/examples/ansible/ directory. Copy that file to /usr/local/etc/ansible/
cp /usr/local/share/examples/ansible/hosts /usr/local/etc/ansible
Edit /usr/local/etc/ansible/hosts and append the following lines
[nodes] node1 ansible_ssh_host=172.16.0.11 node2 ansible_ssh_host=172.16.0.12
Check the reachabilty of these nodes by using this following command
# ansible -m ping all
Ouput
node2 | SUCCESS => { "changed": false, "ping": "pong" } node1 | SUCCESS => { "changed": false, "ping": "pong" }
We can use another command to check a particular node.
ansible -m raw -a 'df' node1
Ouput:
node1 | SUCCESS | rc=0 >> Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ada0p2 15224828 4909544 9097300 35% / devfs 1 1 0 100% /dev Shared connection to 172.16.0.7 closed.