可使用ansible-doc 查看ansible各个模块的使用方法
$ ansible-doc -l \列出所有模块
$ ansible-doc modulename \查询某个模块使用方法
$ ansible-doc -s modulename \查询某个模块使用方法 (以简洁的方式)
ansible 命令的基本语法:ansible -i inventory pattern -m module -a argument
-i 指定资产配置文件(主机清单文件)
pattern 资产清单中的组别/ip
-m 指定功能模块
-a 指定模块的参数
总结:ansible 可通过指定某功能模块对远程主机进行相关 *** 作
资产选择方式:选择一台或几台服务器
ansible寻找主机清单会先从当前目录下的hosts中查找,然后是默认主机清单文件/etc/ansible/hosts,可通过修改ansible.cfg来设置默认清单的路径
$ ansible all -m ping //选择默认资产中的所有主机 $ ansible 10.53.31.116 -m ping //从默认资产中读取某ip(10.53.31.116) $ ansible 10.53.31.116 -i /root/ansible/hosts -m ping //指定资产配置文件 $ nsible kafka -i /root/ansible/hosts -m ping //选择某资产配置文件中的kafka组 $ ansible 10.50.* -m ping //可通过*匹配到ip常用模块 1) command 和 shell 模块
都是用于在远程机子上执行命令
区别:shell 模块可以使用一些特殊符号 而 command 不行
举个栗子:在被管理的机子上执行 ls /root 可以用 shell 或 command:
$ ansible all -m shell -a "ls /root" $ ansible all -m command -a "ls /root"
但执行 ls /root | grep 'test' 因为有特殊符号管道符 | ,只能使用shell执行
$ ansible all -m shell -a "ls /root | grep test"2) script 模块
可将本机的脚本传递到被管理节点上并执行,命令格式如下
$ ansible all -m script -a "/root/ansible/test.sh"3) copy 模块
用于文件传输管理、常用参数如下:
src 源文件 dest 目标目录/文件 backup 拷贝文件前若原文件发生了变化,则对原目标文件进行备份 woner 指定所有者 group 指定所有组 mode 指定权限
举个栗子:
1.copy源文件到被管理的机子
$ ansible all -m copy -a "src=/root/ansible/test.sh dest=/tmp"
2.添加backup参数,在copy前先将目录下同名但内容不同的文件进行备份
$ ansible all -m copy -a "src=/root/ansible/test.sh dest=/tmp backup=yes"
3.指定所有者和所属组
$ ansible all -m copy -a "src=/root/ansible/copy.txt dest=/tmp owner=nobody group=nobody"
4.指定文件权限
$ ansible all -m copy -a "src=/root/ansible/copy.txt dest=/tmp m ode=0644"4)yum repository模块
用于管理远程主机上的yum源,常用参数有:
name 仓库名称(必要) description 仓库描述信息 (必要) baseurl yum存储仓库“repodata”目录所在的目录的URL(必要) file 仓库文件保存到本地的文件名 state preset --确认添加仓库文件,absent确认删除仓库文件 gpgcheck: 是否检查GPG
举个栗子:为远程主机安装epel源
$ ansible all -m yum_repository -a "name=epel baseurl='https://download.fedoraproject.org/pub/epel/$releasever/$basearch' description='EPEL YUM repo'"
删除epel源
$ ansible all -m yum_repository -a "name=epel state=absent"5) yum 模块
用于安装和卸载某软件包、常用参数如下:
name: 要安装的软件包名 state: 对软件包进行安装或卸载 *** 作,state支持的参数: - present 确认已安装但不升级 - installed 确认已经安装 - latest 确保安装且升级为最新 - absent / removed 确认已移除
举个栗子:
$ ansible all -m yum -a "name=nginx state=installed" //安装nginx $ ansible all -m yum -a "name=nginx state=removed" //卸载nginx6)systemd 模块
用于管理远程主机上的服务,相当于systemctl命令
常用参数: daemon_reload、enabled、name、state(started,stopped,restarted,reloaded)
举个栗子:重新加载systemd
$ ansible all -m systemd -a "daemon_reload=yes"
启动/重启nginx服务:
$ ansible all -m systemd -a "name=nginx state=started" //启动 $ ansible all -m systemd -a "name=nginx state=restarted" //重启 $ ansible all -m systemd -a "name=nginx state=stopped" //停止7)file 模块
用于远程主机上的文件 *** 作,常用参数如下:
group 定义属组 mode 定义权限 owner 定义属主 path 指定文件路径 recurse 递归创建文件属性 src 软/硬链接的源文件路径 dest 软/硬链接的目标文件路径 state: directory|touch|link|hard|absent:依次对应 目录|文件|软链接|硬链接|删除
举个栗子: 创建和删除文件/目录
$ ansible all -m file -a 'path=/tmp/file state=touch' 创建文件 $ ansible all -m file -a 'src=/tmp/file dest=/tmp/file_link state=link' 创建软连接 $ ansible all -m file -a "path=/tmp/file_link state=absent" 取消软连接 $ ansible all -m file -a 'path=/tmp/file state=absent' 删除文件 $ ansible all -m file -a 'path=/tmp/test state=directory' 创建目录 $ ansible all -m file -a 'path=/tmp/test state=absent' 删除目录8)cron 模块
用于管理远程主机中的计划任务,常用参数如下
name 指定任务名称,可以根据任务名称修改或删除对应的任务;搭配state使用 job 要执行的内容 state absent表示删除对应的任务 minute 指定分钟,可以设置成(0-59,*,*/2)等格式 hour 指定小时 day 指定日 month 指定月 weekday 指定周几,可以设置(0-6,*)等格式 special_time: user 指定计划任务属于哪个用户,默认管理员用户 backup backup=yes表示修改或删除对应计划任务时,会先进行备份,备份路径/tmp/crontab+随机字符 reboot|yearly|monthly|weekly|daily|hourly,都未指定时表示每分钟执行 disabled 注释计划任务,使其失效;但是一定要写全原任务的name,minute,hour,month,weekday,job,如果不一样,则是修改原计划任务内容
举个栗子:创建和删除计划任务
$ ansible all -m cron -a "name='test to ansible' job='ls /tmp' minute='*/2'" $ ansible all -m cron -a "name='test to ansible' state=absent"9)template 模块
用于将变量参数打印出来
参数:
src 指定控制端文件路径 dest 被控端文件路径 owner 文件属主 group 文件属组 mode 文件权限 backup 创建一个时间戳的备份文件
使用template模块传输一个文件并传参:
$ ansible all -m template -a "src=/root/ansible/hello.world.j2 dest=/tmp/hello.world" -e "var=world"10)unarchive 模块
用于解压缩软件包,这个模块有两种用法:
1、将压缩包在本地解压缩后传到远程主机上,这种情况下,copy=yes(默认的)
2、将远程主机上的某个压缩包解压缩到指定路径下。这种情况下,需要设置copy=no
常用参数:
src 源路径,可以是ansible主机上的路径,也可以是远程主机上的路径 dest 远程主机上的目标路径 mode 设置解压缩后的文件权限
举个例子:将ansible本机的压缩包解压到远程主机的/tmp目录下
$ ansible all -m unarchive -a "src=/root/ansible/node_exporter-1.2.2.linux-amd64.tar.gz dest=/tmp"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)