Ansible ad-hoc命令# ansible <host-pattern> [-f forks] [-m module_name] [-a args]# <host-pattern>命令生效的主机: <inventory_group_name>/<inventory_host_ip>/all # 常用选项通过 ansible -h 命令获取详细信息-v# 输出详细执行过程信息verbose mode (-vvv for more, -vvvv to enable connection debugging)-i inventory_file# 指定inventory文件,默认为/etc/ansible/hosts-f forks# 指定并发线程数(一次处理多少个主机),默认5个线程-m module_name# 指定执行使用的模块-M directory# 指定模块存放路径,默认为/usr/share/ansible-a args# 指定模块参数-l hosts_ip# 限定主机(只在限定主机上执行任务)--become-method BECOME_METHOD# 提权方法,默认为sudo,一般为su--become-user BECOME_USER# 切换用户,默认为root-K, --ask-become-pass# 请求提权密码--list-hosts# 列出此次的主机列表,但不做任何改变--syntax-check# 语法检查-C, --check# 检验可能的错误,但不做任何改变# 主机名文件保留- "-t"或"--tree"选项可以将ansible的执行结果按主机名保存在指定目录下的文件中- 使用"-t"选项可以将第一次执行的结果按主机名保存在文件中,此后即使不使用"-t"选项也能提升执行速度# 命令示例ansible 192.168.56.3 -a 'hostname'# 默认使用command模块(不支持变量、管道等)ansible 192.168.56.3 -m command -a 'hostname'ansible Test --list# 列出Test组所有的主机列表ansible Test:Test2 -m ping# 通过ping模块检查Test组和Test2组的主机是否存活ansible Test:!Test2 -m ping# 在Test组但不在Test2组的主机ansible Test:&Test2 -m ping# 同时存在Test组和Test2组的主机ansible Tes* -m ping# 组名开头为Tes的主机ansible all -m shell -a 'hostname && date'# 通过shell模块在所有主机试行shell命令ansible all -f 10 -m shell -a 'hostname && date;cat /etc/system-release'# shell模块支持变量、管道、if判断等复杂命令
部分参数如果不指定,将采用ansible.cfg中的设置值,或者采用原始默认值 。
文章插图
Ansible ad-hoc常用命令
# ping测试指定主机连接性ansible ta -m pingansible -i /etc/ansible/hosts ta -m ping#指定inventory文件# command在指定主机上执行命令(默认模块) , 不支持变量、管道、重定向等shell特性ansible ta -m command -a "chdir=/home/ ls ./"# 在远程主机上切换到home目录执行ls命令 # shell在指定主机上执行命令或运行脚本,打开远程主机的shell进程的一个子shell运行命令,支持shell的变量、管道、重定向等特性ansible ta -m shell -a 'hostname && date;cat /etc/system-release'# 支持变量、管道、if判断等复杂命令ansible ta -m shell -a "echo 'this is a test' > test.txt" -C# 验证可能的错误,但不做任何改变ansible ta -m shell -a 'echo "123456"|passwd --stdin root' -K# 更改root密码# script调用本地脚本在远程主机执行,但只能执行脚本 , 不能调用其他指令,且不支持管道命令ansible ta -m script -a "/home/vipxf/test.sh"ansible ta -m script -a "removes=/home/vipxf/test.sh /home/vipxf/test2.sh" -o# 如果远程主机上test.sh文件存在就执行本地脚本test2.sh,否则就不执行ansible ta -m script -a "creates=/home/vipxf/test.sh /home/vipxf/test2.sh" -o# 如果远程主机上test.sh文件存在就不执行本地脚本test2.sh,否则就执行# raw类似shell , 支持管道命令,可用于没有python环境的远程主机ansible ta -m raw -a "cd /home;pwd"# stat获取文件信息ansible ta -m stat -a "path=/etc/ansible/hosts" # setup系统信息,收集factsansible ta -m setupansible ta -m setup | grep "xxx"# 获取主机所有facts然后结合grep命令过滤ansible ta -m setup -a "filter=ansible_os_family"# 通过filter参数来查看指定信息ansible ta -m setup -a 'filter="*mem*"' --tree ./facts# 通过filter参数查看指定信息并按主机名保存到facts目录# copy复制文件到远程主机的指定位置ansible ta -m copy -a "src=https://www.huyubaike.com/etc/hosts dest=~/test.hosts mode=664 owner=vipxf group=vipxf"# 复制本地文件到远程主机并设置权限ansible ta -m copy -a "content="this is a test" dest=~/test.hosts mode=664 owner=vipxf group=vipxf"# 在远程主机创建指定内容文件并设置权限# fetch复制指定主机的文件到本地ansible ta -m fetch -a "src=https://www.huyubaike.com/biancheng/~/testfile.txt dest=~/"# 将在指定目录下创建对应IP文件夹来存放文件,保留了原目录结构# get_url在远程主机下载网络文件,支持文件校验ansible ta -m get_url -a "url=http://172.20.5.3/pub/soft/docker/docker-19.03.9.tgz dest=~/ mode=655 owner=vipxf"# 下载文件到远程主机指定目录并设置权限# file设置文件属性ansible ta -m file -a "path=~/testfile.txt mode=755 owner=vipxf group=vipxf"# 更新文件属性ansible ta -m file -a "path=~/testfile.txt state=touch mode=644"# 创建文件ansible ta -m file -a "path=~/testfile.txt state=absent"# 删除文件ansible ta -m file -a "path=~/testdir mode=755 state=directory"# 创建目录# cron设置计划任务ansible ta -m cron -a "minute=0 hour=22 job='/home/vipxf/testcron.sh' name='test cron'"# 创建计划任务ansible ta -m cron -a "name='test cron' state=absent"# 删除计划任务# group管理用户组ansible ta -b --become-user root --become-method su -m group -a "name=test system=yes" --ask-become-pass# 创建用户组ansible ta -b --become-user root --become-method su -m group -a "name=test state=absent" --ask-become-pass# 删除用户组# user管理用户ansible ta -b --become-user root --become-method su -m user -a "name=test system=yes group=test password=pw@123" -K# 创建用户ansible ta -b --become-user root --become-method su -m user -a "name=test state=absent force=yes" -K# 删除用户# service管理服务ansible ta -b --become-user root --become-method su -m service -a "name=sshd enabled=yes state=started" -K# 启动httpd服务并且不设置开机启动ansible ta -b --become-user root --become-method su -m service -a "name=sshd state=stopped" -K# 停止httpd服务并且不设置开机启动# yum管理程序包ansible ta -b --become-user root --become-method su -m yum -a "name=httpd state=present" -K# 安装包,也可以将state设为installedansible ta -b --become-user root --become-method su -m yum -a "name=httpd state=latest disable_gpg_check=no" -K# 关闭完整性校验 , 安装最新版包ansible ta -b --become-user root --become-method su -m yum -a "name=httpd state=absent" -K# 卸载包,也可以将state设为removedansible ta -b --become-user root --become-method su -m yum -a "name=nginx state=latest enablerepo=local" -K# 启用本地yum源安装最新版软件包# hostname管理主机名称ansible ta -b --become-user root --become-method su -m hostname -a "name=test" --ask-become-pass# 更改远程主机名
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Web自动化---解决登录页面随机验证码问题
- 小样本利器4. 正则化+数据增强 Mixup Family代码实现
- 从0搭建vue3组件库:自动化发布、管理版本号、生成 changelog、tag
- ansible使用临时命令通过模块来执行任务
- Ansible 批处理实战
- ansible应用之安装elk框架
- app自动化测试环境安装
- reportportal 集成 robotframework 自动化执行及结果可视化
- Android自动化测试工具调研
- 五 微软出品自动化神器【Playwright+Java】系列 之常见点击事件操作