ad-hoc常用命令是用来解决一些常用的简单的配置命令,而且这些命令的执行速度很快。adhoc可以不用写playbooks,使用方便简单。
man ansible
ansible <pattern> [-f forks] [-m module] [-a args]
ARGUMENTS
pattern
组名,或者主机名,匹配hosts文件。
OPTIONS
-v --verbose
详细模式,如果命令执行成功,输出详细的结果,
-i PATH --inventory=PATH
指定host文件的路径,默认是在/etc/ansible/hosts
-f NUM --forks=NUM
NUM是指定一个整数,默认是5,指定fork开启同步进程的个数。
--private-key=PRIVATE_KEY_FILE_PATH
使用指定的文件建立认证连接
-m NAME --module-name=NAME
指定使用的module名称
-m DIRECTORY --module-path=DIRECTORY
指定module的目录来加载module,默认是/usr/share/ansible,
-a ARGUMENTS
指定module模块的参数
-k --ask-pass
提示输入ssh的密码,而不是使用基于ssh的密钥认证
-K --ask-sudo-pass
提示输入sudo密码,与--sudo一起使用
-o --one-line
在一行内输出所以的内容
-s --sudo
-u指定用户的时候,使用sudo获得root权限
-t DIRECTORY --tree=DIRECTORY
将输出放在指定的目录下,命名为每一个主机的名称
-T SECONDS --timeout=SECONDS
超时时长
-B NUM --background=NUM
在后台运行命令,在指定NUM秒后kill该任务
-P NUM --poll=NUM
每隔NUM秒,poll一个后台任务,跟-B一起使用
-u USERNAME --user=USERNAME
指定移动端的执行用户
-U SUDO_USERNAME --sudo-user=USERNAME
sudo到SUDO_USERNAME,替代root用户
-c CONNECTION --connection=CONNECTION
指定建立连接的类型,一般有ssh ,localhost
FILES
/etc/ansible/hosts 默认的host文件路径
/usr/share/ansible 默认模块文件存放路径
/etc/ansible/ansible.cfg 配置文件
File Transfer
ansible通过scp可以将文件传输到远程主机上
#ansible webservers -m copy -a "src=/etc/hosts dest=/tmp/hosts"
将本机的/etc/hosts文件拷贝到远程主机组webservers中所有主机的 /tmp/hosts下。
file模块可以改变文件的权限和所属用户组
#ansible webservers -m file -a "dest=/usr/local/src/test mode=600 owner=www group=www"
file模块还可以创建目录,类似mkdir -p
#ansible webservers -m file -a "dest=/a/b/c/d mode=755 owner=www group=www state=new"
同样也可以删除文件
#ansible webserver -m file -a "dest=/tmp/hosts state=absent"
Managing Packages
ansible同样提供了yum模块来安装软件包
确保一个包已经安装,但是不进行update操作
#ansible webservers -m yum -a "name=acme state=installed"
查看已经安装了指定版本的软件包
#ansible webservers -m yum -a "name=acme-1.5 state=installed"
查看安装软件包是否为最新版本
#ansible webservers -m yum -a "name=acme state=latest"
确保一个软件包是没有安装的
#ansible webservers -m yum -a “name=acme state=removed"
ansible在platform上提供了模块用于包管理,如果你要安装的软件包在模块中不可用,你可以通过commond模块来安装包。
Users & Groups
'user'模块可以方便的创建或者操作一个用户帐号,同样的也可以删除一个用户
#ansible all -m user -a "name=test password=<abc>"
#ansible all -m user -a "name=test state=absent"
Managing Services
确定服务都是开启的
#ansible all -m service -a "name=httpd state=started"
重启服务
#ansibel all -m service -a "name=httpd state=restarted"
关闭服务
#ansible all -m service -a "name=httpd state=stoped"