Version 16 (modified by 10 years ago) (diff) | ,
---|
Title of the Experiment
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, readyToLogin
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.
- Create your Ansible inventory file:
On your local machine:
$ readyToLogin MYSLICE --useSliceAggregates --ansible-inventory -o $ cat 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
- Check to see if your nodes are up and ready.
This command uses the
ping
module to ping the specified nodes (in this caseall
) listed in the inventory file:$ ansible all -m ping -i inventory
An example output showing all of the nodes responding to ping:
$ ansible all -m ping -i inventory client | success >> { "changed": false, "ping": "pong" } server | success >> { "changed": false, "ping": "pong" }
- Try using the ping module in Ansible to only ping
server
orclient
by replacingall
in the above withserver
orclient
.
5. Execute Experiment
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"