ansible常用模块(查看模块:ansible-doc XXXX)

  1. ping模块
测试主机是否是通的,用法很简单,不涉及参数:
ansible test -m ping

 

get_url 模块
该模块主要用于从hƩp、Ōp、hƩps服务器上下载文件(类似于wget),主要有如下选项:
sha256sum:下载完成后进行sha256 check;
Ɵmeout:下载超时时间,默认10s
url:下载的URL
url_password、url_username:主要用于需要用户名密码进行验证的情况
use_proxy:是事使用代理,代理需事先在环境变更中定义

 

authorized_key模块:用于向被控端推送公钥,通常用于在ansible第一次连接被控端时向其推送ansible主控端的管理公钥。

常用选项:

user: 指定将公钥推送给被控端的哪个用户

key:指定被推送的公钥的内容
path:默认情况下,会将公钥推送至被控端用户家目录的.ssh/authorized_keys文件中,可通过该配置项自定义
该路径
state:是推送还是删除,present|absent
 

查看模块示例文件:

[devops@workstation ansible]$ ansible-doc -l | grep author
authorized_key                                         Adds or removes an SSH authorized key                                                                          
aws_config_aggregation_authorization                   Manage cross-account AWS Config authorizations                                                                 
aws_ses_identity_policy                                Manages SES sending authorization policies                                                                     
[devops@workstation ansible]$ ansible-doc authorized_key 

 

file模块
 
file模块主要用于远程主机上的文件操作,file模块包含如下选项:
force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接 已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
src:要被链接的源文件的路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state:directory:如果目录不存在,创建目录
fifile:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
 
创建一个文件;
[devops@workstation ansible]$ ansible dev -m file -a 'path=/tmp/a1.txt state=touch'
servera | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "dest": "/tmp/a1.txt",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "secontext": "unconfined_u:object_r:user_tmp_t:s0",
    "size": 0,
    "state": "file",
    "uid": 0
}

查看创建好没

[devops@workstation ansible]$ ansible dev -m shell -a 'file /tmp/a1.txt'
servera | CHANGED | rc=0 >>
/tmp/a1.txt: empty

ansible dev -m file -a ‘path=/tmp/dir1 state=directory'   创建一个目录


 

copy模块
复制文件到远程主机,copy模块包含如下选项:
backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代"src",可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目 录
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机
的目标位置不存在该文件时,才复制。默认为yes
others:所有的fifile模块里的相关文件属性选项都可以在这里使用
src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它 将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则 包含目录在内的整个内容全部复制,类似于rsync。
 
例:拷贝并且复制:ansible dev -m copy -a 'src=test.sh dest=/tmp backup=yes'
        拷贝并且覆盖吧;ansible dev -m copy -a 'content="hello" dest=/tmp/'
       查看有无成功;ansible dev -m shell -a 'cat /tmp/'

 

 
yum模块
使用yum包管理器来管理软件包,其选项有:
name :要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径
state :状态(present安装,absent卸载,latest更新)
 
例;‘name=nginx stste=latext download_only=true’   代表只下载不安装
 

 

 
service模块
用于管理服务
该模块包含如下选项:
arguments:给命令行提供一些选项
enabled:是否开机启动 yes|no
name:必选项,服务名称
paƩ ern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该
模式进行查找,如果匹配到,则认为该服务依然在运行
runlevel:运行级别
sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟
state:对当前服务执行启动,停止、重启、重新加载等操作started,stopped,restarted,reloaded)
daemon_reload:针对使用systemd的系统,重新加载systemd配置,yes/no
 

 

 
 
systemd模块
daemon_reload:当服务配置文件发生变更时重载服务
name:指定服务名称
enabled:是否设置开机自启
state:管理服务状态,reloaded|restarted|started|stopped

 

 
  
cron模块
用于管理计划任务
包含如下选项:
backup:对远程主机上的原任务计划内容修改之前做备份
cron_fifile:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划
day:日(1-31,,/2,……)
hour:小时(0-23,,/2,……)
minute:分钟(0-59,,/2,……)
month:月(1-12,,/2,……)
weekday:周(0-7,*,……)
job:要执行的任务,依赖于state=present
name:该任务的描述
special_Ɵme:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly
state:确认该任务计划是创建还是删除
user:以哪个用户的身份执行
 
例:(同步时间)ansible losthost -m cron -a ' name="sync time" minute="*/30" job="ntpdate ntp.aliyun.com" '   只写分钟是因为对其他没要求,job写任务
 

 

 
 
group模块
goup模块请求的是groupadd, groupdel, groupmod 三个指令。
gid:指定组id
name:指定组名
state:创建还是删除组,选项:present|absentsystem:
system:是否将该组创建为系统组,默认为no
 
例:
创建一个组,叫dba,默认是系统组
ansible dev -m group -a 'name=dba system=yes state=present'  
 

 

 
user模块
user模块是请求的是useradd, userdel, usermod三个指令
home:指定用户的家目录,需要与createhome配合使用
groups:指定用户的附加组
group:指定用户属组
uid:指定用的uid
password:指定用户的密码
name:指定用户名
createhome:是否创建家目录 yes|no
system:是否为系统用户
comment:定义用户描述信息
remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r
state:是创建还是删除
shell:指定用户的shell环境
 
例;
给指定用户配密钥对 
先检查一下root用户有无密钥对  ls -a ~/.ssh
      ansible localhost  -m user -a 'name=root generat_ssh_key=yes ssh_key_bite=2048(长度)
 ssh_key_file=".ssh/id_rsa" '
创建一个用户叫db1 属于dba组 系统组 
ansible dev -m user -a 'name=db1 group=dba system=yes state=present'
删除用户
ansible dec -m user -a 'name=db1 remove=yes state=absent'

 

 
 
 
filesystem模块(格式化设备)
在块设备上创建文件系统
常用选项:
dev:目标块设备
force:在一个已有文件系统的设备上强制创建
fstype:文件系统的类型
opts:传递给mkfs命令的选项
 

 

 
mount模块
配置挂载点
选项:
boot:是否开机自动挂载
fstype:必选项,挂载文件的类型
name:必选项,挂载点
opts:传递给mount命令的参数
src:必选项,要挂载的文件
state:必选项
present:只处理fstab中的配置
absent:删除挂载点
mounted:自动创建挂载点并挂载之
umounted:卸载

 

 
unarchive模块
用于解压文件,模块包含如下选项:
remote_src:如果为yes,则文件会从master端复制到目标端。否则会直接尝试从目标端查找文件。默认为yes。
creates:指定一个文件名,当该文件存在时,则解压指令不执行
dest:远程主机上的一个路径,即文件解压的路径
group:解压后的目录或文件的属组
list_fifiles:如果为yes,则会列出压缩包里的文件,默认为no,2.0版本新增的选项
mode:解决后文件的权限
src:如果copy为yes,则需要指定压缩文件的源路径
owner:解压后文件或目录的属主
 
例:
首先打包文件
tar  czf  test1.tar.gz  test1.yml text.sh     把test1.yml和 text.sh 打包放进新建的test1.tar.gz 里面
解压
ansible dev -m unarchive -a 'src=test1.tar.gz     dest=/opt' 把test1.tar.gz 解压到/opt下面
查看
ansible dev -m shell -a 'ls /opt'
 
 
 
 
 

 


版权声明:本文为m0_58163836原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。