Pre-requisites to setup Ansible

There are certain pre-requisites before we start with the installation and configuration of Ansible in our setup.

 

Control Node Requirements

  • Currently Ansible can be run from any machine with Python 2 (version 2.7) or Python 3 (versions 3.5 and higher) installed.
  • This includes Red Hat, Debian, CentOS, macOS, any of the BSDs, and so on.
  • Windows is not supported for the control node.
  • macOS by default is configured for a small number of file handles, so if you want to use 15 or more forks you’ll need to raise the ulimit with sudo launchctl limit maxfiles unlimited. This command can also fix any “Too many open files” error.
  • Your node must have access to internet connection to download and install rpms from third party repositories.

 

Managed node requirements

  • On the managed nodes, you need a way to communicate, which is normally SSH. By default this uses SFTP.
  • If that’s not available, you can switch to SCP in ansible.cfg.
  • You also need Python 2 (version 2.6 or later) or Python 3 (version 3.5 or later).
  • We will not use SELinux on your environment but if you have a requirement to use SELinux then follow ansible documentation for additional steps

 

Update /etc/hosts on all the nodes

You can either configure BIND DNS server to resolve hostname or alternatively update /etc/hosts file with the hostname and IP details of your controller and managed hosts in your setup

 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.154  controller  controller.example.com
192.168.43.48   server1     server1.example.com
192.168.43.148  server2     server2.example.com

When working with Amazon AWS the public IP may keep changing so at one point of time we may have to rely on dynamic inventory instead of static inventory. But it is still a good idea to have the private addresses configured in /etc/hosts or if you are using a different setup then you should use /etc/hosts for hostname resolution instead of IP Address to communicate with the managed nodes.

 

Install mandatory prerequisites on ansible client nodes

Now we don't need any agent running on the client nodes but we do need python to be installed on the managed nodes for the controller to be able to execute playbooks using modules on the managed nodes.

Install python3 on all the client nodes (if not installed already). To install python3 we will use our default package manager

[root@server-1 ~]# dnf -y install python36.x86_64
[root@server-2 ~]# dnf -y install python36.x86_64

Verify the installed rpm version on both the managed nodes

[root@server-1 ~]# rpm -qa | grep python36
python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_64

[root@server-2 ~]# rpm -qa | grep python36
python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_64

Although I will also share you with the tips to work with Ansible without installing python on the managed nodes. But if possible it is strongly recommended to install python3 on the managed nodes as well.

 

What's Next

Next in our Ansible Tutorial we will perform the installation of Ansible nodes using different possible methods.

Leave a Comment

Please use shortcodes <pre class=comments>your code</pre> for syntax highlighting when adding code.