首页
运维部署
苹果MAC系统
Kubernetes(K8S)
nginx 使用geo模块识别ip归属地做跳转
Docker
Docker部署Uptime Kuma
多媒体类
NGINX + OBS = 网页直播服务搭建
CentOS 7部署DNS服务器BIND
监控告警
prometheus(一、基础使用)
Prometheus(二、用snmp监控)
Grafana(1、部署+使用)
Grafana(2、snmp交换机仪表盘自定义)
prometheus_Alertmanager(三、报警配置_邮件)
prometheus_Alertmanager(四、企微 钉钉 告警)
prometheus_blackbox(五、黑盒监测 )
Pushgateway-客户端主动推送告警
snmp_exporter快速监控交换机
多个Prometheus实例互联
exporter自定义监控项
PC
服务器
Dell 服务器R540做raid
服务器电源供电
更换raid阵列卡
企业微信
企业微信api使用
centos7中yum安装dnsmasq内网dns
centos7部署ntopng
Syslog 日志存储
IT-数据恢复
OpenVPN
JumpServer分布式部署
Gitlab
ansible常用命令
将pem证书转换为crt和key
CentOS 7 中搭建ocserv
ocserv相关收藏
ocserv服务器配置实例
ocserv客户端无法将网络共享给其它终端
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
ansible常用命令
### 简介 ![](/media/202202/ansible002_1644808349.png) - -v(—verbose):输出详细的执行过程信息,可以得到执行过程所有信息; - -i PATH(—inventory=PATH):指定inventory(清单; 财产清单)信息,默认为/etc/ansible/hosts; - -f NUM(—forks=NUM):并发线程数,默认为5个线程; - —private-key=PRIVATE_KEY_FILE:指定密钥文件; - -m NAME,—module-name=NAME:指定执行使用的模块; - -M DIRECTORY(—module-path=DIRECTORY) :指定模块存放路径,默认为/usr/share/ansible; - -a ARGUMENTS(—args=ARGUMENTS):指定模块参数; - -u USERNAME(—user=USERNAME):指定远程主机以USERNAME运行命令; - -l subset(—limit=SUBSET):限制运行主机; 检查所有主机是否存活,执行命令如下: ``` [root@centos01 ~]# ansible all -f 5 -m ping # 调用ping模块,all表示/etc/ansible/hosts文件中的所有主机,不用创建all分组(默认存在) ``` 列出web组所有的主机列表,执行命令如下: ``` [root@centos01 ~]# ansible web --list # --list:表示列出主机列表信息 ``` 批量显示web组中的磁盘使用空间,执行命令如下: ``` [root@centos01 ~]# ansible web -m command -a "df -hT" # web关键字需要提前在/etc/ansible/hosts文件中定义组。 ``` Ansible的返回结果非常友好,一般会用三种颜色来表示执行结果: - 红色:表示执行过程出现异常; - 橘黄颜色:表示命令执行后目标有状态变化; - 绿色:表示执行成功且没有目标机器做修改; ### Ansible模块 #### 1)command模块 command模块在远程主机执行命令,不支持管道、重定向等shell的特性。常用的参数如下: chdir:在远程主机上运行命令前要提前进入的目录; creates:在命令运行时创建一个文件,如果文件已存在,则不会执行创建任务; removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务; executeable:指明运行命令的shell程序; 在所有主机上运行“ls ./”命令,运行前切换到/home目录下。操作如下: [root@centos01 ~]# ansible web -m command -a "chdir=/ ls ./" #### 2)shell模块 shell模块在远程主机执行命令,相当于调用远程主机的Shell进程,然后在该Shell下打开一个子Shell运行命令。和command模块的区别是它支持Shell特性:如管道、重定向等。 示例如下: [root@centos01 ~]# ansible web -m shell -a "echo hello world " #### 3)copy模块 copy模块用于复制指定主机文件到远程主机的指定位置。常见的参数如下: - dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,则目标也要是目录,如果目标文件已存在,会覆盖原有内容; - src:指出源文件的路径,可以使用相对路径和绝对路径,支持直接指定目录。如果源是目录,则目标也要是目录; - mode:指出复制时,目标文件的权限,可选; - owner:指出复制时,目标文件的属主,可选; - group:指出复制时目标文件的属组,可选; - content:指出复制到目标主机上的内容,不能和src一起使用,相当于复制content指明的数据到目标文件中; 示例如下: ``` [root@centos01 ~]# ansible web -m copy -a "src=/etc/hostsdest=/root/a1.hosts mode=777 owner=root group=root" # 将本机的hosts文件复制到web组中的所有主机上存放在家目录下的a1.hosts目录,权限是777,属主是root,属组是root ``` #### 4)hostname模块 hostname模块用于管理远程主机上的主机名。常用的参数如下: name:指明主机名; 示例如下: ``` [root@centos01 ~]# ansible 192.168.100.20 -m hostname -a "name=test" # 将192.168.100.20的主机名改为test,但是192.168.100.20需要敲一下bash才生效 ``` #### 5)yum模块 yum模块基于yum机制,对远程主机管理程序包。常用的参数如下: name:程序包名称,可以带上版本号。若不指明版本,则默认为最新版本; state=present|atest|absent:指明对程序包执行的操作:present表明安装程序包,latest表示安装最新版本的程序包,absent表示卸载程序包; disablerepo:在用yum安装时,临时禁用某个仓库的ID; enablerepo:在用yum安装时,临时启用某个仓库的ID; conf_file:yum运行时的配置文件,而不是使用默认的配置文件; disable_gpg_check=yes|no:是否启用完整性校验功能; 示例如下: ``` [root@centos01 ~]# ansible web -m shell -a "/usr/bin/rm -rf/etc/yum.repos.d/CentOS-*" # 批量化删除web组主机的yum源 [root@centos01 ~]# ansible web -m shell -a "/usr/bin/mount/dev/cdrom /mnt" # 批量化挂载光盘 [root@centos01 ~]# ansible web -m yum -a "name=httpdstate=present" # 批量化安装httpd程序 [root@centos01 ~]# ansible web -m shell -a "rpm -qa | grep httpd" # 批量化查看安装的httpd程序包 [root@centos01 ~]# ansible web -m shell -a "systemctl start httpd" # 批量启动服务 [root@centos01 ~]# ansible web -m shell -a "netstat -anptu | grep httpd" # 批量化监听httpd服务是否启动成功 ``` 管理端只是发送yum指令到被管理端,被管理端要存在可用的yum仓库才可以成功安装。 #### 6)service模块 service模块为用来管理远程主机上的服务的模块。常见的参数如下: - name:被管理的服务名称; - state=started|stopped|restarted:动作包含启动,关闭或重启; - enable=yes|no:表示是否设置该服务开机自启动; - runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自动启动; 示例如下: ``` [root@centos01 ~]# ansible web -m service -a "name=httpdenabled=yes state=restarted" # 设置httpd服务重新启动和开机自动启动 ``` #### 7)user模块 user模块主要用于管理远程主机上的用户账号。常见的参数如下: - name:必选参数,账号名称; - state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除;system=yes|no:是否为系统账户; - uid:用户UID; - group:用户的基本组 - groups:用户的附加组; - shell:默认使用的shell; - home:用户的家目录; - mve_home=yes|no:如果设置的家目录已经存在,是否将已存在的家目录进行移动; - pssword:用户的密码,建议使用加密后的字符串; - comment:用户的注释信息; - remore=yes|no:当state=absent时,是否要删除用户的家目录; 创建用户示例如下: ``` [root@centos01 ~]# ansible web -m user -a "name=user01system=yes uid=502 group=root groups=root shell=/etc/nologinhome=/home/user01 password=pwd@123" # 在web组的所有主机上新建一个系统用户,UID为502,属组是root,名字是user01,密码是pwd@123 ``` 解压、压缩模块(unarchive、archive模块) #### unarchive 解压模块 ``` - name: Unarchive a file that is already on the remote machine unarchive: src: /tmp/foo.zip #要解压的包 dest: /usr/local/bin #解压到目标位置 remote_src: yes #要解压的包在受控端 no #要解压的包在控制端 ``` ``` #1.解压控制端的包到受控端 [root@m01 /package]# ansible web01 -m unarchive -a 'src=/package/php.tar.gz dest=/tmp/' #2.解压受控端的包到受控端 [root@m01 /package]# ansible web03 -m unarchive -a 'src=/package/php.tar.gz dest=/tmp/ remote_src=yes' ``` archive 压缩模块 ``` EXAMPLES: - name: Compress directory /path/to/foo/ into /path/to/foo.tgz archive: path: /path/to/foo #要压缩的文件或目录 dest: /path/to/foo.tgz #压缩后的文件 format:bz2, gz, tar, xz, zip #指定打包的类型 ``` ``` #1.打包站点目录 [root@m01 /package]# ansible web01 -m archive -a 'path=/code dest=/tmp/code.tar.gz' ``` 参考:[1](https://baijiahao.baidu.com/s?id=1673800420241002267&wfr=spider&for=pc "1") [2](https://www.jianshu.com/p/0326780d05fc "2") [3](https://www.cnblogs.com/chenlifan/p/13777274.html "3")
local
2022年2月14日 18:40
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码