Ansible 常用模块与命令

Ansible 常用模块与命令,第1张

Ansible 常用模块与命令

可使用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"     //卸载nginx
6)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"

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5676312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存