Ansible学习01-常用模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible学习01-常用模块相关的知识,希望对你有一定的参考价值。

1.command命令模块

默认模块
    [email protected]:/data/sh# ansible docker -a "hostname"
         192.168.1.124 | success | rc=0 >>
           centos-mysql01
          172.17.0.2 | success | rc=0 >>
            17466f2471ee

script模块

yum安装软件模块

[email protected]:/data/sh#ansible docker -m yum -a "name=httpd state=installed"
    name        #指定要安装的软件包名称
    state       #指定使用yum的方法
       installed,present   #安装软件包
       removed,absent      #移除软件包
       latest              #安装最新软件包 

copy文件拷贝模块

推送文件模块
 [email protected]:~#  ansible docker -m copy -a "src=/etc/passwd dest=/tmp/test.txt"
在推送覆盖远程端文件前,对被控制端已有文件进行备份,按照时间信息备份
[email protected]:~# ansible dcoker -m copy -a "src=/etc/passwd dest=/tmp/test.txt backup=yes"
直接向被控制端文件内写入数据信息,并且会覆盖被控制端文件内原有数据信息
[email protected]:~#  ansible docker -m copy -a "content=‘hz7726‘ dest=/tmp/hanye"
模块内嵌命令
 src             #推送数据的源文件信息
 dest            #推送数据的目标路径
 backup          #对推送传输过去的文件,进行备份
 content         #直接批量在被管理端文件中添加内容
 group           #将本地文件推送到被控制端,指定文件属组信息
 owner           #将本地文件推送到被控制端,指定文件属主信息
 mode            #将本地文件推送到被控制端,指定文件权限信息

file文件配置模块

[email protected]:~# ansible docker -m file -a "path=/data/sh state=directory"
[email protected]:~# ansible docker -m file -a "path=/data/sh state=touch mode=0644 owner=root group=root"
[email protected]:~# ansible docker -m file -a "src=/data/sh path=/data/hanye state=link"
模块内嵌命令
path            #指定远程主机目录或文件信息
recurse         #递归授权
state 
directory   #在创建目录
touch       #在被控制端创建文件
link        #link或hard表示创建链接文件
absent      #表示删除文件或目录
mode        #设置文件或目录权限
owner       #设置文件或目录属主信息
group       #设置文件或目录属组信息

service服务模块

[email protected]:~# ansible docker -m service -a "name=httpd state=started enabled=yes"

name        # 定义要启动服务的名称
state       # 指定服务状态
     started     #启动服务
     stopped     #停止服务
     restarted   #重启服务
     reloaded    #重载服务
 enabled         #开机自启

group组模块

[email protected]:~# ansible docker -m group -a "name=erp  gid=1008"

 name            #指定创建的组名
 gid             #指定组的gid
 state   #用户组状态
     absent      #移除被控制端主机的组
     present     #创建被控制端主机的组

user模块

#创建用户指定uid和gid,不创建家目录也不允许登陆
   [email protected]:~# ansible docker -m user -a "name=hanye  uid=1008 group=1008 shell=/sbin/nologin create_home=no"
#创建用户指定uid和gid,指定家目录和密码
    [email protected]:~# ansible docker -m user -a   "name=erp  group=erp uid=1008 password="$6$O9KDopiuPgvkrb4z$ee7/lfljSe79zQLIvDROsFM23hAJRRvVc.JoBWPGW3WbeHBQVG.IFcg1r8RppAIZ8naxckFGvOX2CIiwY6hEw0" home=/home/erp shell=/bin/bash"
        #password: 明文密码为:666666

uid             #指定用户的uid
group           #指定用户组名称
groups          #指定附加组名称
password        #给用户添加密码 #此处的密码是经过md5加密的密文
shell           #指定用户登录shell
create_home     #是否创建家目录
home       #指定家目录

cron模块

 [email protected]:~# ansible docker  -m cron -a " name=‘crontab test‘ minute=5 hour=1 job=‘sh /data/sh/init_os.sh‘ "
     等同于:#crontab test
                    5 1 * * *  sh /data/sh/init_os.sh

    minute参数:此参数用于设置计划任务中分钟设定位的值
    hour参数:此参数用于设置计划任务中小时设定位的值
    day参数:此参数用于设置计划任务中日设定位的值
    month参数:此参数用于设置计划任务中月设定位的值
    weekday参数:此参数用于设置计划任务中周几设定位的值
    user参数:此参数用于设置当前计划任务属于哪个用户
    job参数:此参数用于指定计划的任务中需要实际执行的命令或者脚本
    name参数:此参数用于设置计划任务的名称
    state参数:当计划任务有名称时,我们可以根据名称修改或删除对应的任务,当删除计划任务时,需要将 state 的值设置为 absent。

mount模块

[email protected]:~#  ansible docker -m mount -a "src=192.168.1.124:/data path=/data  fstype=nfs opts=defaults state=present"
     src: 源地址目录
     path: 挂在地址
     opts:默认属性
     state
    present     # 开机挂载,仅将挂载配置写入/etc/fstab
    mounted     # 挂载设备,并将配置写入/etc/fstab
    unmounted   # 卸载设备,不会清除/etc/fstab写入的配置
    absent      # 卸载设备,会清理/etc/fstab写入的配置

synchronize模块

 #复制目录
 [[email protected] ~]# ansible dcoker  -m synchronize -a ‘src=/tmp/hanye  dest=/data/soft/ compress=yes‘
     #远端拉去
     [[email protected] tmp]# ansible docker -m synchronize -a ‘mode=pull  src=/root/hanye dest=/data/soft/ compress=yes‘
         archive # 是否采用归档模式同步,即以源文件相同属性同步到目标地址
checksum # 是否效验
compress # 开启压缩,默认为开启
copy_links # 同步的时候是否复制连接
delete # 删除源中没有而目标存在的文件(即以推送方为主)
dest= # 目标地址
dest_port # 目标接受的端口,ansible配置文件中的 ansible_ssh_port 变量优先级高于该 dest_port 变量
dirs # 以非递归的方式传输目录
existing_only # Skip creating new files on receiver.
group # Preserve group
links # Copy symlinks as symlinks.
mode # 模式,rsync 同步的方式 PUSHPULL,默认都是推送push。如果你在使用拉取pull功能的时候,可以参考如下来实现mode=pull 更改推送模式为拉取模式
recursive # 是否递归 yes/no
rsync_opts # 使用rsync 的参数
rsync_path # 服务的路径,指定 rsync 命令来在远程服务器上运行。这个参考rsync命令的--rsync-path参数,--rsync-path=PATH # 指定远程服务器上的rsync命令所在路径信息
rsync_timeout # 指定 rsync 操作的 IP 超时时间,和rsync命令的 --timeout 参数效果一样.
set_remote_user # put [email protected] for the remote paths. If you have a custom ssh config to define the remote user for
src= # 源,同步的数据源
times # 
--exclude=.Git 忽略同步.git结尾的文件

以上是关于Ansible学习01-常用模块的主要内容,如果未能解决你的问题,请参考以下文章

ansible学习系列2-ansible常用模块使用

ansible基础学习,常用模块概述

Ansible 学习总结—— Ansible 19个常用模块使用示例

Ansible 学习总结—— Ansible 19个常用模块使用示例

二:Ansible常用模块

Ansible 学习总结—— Ansible 常用模块与 playbook 实例讲解