Show pageOld revisionsBacklinksODT exportBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. =====Overview===== In Ansible, sometimes we have to apply script to A LOT of servers. Of course it isn't good idea to do it individually. We can set up inventory with groups of servers. An the Ansible engine will apply the changes to that group. Of course we need to set up inventory fail, which is simply a text file in either: * YML Format * INI Format Here, we will use the INI format as I find it better to organize, please use whichever you prefer. You can think of the inventory as teh hosts file in Linux. It is also convenient as it is called the same, just it resides in: /etc/ansible/hosts =====Setup===== To setup inventory file, we need to go to the base location for ansible: "/etc/ansible" and create a file called "hosts" Then we can add something like this: <sxh bash> [kerberos_master] 192.168.50.10 [kerberos_nodes] 192.168.50.11 192.168.50.12 ansible_port=5678 [kerberos_servers:children] kerberos_master kerberos_nodes [kerberos:vars] ansible_user=vagrant ansible_password=vagrant ansible_connection=ssh </sxh> Now, that is very small inventory, but it illustrates a lot of features of the intenroy. So let's discuss them: ====Groups==== You can see, we have two groups: * kerberos_master * kerberos_nodes And both of them are nested into 3rd group called: kerberos_servers ====Variables==== Furthermore, we can set variables which will affect a certain groups or a particular server. For example we have set that for all servers, the engine will use: * User: Vagrant * Password: Vagrant * Connection: SSH (as they are Linux servers), but can be also winrm (if they were Windows) Alternatively, we can set a vaiable for particular host or group, as seen here: <sxh bash> 192.168.50.12 ansible_port=5678 </sxh> In that case, the engine will ignore the default port (22) and it will use port 5678 to connect. =====Check===== So we can create that file: <sxh bash> root@DESKTOP-N65RKDP:/etc/ansible# cat hosts [kerberos_master] 192.168.50.10 [kerberos_nodes] 192.168.50.11 192.168.50.12 [kerberos:children] kerberos_master kerberos_nodes [kerberos:vars] ansible_user=vagrant ansible_password=vagrant ansible_connection=ssh </sxh> We can also execute a module against a certain group or server: <sxh bash> root@DESKTOP-N65RKDP:/etc/ansible# ansible kerberos -m ping 192.168.50.10 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.50.11 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.50.12 | SUCCESS => { "changed": false, "ping": "pong" } root@DESKTOP-N65RKDP:/etc/ansible# </sxh> ansible_basic_inventory_group_hosts.txt Last modified: 2020/03/11 15:11by andonovj