首页 > 代码库 > ansible学习三(命令和模块)
ansible学习三(命令和模块)
Ansible命令的一般格式:
Ansible 主机IP -m 模块 -a 模块参数
//主机IP:可以是具体IP也可以用正则表达式匹配也可以选择主机组,主机组在ansible
的hosts文件中定义,hosts默认位置是/etc/ansible/hosts
模块:调用ansible的指定模块,由于ansible是基于模块工作的,所以在使用过程中务
必要指定将要使用的ansible模块。
模块参数:不同模块有不同的参数,具体模块定义具体参数,例如:shell模块用于批
量执行命令,参数为将要执行的命令,copy模块用于批量分发文件,参数为src=http://www.mamicode.com/源文件位置,dest=目标位置
Ansible选项:
-m指定模块
-a指定模块参数
-k提示输入ssh密码,而不是使用秘钥
-K提示输入sudo密码,与sudo一起使用
-o一个主机的执行结果在一行显示
-s-u指定用户的时候,使用sudo获得root权限
-t将输入放到制定的目录下,命名为每一个主机的名称
-T超时时长
-B在后台运行命令,在制定NUM秒后kill该任务
-P每隔NUM秒,poll一个后台任务 和-B一起使用
-u指定移动端的执行用户
-Usudo到SUDO_USERNAME,代替root用户
-c指定建立连接的类型,一般有ssh,localhost FILES
ansible命令的用法举例
一般格式:ansible host -m 模块 -a 命令
软件安装:ansible host -m apt -a ‘name=gcc state=present’
或者ansible host -m yum -a “name=ntp state=installed”
执行命令:ansible host -m shell -a ‘date’
拷贝文件:ansible host -m copy -a “src=http://www.mamicode.com/tmp/server dest=/tmp/server”
文件拉取:ansible host -m fetch -a "src=http://www.mamicode.com//tmp/server dest=/tmp/"
文件属性:ansible host -m file -a “dest=/tmp/server mode=755 owner=root group=root”
服务管理:ansible zabbix -m service -a ‘name=httpd state=restarted‘
批量创建用户和密码:ansible zabbix -m user -a ‘name=test003 password="$1$fUuOq8NK$7h3hD4bvJTX0jmoN40S7p1"‘
附:
批量创建用户和密码时可以使用该命令
ansible host -m shell -a ‘useradd username’
ansible host -m shell -a ‘echo password | passwd username --stdin’
模块:
ansible模块可以用ansible-doc -l命令查看,截止到发稿,ansible模块个数已有将近600个,而常用的模块也就十个左右,掌握了常用模块的使用就可以完成绝大多数的自动化操作。
ommand模块 [执行远程命令(默认模块)]
不支持管道操作
ansible testservers -m command -a ‘uname -n‘
script模块 [在远程主机执行主控端的shell/python脚本 ]
直接指定脚本位置即可
ansible testservers -m script -a ‘/etc/ansible/test.sh
shell模块 [类似于command模块、支持管道传递]
比较常用的模块
ansible testservers -m shell -a ‘cat /tmp/test | grep ^test‘
raw模块 [类似于command模块、支持管道传递]
ansible testservers -m raw -a "ifconfig eth0 |sed -n 2p |awk ‘{print \$2}‘ |awk -F: ‘{print \$2}‘"
yum模块[对客户端进行yum操作]
使用yum安装软件,name为yum名,state为接下来的动作,一般情况下,state后面的参数以ed结尾
ansible test -m yum -a ‘name=sshpass state=installed‘
copy模块[批量分发文件]
执行该命令需要给dest指定目录和文件名,执行时可能出现md5校验失败的情况,跟ansible软件有一定的关系,根据实际情况判断。
文件拷贝时可以直接给客户端的该文件定义文件属性 参数为 owner=属主 group=属组 mode=权限
Copy时可以使用backup=yes参数对复制过程进行备份,当传输的文件与原来的文件不一样时,会自动备份客户端的源文件,而不是备份服务端文件。
validate=‘visudo -cf %s‘参数可以在文件传输完成后进行校验,默认传输是需要校验的,校验失败颜色为黄色,使用该参数后校验失败颜色为红色
ansible host -m copy -a “src=http://www.mamicode.com/tmp/server dest=/tmp/server”
fetch模块[将远程文件拉取到本地]
将远程目标的文件拉取到本地,默认位置为/本地指定文件夹/远程主机名/tmp/文件
使用lfat=yes参数指定本地存放文件夹,启用该参数时若指定的客户端不止一个,则最传输的文件覆盖掉前面传输的文件
ansible host -m fetch -a "src=http://www.mamicode.com//tmp/server dest=/tmp/"
file模块[更改目录属性]
File模块用于配置文件或目录属性,dest或path指定文件或目录位置 mode指定权限 owner指定属主,group指定属组
使用state=directory参数可以在客户端创建文件夹
使用state=link dest指定软连接位置 可以创建软连接
ansible host -m file -a “dest=/tmp/server mode=755 owner=root group=root”
service模块[管理服务]
Service 模块用于控制服务的状态,state指定状态
running打开服务 不支持客户端语言为中文
started 打开服务 不支持客户端语言为中文
restarted 重启服务
stopped 关闭服务
重启服务还可以用shell模块参数为控制服务命令
ansible zabbix -m service -a ‘name=httpd state=restarted‘
本文出自 “西门吹牛” 博客,请务必保留此出处http://taixin.blog.51cto.com/11725086/1844448
ansible学习三(命令和模块)