= [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/AnsibleHelloGENI Title of the Experiment] = {{{ #!html
Image Map
}}} == 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 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
Tip 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] =