= [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/AnsibleHelloGENI Title of the Experiment] =
{{{
#!html
}}}
== 4. Configure and Initialize ==
`omni` comes with a script, `readyToLogin` which finds the login information for nodes in your slice.
As of `omni` version 2.8, it has an `--ansible-inventory` flag which generates the Ansible inventory, which is a flat file which tells ansible the name and login information for your nodes.
{{{
#!div style="background: #ffd; border: 3px ridge; width: 800px;"
On your local machine:
{{{
#!python
readyToLogin MYSLICE --useSliceAggregates --ansible-inventory -o
cat inventory
ansible all -m ping -i inventory
}}}
Here is example output of running these commands:
{{{
#!sh
$ readyToLogin ansible --useSliceAggregates --ansible-inventory -o
Host info saved in inventory file: /Users/jdoe/projects/GENI/hellogeni/inventory
$ cat inventory
client ansible_ssh_host=pc3.instageni.clemson.edu ansible_ssh_port=33850
server ansible_ssh_host=pcvm3-6.instageni.clemson.edu
$ ansible all -m ping -i inventory
client | success >> {
"changed": false,
"ping": "pong"
}
server | success >> {
"changed": false,
"ping": "pong"
}
}}}
}}}
== 5. Execute Experiment ==
{{{
#!div style="background: #ffd; border: 3px ridge; width: 800px;"
{{{
#!html
|
The following are some example Ansible commands.
|
}}}
`apt` module is used to installed packages:
{{{
#!sh
ansible [-i inventory] [all/server/client] -s -m apt -a "name=apache2 update_cache=yes"
}}}
`shell` module is used to execute an arbitrary shell command:
{{{
#!sh
ansible [-i inventory] [all/server/client] -s -m shell -a "/usr/sbin/a2enmod status"
}}}
`file` module is used to manipulate files:
{{{
#!sh
ansible [-i inventory] [all/server/client] -s -m file -a "path=/var/www/html state=absent"
}}}
`synchronize` module is an implementation of `rsync` and is used to efficiently synchronize files between your local machine and the node:
{{{
#!sh
ansible [-i inventory] [all/server/client] -s -m synchronize -a "src=website/index.html dest=/var/www"
}}}
`lineinfile` module is used to see if an arbitrary line exists in a file:
{{{
#!sh
ansible [-i inventory] [all/server/client] -s -m lineinfile -a "line='ExtendedStatus On' dest=/etc/apache2/conf.d/extendedstatus create=yes state=present"
}}}
`service` module is used to start/stop/restart/etc services:
{{{
#!sh
ansible [-i inventory] [all/server/client] -s -m service -a "name=apache2 state=restarted"
}}}
}}}
== 6. Analyze Experiment ==
----
= [wiki:GENIExperimenter/Tutorials/AnsibleHelloGENI Introduction/DesignSetup] =
= [wiki:GENIExperimenter/Tutorials/AnsibleHelloGENI/Finish Next: Finish] =