Ansible提供两种方式去完成任务:
1、ad-hoc命令
2、写Ansible playbook脚本
前者可以解决一些简单的任务,后者解决较复杂的任务(ad-hoc命令和ansible playbook的关系类似于在命令行敲入shell命令和写shell scripts两者之间的关系)。
ansible命令应用基础
语法:ansible [-f forks] [-m module_name] [-a args]
-f forks:启动的并发线程数;
-m module_name:要使用的模块;
-a args:模块特有的参数;
以指定用户名运行
ansible atlanta -a “/usr/bin/foo” -u username
以sudo 运行
ansible atlanta -a “/usr/bin/foo” -u username –sudo [–ask-sudo-pass]
常用命令
ping模块
ansible all -m ping
service 模块
ansible webservs -m service -a ‘enabled=true name=httpd state=started’
command: 命令模块
ansible 192.168.1.101 -m command -a ‘date’
shell:用到管道复杂命令功能时建议用shell
ansible all -m shell -a ‘echo 123..com | passwd –stdin user1’
script:在远程主机执行脚本
ansible all -m script -a “/tmp/a.sh”
yum:安装程序包,卸载的话state=absent
ansible all -m yum -a “name=zsh”
file: 更改文件的属主group
ansible all -m file -a ‘owner=mysql group=mysql mode=644 path=/tmp/fstab.ansible’
copy:
src=: 定义本地源文件路径
dest=: 定义远程目标文件路径
content=: 取代src= 表示直接用此处指定的信息生成为目标文件
ansible all -m copy -a ‘src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640’
user: 创建用户,删除用户后面跟上state=absent
ansible all -m user -a ‘name=”user1″‘
cron模块: 让被管理节点生成定期自动运维计划
让2台主机每10分钟运行一次echo hell
ansible webservs -m cron -a ‘minute=”*/10″ job=”/bin/echo hell” name=”test cron job”‘
git模块:使用git部署webapp
ansible webservers -m git -a “repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD”