Ansible执行任务的方式
Ansible提供两种方式去完成任务
一是 ad-hoc 命令,一是写 Ansible playbook.前者可以解决一些简单的任务, 后者解决较复杂的任务.
/usr/bin/ansible
/usr/bin/ansible-playbook
例子:使用 Ansible 的命令行工具来重启 Atlanta 组中所有的 web 服务器,每次重启10个.
ssh-agent bash
ssh-add ~/.ssh/id_rsa
ansible atlanta -a "/sbin/reboot" -f 10 # -f 10 选项表示使用10个并行的进程,也可在配置文件中设置:forks = 10
ansible atlanta -a "/usr/bin/foo" -u username
ansible atlanta -a "/usr/bin/foo" -u username --sudo [--ask-sudo-pass]
ansible atlanta -a "/usr/bin/foo" -u username -U otheruser [--ask-sudo-pass]
注意:默认的 command 模块不支持 shell 变量,也不支持管道等 shell 相关的东西.如果你想使用 shell相关的这些东西, 请使用’shell’ 模块.例如:
ansible raleigh -m shell -a 'echo $TERM'
使用 Ansible ad hoc 命令行接口时(与使用 Playbooks 的情况相反),尤其注意 shell 引号的规则.
比如在上面的例子中,如果使用双引号”echo $TERM”,会求出TERM变量在当前系统的值,而我们实际希望的是把这个命令传递到其它机器执行.