$ 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