温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Ansible 常用模块

发布时间:2020-07-31 03:40:32 来源:网络 阅读:127 作者:低调的男孩 栏目:系统运维

Ansible命令

命令格式:ansible [主机] [-m 模块] [-a args]
ansible-doc -l #列出所有已安装的模块 注:按q退出
ansible-doc -s yum #-s列出yum模块描述信息和操作动作
ansible 192.168.0.106 -m command -a 'date' #指定ip执行date
ansible abc -m command -a 'date' #指定分类执行date
ansible all -m command -a 'date' #所有hosts主机执行date命令
ansible all -a 'ls /root' #如果不加-m模块,则默认运行command模块

Ansible模块

command模块

command模块在远程主机执行命令,不支持管道、重定向等shell的特性。常用的参数如下:
chdir:在远程主机上运行命令前要提前进入的目录;
creates:在命令运行时创建一个文件,如果文件已存在,则不会执行创建任务;
removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务;
executeable:指明运行命令的shell程序;

示例如下:

ansible web -m command -a 'ls /root'

Ansible 常用模块

shell模块

shell模块在远程主机执行命令,相当于调用远程主机的Shell进程,然后在该Shell下打开一个子Shell运行命令。和command模块的区别是它支持Shell特性:如管道、重定向等。

示例如下:

ansible web -m shell -a "echo hello world " #输出到屏幕
ansible web -m shell -a "echo hello world > a.txt" #输出到a.txt

Ansible 常用模块

copy模块

copy模块用于复制指定主机文件到远程主机的指定位置。常见的参数如下:
dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,则目标也要是目录,如果目标文件已存在,会覆盖原有内容;
src:指出源文件的路径,可以使用相对路径和绝对路径,支持直接指定目录。如果源是目录,则目标也要是目录;
mode:指出复制时,目标文件的权限,可选;
owner:指出复制时,目标文件的属主,可选;
group:指出复制时目标文件的属组,可选;
content:指出复制到目标主机上的内容,不能和src一起使用,相当于复制content指明的数据到目标文件中;

示例如下:

ansible web -m copy -a 'src=/root/m.txt dest=/root/ owner=root mode=640'

Ansible 常用模块
Ansible 常用模块

hostname模块

hostname模块用于管理远程主机上的主机名
常用的参数如下:
name:指明主机名;

示例如下:

ansible 192.168.0.100 -m hostname -a "name=web"

Ansible 常用模块

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:是否启用完整性校验功能;

示例如下:

ansible web -m yum -a "name=httpd" #安装httpd
ansible web -m shell -a "rpm -qa | grep httpd" #查看安装httpd

Ansible 常用模块
Ansible 常用模块

管理端只是发送yum指令到被管理端,被管理端要存在可用的yum仓库才可以成功安装。

service模块

service模块为用来管理远程主机上的服务的模块。常见的参数如下:
name:被管理的服务名称;
state=started|stopped|restarted:动作包含启动,关闭或重启;
enable=yes|no:表示是否设置该服务开机自启动;
runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自动启动;

示例如下:

ansible web -m service -a "name=httpd
enabled=yes state=restarted" #设置httpd服务重新启动和开机自动启动

Ansible 常用模块
Ansible 常用模块

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时,是否要删除用户的家目录;

示例如下:

ansible web -m user -a "name=user01 system=yes uid=52 group=root groups=root shell=/etc/nologin home=/home/user01 password=123123"
在web组的所有主机上新建一个系统用户,UID为52,
属组是root,名字是user01,密码是123123
ansible abc -m command -a 'tail -3 /etc/passwd'

Ansible 常用模块

cron模块

用于定义任务计划
两种状态(state):present表示添加(可以省略),absent表示移除。

示例如下:

ansible abc -m cron -a 'minute="*/1" job="/bin/echo hello world" name="test cron job"' #每一分钟写入“hello world”
ansible abc -a 'crontab -l' #查看计划性任务
ansible abc -m cron -a 'name="test cron job" state=absent' #移除计划任务
ansible abc -a 'crontab -l'

Ansible 常用模块

group模块

对用户组进行管理
group模块请求的是groupadd, groupdel, groupmod 三个指令。

示例如下:

ansible abc -m group -a 'name=nginx gid=306 system=yes'
ansible abc -a 'tail -2 /etc/group'

Ansible 常用模块

file模块

用于设置文件属性 (path: 是文件路径 src:定义源文件路径 )

示例如下:

ansible abc -m file -a "path=/root/test.txt state=touch" #新建文件
ansible abc -a "ls -l /root/test.txt" #查看
ansible abc -m file -a "path=/root/test.txt state=absent" #删除文件

Ansible 常用模块

ping模块

用于检测指定主机的连通性

示例如下:

ansible all -m ping

Ansible 常用模块

script模块

可以将本地脚本复制到被管理主机上进行执行。需要注意使用相对路径来指定脚本

示例如下:

echo -e 'echo "this is ansible script !" >/root/abc.sh' > /root/test.sh
chmod +x test.sh
ansible abc -m script -a 'test.sh'
ansible abc -a 'cat /root/abc.sh'

Ansible 常用模块

备注:本地脚本不要加上声明(#!/bin/bash),否则报错

Ansible 常用模块

setup模块

用于收集、查看被管理主机的facts(facts是Ansible采集被管理主机设备信息的一个功能)

示例如下:

ansible abc -m setup

Ansible 常用模块

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI