wiki:GENIExperimenter/Tutorials/AnsibleHelloGENI/Execute

Version 13 (modified by sedwards@bbn.com, 9 years ago) (diff)

--

Title of the Experiment

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.

On your local machine:

$ readyToLogin MYSLICE --useSliceAggregates --ansible-inventory -o
$ cat inventory
$ ansible all  -m ping -i inventory

Here example output of running these commands:

$ 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

Tip The following are some example Ansible commands.

apt module is used to installed packages:

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:

ansible [-i inventory] [all/server/client]  -s -m shell -a "/usr/sbin/a2enmod status"

file module is used to manipulate files:

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:

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:

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:

ansible [-i inventory] [all/server/client] -s  -m service -a "name=apache2 state=restarted"

6. Analyze Experiment


Introduction/DesignSetup

Next: Finish