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"

 

posted @ 2022-11-14 23:29  Sky-wings  阅读(413)  评论(0编辑  收藏  举报