$ fab -H x.x.x.x -- hostname vs $ ssh x.x.x.x hostname $ ssh -i ~/.ssh/id_rsa.pro x.x.x.x hostname $ ssh -i ~/.ssh/id_rsa.stg x.x.x.x hostname
$ fab -H x.x.x.x -- sudo "bash -c 'echo "any host 192.168.100.1 gw 192.168.0.5" >> /etc/sysconfig/static-routes'" vs $ ssh -t x.x.x.x sudo "bash -c 'echo \"any host 192.168.100.1 gw 192.168.0.5\" >> /etc/sysconfig/static-routes'"
$ fab -H x.x.x.x -- sudo "bash -c 'sed s/192.168.100.10/192.168.50.10/g /etc/hosts > /etc/hosts.`date '+%Y%m%d'`'" vs $ ssh x.x.x.x sudo "bash -c 'sed s/192.168.100.10/192.168.50.10/g /etc/hosts > /etc/hosts.`date '+%Y%m%d'`' "
$ H="192.168.0.1,192.168.0.2" $ fab -H $H -- hostname vs $ H="192.168.0.1 192.168.0.2" $ for i in $H ; do ssh -n $i "hostname" ; done
http://docs.ansible.com/ansible/latest/intro_adhoc.html
$ ansible -h
Usage: ansible <host-pattern> [options]
Options:
-a MODULE_ARGS, --args=MODULE_ARGS
module arguments
--ask-vault-pass ask for vault password
-i INVENTORY, --inventory-file=INVENTORY
specify inventory host path
(default=/etc/ansible/hosts) or comma separated host
list.
-m MODULE_NAME, --module-name=MODULE_NAME
module name to execute (default=command)
Connection Options:
-k, --ask-pass ask for connection password
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE
-u REMOTE_USER, --user=REMOTE_USER
connect as this user (default=None)
Privilege Escalation Options:
-s, --sudo run operations with sudo (nopasswd) (deprecated, use
become)
-U SUDO_USER, --sudo-user=SUDO_USER
desired sudo user (default=root) (deprecated, use
become)
-S, --su run operations with su (deprecated, use become)
--ask-sudo-pass ask for sudo password (deprecated, use become)
--ask-su-pass ask for su password (deprecated, use become)
$ ansible -i 192.168.0.10, all -a "hostname" $ ansible -i 192.168.0.10,192.168.0.11, all -a "hostname" $ ansible -i 192.168.0.10,192.168.0.11, all -a "sudo hostname" $ ansible -i 192.168.0.10,192.168.0.11, all -s -a "hostname"
The given command will be executed on all selected nodes. It will not be processed through the shell, so variables like $HOME and operations like “<”, “>”, “|”, “;” and “&” will not work (use the shell module if you need these features).
$ ansible -i 192.168.0.30, all -m shell -a "hostname > /tmp/test.txt" $ ansible -i 192.168.0.30, all -m shell -a "cat /etc/ssh/sshd_config |grep -i Root"
$ ansible -i 192.168.0.10, all -u root -k -a "hostname" SSH password: 192.168.0.10 | SUCCESS | rc=0 >> root
$ vi hosts_test [test-web] 192.168.0.10 192.168.0.11 $ ansible test-web -i hosts_test -a 'hostname'
$ ansible -i hosts_test -u user01 -k -s -a "cat /etc/shadow"
$ ansible -s -K -B 1 -a "shutdown -h now" -i host1,host2 all
appendix