3 ansible常用模块命令
Ansible常用模块命令 ansible命令格式: ansible <host-pattern> [-m module_name] [-a args] [options] <host-pattern> :指定主机组或IP [-m module_name] : 指定调用模块 [-a args] [options] : 传递给模块的参数 --------- ansible vm --list-hosts # 列出执行主机列表 ansible-doc -l # 查看所有模块 (键入q退出) ansible-doc command # 查看command模块详细信息 ansible-doc -s command # 查看command模块详细用法 ansible test -m command -a 'df -h' # 对所有被控服务器使用df -h 命令 ansible web -m command -a 'useradd Tom' # 批量添加用户 1 ping #ping服务器是否能通,如: ansible all -m ping ansible vm2,vm3 -m ping ansible vm2:vm3 -m ping ansible myvm -m ping --myvm是ansible hosts文件中定义的组名 指定host组中特定的机器: ansible myvm -m ping --limit "vm3" 2 command #在远程主机上执行命令,并将结果返回本主机,hosts为定义的主机清单中的用户组 如:ansible -i hosts test -m command -a "chdir=/home/wps ls" 参数: chdir: 在执行命令前,先切换目录信息 creates: 判断一个文件是否存在,如果存在,后面命令被跳过(不执行) removes: 判断一个文件是否存在,如果存在,后面命令就执行 free_form:在使用command模块时候必须输入一个合法的linux命令 ansible vm3 -m command -a "chdir=/tmp pwd" ansible vm3 -m command -a "creates=/tmp/test.txt touch /tmp/test.txt" 3 shell #shell命令,万能模块,在目标主机执行命令 如:ansible -i hosts test -m shell -a "whoami" chdir: 在执行命令前,先切换目录信息 creates: 判断一个文件是否存在,如果存在,后面命令被跳过(不执行) removes: 判断一个文件是否存在,如果存在,后面命令就执行 free_form:在使用command模块时候必须输入一个合法的linux命令 可以识别一些特殊字符 < > | ; $<br> ansible vm3 -m shell -a "echo `hostname` >>/tmp/test.txt" 4 copy #复制文件到远程机器,批量分发文件 如:ansible hosts -m copy -a "src=/home/ansible/test.txt dest=/home/" 作用: 分发文件数据信息 从管理端 --> 被管理端 修改文件权限属性信息 移动远程主机数据信息 被管理端 -- /tmp/test.txt --- /opt/ 参数: src: 指定要推送的数据信息 dest:指定数据保存在远程主机什么目录中 mode:修改文件权限信息 owner:修改文件属主信息 group:修改文件属组信息 backup: 分发文件数据时,会对源文件进行备份 remote_src: 复制远程主机文件到其他路径,或者进行远程主机数据备份 content: 直接编辑文件内容 ansible vm3 -m copy -a "src=/etc/hosts dest=/tmp/" 传输文件时,修改文件权限: ansible vm3 -m copy -a "src=/etc/hosts dest=/tmp/ mode=777 owner=hadoop group=root" 分发文件时,将本机的文件,分发至远程主机上,并远端主机上,对源文件进行备份: ansible vm3 -m copy -a "src=/tmp/test.txt dest=/tmp/ backup=yes" 远程主机上,备份的文件名: /tmp/test.txt.57298.2022-09-18@17:03:56~ 远程主机文件进行复制备份(便于批量还原)(不会将本机的文件分发给远端主机): ansible vm3 -m copy -a "src=/tmp/test.txt dest=/tmp/test.txt.backup remote_src=yes" 批量还原: ansible vm3 -m copy -a "src=/tmp/test.txt.backup dest=/tmp/test.txt remote_src=yes" 直接编辑文件信息,并且进行批量分发: ansible vm3 -m copy -a "content="test-data" dest=/tmp/aa.txt mode=755" ansible vm3 -m copy -a "content='test-data-2' dest=/tmp/aa.txt mode=755" 5 fetch #拉取远程机器文件 ansible vm3 -m fetch -a "src=/tmp/test.txt.backup dest=/root" 将远程主机上的文件,拉取过来存放的路径是: /root/vm3/tmp/test.txt.backup 6 file #创建、修改、删除文件 作用: 修改文件权限信息 创建数据信息/删除数据信息 创建数据信息 参数:state absent -- 删除数据信息 directory -- 创建目录 file ← hard -- 创建硬链接 link -- 创建软链接 touch -- 创建文件 创建目录: ansible vm3 -m file -a "path=/tmp/test state=directory mode=0755" 创建文件:文件已经存在,不影响 ansible vm3 -m file -a "path=/tmp/test.txt state=touch" 修改文件权限信息: ansible vm3 -m file -a "path=/tmp/test.txt owner=root mode=666 group=hadoop" 创建软链接: ansible vm3 -m file -a "src=/tmp/test dest=/tmp/newtest owner=read mode=755 state=link force=yes" 删除文件: ansible vm3 -m file -a "path=/tmp/cc.txt state=absent" 7 user #管理用户账号 参数 name 创建的用户名称 uid 指定用户的uid信息 group 指定属于主要组 groups 指定属于哪个附属组 password 设置用户密码信息??? shell 指定登录方式 /bin/bash /sbin/nologin create_home: 创建用户: ansible vm3 -m user -a "name=read uid=1005 group=hadoop shell=/sbin/nologin create_home=no" ansible vm3 -m user -a "name=read123 uid=1005 group=hadoop,read append=yes shell=/bin/bash home=/home/read123 state=present" #append 表示追加,read123除了属于自己的属组外,还属于hadoop,read组 #id read 远程主机上 uid=1005(read) gid=1000(hadoop) groups=1000(hadoop) 修改用户:修改组,覆盖原来的组,而非增加 ansible vm3 -m user -a "name=read123 group=read456 append=no" 修改用户过期时间: ansible vm3 -m user -a "name=read123 expires=100000" 删除用户: ansible vm3 -m user -a "name=read123 state=absent remove=yes" 修改用户密码: ansible vm3 -m user -a "name=read shell=/bin/bash password=asdfghjk update_password=always" 8 cron #定时任务,批量添加设置定时任务信息 如:ansible hosts -m cron -a "name='crontab test' minute=5 hour=1 job='echo test'" 参数: minute hour day month weekday --- 时间参数 job -- 指定定时任务信息 name -- 添加注释信息 state -- absent 删除定时任务 present 添加定时任务 disabled -- 注释定时任务 yes 取消定时任务注释 no 配置定时任务,每隔1分钟: ansible vm3 -m cron -a "name=cron-test minute=*/1 job='sh /tmp/shell.sh >> /tmp/cron.txt 2>&1'" #Ansible: cron-test */1 * * * * sh /tmp/shell.sh >> /tmp/cron.txt 2>&1 删除定时任务: ansible vm3 -m cron -a "name=cron-test state=absent" 批量注释定时任务: ansible vm3 -m cron -a "name=cron-test state=absent disabled=yes" 9 script #将本机的脚本在被管理端的机器上运行,不会把脚本下发到远程主机上 ansible vm3 -m script -a "shell.sh" 10 yum模块:批量下载安装软件 参数: name: 指定软件名称 state: 指定动作信息 installed ansible vm3 -m yum -a "name=vsftpd state=installed" 从本地安装指定版本nginx ansible vm3 -m yum -a "name=/usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present" 从网络安装指定版本nginx ansible vm3 -m yum -a "name=http:/nginx.org/packages/centos/6/noarch/RPMS/nginx-release-cento8-6-0.el6.ngx.noarch.rpm state=present" 11 service模块:管理服务状态模块 作用:批量启动/停止服务程序 设置服务是否开机自动启动 参数: name: 定义服务名称 state: 是否启动started;停止stopped;重启restarted;平滑重启reloaded enabled:设置服务是否开机自动启动 ansible vm3 -m service -a "name=httpd state=started enabled=yes" 12 mount模块:挂载 参数: src:需要挂载存储设备信息 path: 挂载点路径信息 fstype:挂载类型信息 state:挂载操作(mounted present)/卸载操作(unmounted absent) mounted:可以实现立即挂载 永久开机自动挂载 present:永久开机自动挂载 unmounted:可以实现立即卸载 absent:可以实现立即卸载 永久卸载 ansible vm3 -m mount -a "src=192.168.1.90:/data path=/applog fstype=nfs state=mounted"