zoukankan      html  css  js  c++  java
  • Ansible模块

    Ansible基础模块详解

    Ansible自动化软件的核心功能就在于其众多的模块,可以说学习Ansible就是学习模块的使用,剩余的是对Ansible剧本的编写的熟练度。

    Command模块

    该模块作用:在远程节点上执行一个命令

    选项参数 选项说明
    chdir 在执行命令前,通过cd命令进入指定目录
    create 定义一个文件是否存在,若不存在,则运行相应命令,存在则跳过
    free_form 参数信息中可以输入任何系统命令,实现远程管理
    removes 定义一个文件是否存在,如果存在,则运行相应命令,不存在则跳过

    command模块是ansible基础命令模块,可以不用指定,其次要注意的是

      * 使用command模块执行远程命令,命令不得用变量,不得出现特殊符号,否则无法识别,需要则使用shell模块实现。

    【command案例】

      【获取所有被管理机器负载信息】

    # 最简写法,uptime可以换成其他任意linux命令,注意不得携带管道符、重定向等符号
    [root@m01 ~]# ansible chaoge -a 'uptime'
    192.168.178.111 | CHANGED | rc=0 >>
     14:53:50 up  4:16,  2 users,  load average: 0.00, 0.01, 0.05
    192.168.178.110 | CHANGED | rc=0 >>
     14:53:50 up 1 day,  7:06,  3 users,  load average: 0.01, 0.03, 0.05
    

      【切换到/tmp目录,然后输出当前目录】

    [root@m01 ~]# ansible chaoge -a "pwd chdir=/tmp"
    192.168.178.110 | CHANGED | rc=0 >>
    /tmp
    192.168.178.111 | CHANGED | rc=0 >>
    /tmp
    

      【command模块的参数creates实践】

    # 不存在则执行动作
    [root@m01 ~]# ansible chaoge -a "pwd creates=/chaoge"
    192.168.178.111 | CHANGED | rc=0 >>
    /root
    192.168.178.110 | CHANGED | rc=0 >>
    /root
    
    # 反之,存在则跳过
    [root@m01 ~]# ansible chaoge -a "pwd creates=/etc"
    192.168.178.110 | SUCCESS | rc=0 >>
    skipped, since /etc exists
    192.168.178.111 | SUCCESS | rc=0 >>
    skipped, since /etc exists
    

      【removes实践】

    [root@m01 ~]# ansible chaoge -a "ls /opt  removes=/chaoge"
    192.168.178.110 | SUCCESS | rc=0 >>
    skipped, since /chaoge does not exist
    192.168.178.111 | SUCCESS | rc=0 >>
    skipped, since /chaoge does not exist
    [root@m01 ~]#
    [root@m01 ~]#
    [root@m01 ~]# ansible chaoge -a "ls /opt  removes=/opt"
    192.168.178.111 | CHANGED | rc=0 >>
    alltmp.tgz
    heihei
    heiheihei
    Python-3.6.2
    Python-3.6.2.tgz
    tmp
    tngx232
    192.168.178.110 | CHANGED | rc=0 >>
    我是备份服务器上的资料.txt
    

      【warn参数】

    [root@m01 ~]# ansible chaoge -a "chmod 000 /etc/hosts"
    [WARNING]: Consider using the file module with mode rather than running 'chmod'.  If you need to use command because file is
    insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this
    message.
    192.168.178.110 | CHANGED | rc=0 >>
    
    192.168.178.111 | CHANGED | rc=0 >>
    
    [root@m01 ~]# ansible chaoge -a "chmod 000 /etc/hosts warn=False"
    192.168.178.110 | CHANGED | rc=0 >>
    
    192.168.178.111 | CHANGED | rc=0 >>
    

      

    shell模块案例

      【批量查询sshd进程】

    [root@m01 ~]# ansible chaoge -m shell -a "ps -ef|grep sshd |grep -v grep"
    192.168.178.110 | CHANGED | rc=0 >>
    root        989      1  0 3月16 ?       00:00:00 /usr/sbin/sshd -D
    root       2926    989  0 10:27 ?        00:00:00 sshd: root@pts/0
    root       4062    989  2 15:17 ?        00:00:00 sshd: root@pts/1
    192.168.178.111 | CHANGED | rc=0 >>
    root       1011      1  0 10:37 ?        00:00:00 /usr/sbin/sshd -D
    root       1271   1011  0 10:37 ?        00:00:00 sshd: root@pts/0
    root       2352   1011  3 15:17 ?        00:00:00 sshd: root@pts/1
    

      【批量执行远程脚本】

    注意的是,该脚本,必须在客户端机器上存在

    通过一条命令,做如下事情

      1. 创建文件夹

      2. 生成sh脚本文件

      3. 赋予脚本可执行权限

      4. 执行脚本

      5. 忽略warning信息

    [root@m01 ~]# ansible chaoge -m shell -a "mkdir -p /server/scripts/;echo 'hostname' > /server/scripts/hostname.sh;chmod +x /server/scripts/hostname.sh;/usr/bin/bash /server/scripts/hostname.sh warn=False"
    192.168.178.110 | CHANGED | rc=0 >>
    rsync01
    192.168.178.111 | CHANGED | rc=0 >>
    nfs01
    

      

    Script模块

    模块功能:把本地脚本传输到远程节点上并运行脚本

    比起shell模块,script模块功能更强大,本地有一份脚本,就可以在所有机器上运行。

    script模块的功能参数

    选项参数 选项说明
    create 定义一个文件是否存在,若不存在,则运行相应命令,存在则跳过
    free_form 参数信息中可以输入任何系统命令,实现远程管理
    removes 定义一个文件是否存在,如果存在,则运行相应命令,如果不存在则跳过

    批量执行远程脚本

    1. 在管理节点m01创建脚本

    # echo -e 参数,开启转义符功能
    [root@m01 ~]# echo -e "pwd
    hostname" > /server/scripts/pwd.sh
    [root@m01 ~]# cat /server/scripts/pwd.sh
    pwd
    hostname
    
    [root@m01 ~]# chmod +x /server/scripts/pwd.sh
    

    2. 批量在所有客户端机器运行脚本

    [root@m01 ~]# ansible chaoge -m script -a "/server/scripts/pwd.sh"
    192.168.178.111 | CHANGED => {
        "changed": true,
        "rc": 0,
        "stderr": "Shared connection to 192.168.178.111 closed.
    ",
        "stderr_lines": [
            "Shared connection to 192.168.178.111 closed."
        ],
        "stdout": "/root
    nfs01
    ",
        "stdout_lines": [
            "/root",
            "nfs01"
        ]
    }
    192.168.178.110 | CHANGED => {
        "changed": true,
        "rc": 0,
        "stderr": "Shared connection to 192.168.178.110 closed.
    ",
        "stderr_lines": [
            "Shared connection to 192.168.178.110 closed."
        ],
        "stdout": "/root
    rsync01
    ",
        "stdout_lines": [
            "/root",
            "rsync01"
        ]
    }
    

      利用script模块批量让所有被管控机器执行脚本,该脚本不用在远程主机上存在

    Copy模块

    该模块功能,复制文件到远程主机

    copy模块重要功能参数

    参数名 是否必选 默认值 选项 说明
    src no     用于定位ansible执行的机器上的文件,需要绝对路径,如果拷贝的是文件夹,那么文件夹会整体拷贝,具体在于是否最后加上‘/’
    content no     用来代替src,用于将指定文件的内容,拷贝到远程文件内
    dest yes     用于定位远程节点上的文件,需要绝对路径,如果src指向的是文件夹,这个参数也必须是指向文件夹
    backup no no yes/no 备份远程节点上的原始文件,在拷贝之前,如果发生什么意外,原始文件还能使用。
    directory_mode no     这个参数只能用于拷贝文件夹时候,这个设定后,文件夹内新建的文件会被拷贝,而老旧的不会被拷贝。
    follow no no yes/no 当拷贝的文件夹内有link存在的时候,那么拷贝过去的也会有link
    force no yes yes/no 默认为yes,会覆盖远程的内容不一样的文件,如果是no,就不会拷贝文件,如果远程有这个文件。
    group no     设定一个群组拥有拷贝到远程节点的文件权限
    mode no     等用于chmod,参数可以为“u+rwx or u=rw,g=r,o=r”
    owner no     设定一个用户拥有拷贝到远程节点的文件权限

    【批量远程复制文件】

    1.先批量在客户端机器,创建一个普通用户、用户组
    [root@m01 ~]# ansible chaoge -a "useradd chaoge"
    192.168.178.110 | CHANGED | rc=0 >>
    
    192.168.178.111 | CHANGED | rc=0 >>
    
    2.批量拷贝文件,发送至客户端节点
    [root@m01 ~]# ansible chaoge -m copy -a "src=/etc/passwd dest=/tmp/chaoge.pwd owner=chaoge group=chaoge mode=0755"
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "checksum": "d937f489e461c91b5602fe6f1d4c94c2bfb8bc2c",
        "dest": "/tmp/chaoge.pwd",
        "gid": 1006,
        "group": "chaoge",
        "mode": "0755",
        "owner": "chaoge",
        "path": "/tmp/chaoge.pwd",
        "size": 882,
        "state": "file",
        "uid": 1006
    }
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "checksum": "d937f489e461c91b5602fe6f1d4c94c2bfb8bc2c",
        "dest": "/tmp/chaoge.pwd",
        "gid": 1001,
        "group": "chaoge",
        "mode": "0755",
        "owner": "chaoge",
        "path": "/tmp/chaoge.pwd",
        "size": 882,
        "state": "file",
        "uid": 1001
    }
    
    
    3.远程批量查看远程节点机器的文件信息
    [root@m01 ~]# ansible chaoge -a "ls -l /tmp/chaoge.pwd"
    192.168.178.110 | CHANGED | rc=0 >>
    -rwxr-xr-x 1 chaoge chaoge 882 3月  17 15:58 /tmp/chaoge.pwd
    192.168.178.111 | CHANGED | rc=0 >>
    -rwxr-xr-x 1 chaoge chaoge 882 3月  17 15:58 /tmp/chaoge.pwd
    

    【远程批量复制文件,备份,追加内容】

    [root@m01 ~]# ansible chaoge -m copy -a "content='Hello,my name is chaoge' dest=/tmp/chaoge.txt backup=yes"
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "checksum": "ff01bb3c925b0d7bb8a9862405b8587d9ef32e7c",
        "dest": "/tmp/chaoge.txt",
        "gid": 0,
        "group": "root",
        "md5sum": "16519058efb06c433fd4e3a541661e82",
        "mode": "0644",
        "owner": "root",
        "size": 23,
        "src": "/root/.ansible/tmp/ansible-tmp-1584432573.22-170647904364949/source",
        "state": "file",
        "uid": 0
    }
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "backup_file": "/tmp/chaoge.txt.3517.2020-03-17@16:09:34~",
        "changed": true,
        "checksum": "ff01bb3c925b0d7bb8a9862405b8587d9ef32e7c",
        "dest": "/tmp/chaoge.txt",
        "gid": 0,
        "group": "root",
        "md5sum": "16519058efb06c433fd4e3a541661e82",
        "mode": "0644",
        "owner": "root",
        "size": 23,
        "src": "/root/.ansible/tmp/ansible-tmp-1584432573.23-1067849199582/source",
        "state": "file",
        "uid": 0
    }
    

      上述命令含义是:

    批量对服务器文件拷贝操作,把content参数定义的内容,写入到chaoge.txt文件中,并且
    对chaoge.txt旧文件内容备份

    file模块

    file模块作用是创建,以及设置修改文件和目录的属性

    file模块可以帮助我们完成一些对文件的基本操作,比如,创建文件或目录、删除文件或目
    录、修改文件权限等
    
    
    
    此处我们介绍一些file模块的常用参数,然后再给出对应示例。
    
    path参数 :必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest
    参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也
    可以。
    
    state参数 :此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远
    程主机中创建一个目录的时候,我们需要使用path参数指定对应的目录路径,假设,我想要
    在远程主机上创建/testdir/a/b目录,那么我则需要设置path=/testdir/a/b,但是,我们
    无法从"/testdir/a/b"这个路径看出b是一个文件还是一个目录,ansible也同样无法单单从
    一个字符串就知道你要创建文件还是目录,所以,我们需要通过state参数进行说明,当我
    们想要创建的/testdir/a/b是一个目录时,需要将state的值设置为directory,"directory"为目录之意,当它与path结合,ansible就能知道我们要操作的目
    标是一个目录,同理,当我们想要操作的/testdir/a/b是一个文件时,则需要将state的值
    设置为touch,当我们想要创建软链接文件时,需将state设置为link,想要创建硬链接文件
    时,需要将state设置为hard,当我们想要删除一个文件时(删除时不用区分目标是文件、
    目录、还是链接),则需要将state的值设置为absent,"absent"为缺席之意,当我们想让
    操作的目标"缺席"时,就表示我们想要删除目标。
    
    src参数 :当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,
    我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。
    
    force参数  :  当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,
    表示强制创建链接文件,不过强制创建链接文件分为两种情况,情况一:当你要创建的链接
    文件指向的源文件并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当你要
    创建链接文件的目录中已经存在与链接文件同名的文件时,将force设置为yes,回将同名文
    件覆盖为链接文件,相当于删除同名文件,创建链接文件。情况三:当你要创建链接文件的
    目录中已经存在与链接文件同名的文件,并且链接文件指向的源文件也不存在,这时会强制
    替换同名文件为链接文件。
    
    owner参数 :用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则
    会报错。
    
    group参数 :用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报
    错。
    
    mode参数:用于指定被操作文件的权限,比如,如果想要将文件权限设置为"rw-r-x---",
    则可以使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要
    设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700,很方便吧。
    
    recurse参数:当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件
    的属性。
    

      【远程创建文件夹】

    [root@m01 ~]# ansible chaoge -m file -a "dest=/tmp/chaoge_dir state=directory"
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "gid": 0,
        "group": "root",
        "mode": "0755",
        "owner": "root",
        "path": "/tmp/chaoge_dir",
        "size": 6,
        "state": "directory",
        "uid": 0
    }
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "gid": 0,
        "group": "root",
        "mode": "0755",
        "owner": "root",
        "path": "/tmp/chaoge_dir",
        "size": 6,
        "state": "directory",
        "uid": 0
    }
    
    2.远程检查文件夹是否生成
    [root@m01 ~]# ansible chaoge -m shell -a "ls -ld /tmp/chaoge_*"
    192.168.178.110 | CHANGED | rc=0 >>
    drwxr-xr-x 2 root root 6 3月  17 16:25 /tmp/chaoge_dir
    192.168.178.111 | CHANGED | rc=0 >>
    drwxr-xr-x 2 root root 6 3月  17 16:25 /tmp/chaoge_dir
    

      【远程批量生成文件】

    [root@m01 ~]# ansible chaoge -m file -a "dest=/tmp/chaoge_666 state=touch owner=chaoge group=chaoge mode=777"
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "dest": "/tmp/chaoge_666",
        "gid": 1001,
        "group": "chaoge",
        "mode": "0777",
        "owner": "chaoge",
        "size": 0,
        "state": "file",
        "uid": 1001
    }
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "dest": "/tmp/chaoge_666",
        "gid": 1006,
        "group": "chaoge",
        "mode": "0777",
        "owner": "chaoge",
        "size": 0,
        "state": "file",
        "uid": 1006
    }
    
    2.远程批量检查文件
    [root@m01 ~]# ansible chaoge -m shell -a "ls -l /tmp/chaoge_666"
    192.168.178.110 | CHANGED | rc=0 >>
    -rwxrwxrwx 1 chaoge chaoge 0 3月  17 16:31 /tmp/chaoge_666
    192.168.178.111 | CHANGED | rc=0 >>
    -rwxrwxrwx 1 chaoge chaoge 0 3月  17 16:31 /tmp/chaoge_666
    

      【远程创建软连接文件】

    [root@m01 ~]# ansible chaoge -m file -a "src=/etc/hosts dest=/tmp/hosts_link state=link"
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "dest": "/tmp/hosts_link",
        "gid": 0,
        "group": "root",
        "mode": "0777",
        "owner": "root",
        "size": 10,
        "src": "/etc/hosts",
        "state": "link",
        "uid": 0
    }
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "dest": "/tmp/hosts_link",
        "gid": 0,
        "group": "root",
        "mode": "0777",
        "owner": "root",
        "size": 10,
        "src": "/etc/hosts",
        "state": "link",
        "uid": 0
    }
    
    2.远程批量检查软连接文件属性
    [root@m01 ~]# ansible chaoge -a "ls -l /tmp/hosts_link"
    192.168.178.110 | CHANGED | rc=0 >>
    lrwxrwxrwx 1 root root 10 3月  17 16:34 /tmp/hosts_link -> /etc/hosts
    192.168.178.111 | CHANGED | rc=0 >>
    lrwxrwxrwx 1 root root 10 3月  17 16:34 /tmp/hosts_link -> /etc/hosts
    

      

    yum模块

    yum包管理模块,功能参数如下

    参数名 是否必选 默认值 选项值 参数说明
    conf_file no     设定远程yum执行时所依赖的yum配置文件
    disable_gpg_check no no yes/no 在安装包前检查包,只会影响state参数为present或者latest的时候
    list no     只能由ansible调用,不支持playbook。
    name yes     你需要安装的包的名字,name=python=2.7安装在python2.7
    state no present present/latest/absent 用于安装包最终状态,present/lastest用于安装包,absent用于remove安装包
    update_cache no no yes/no 用于安装包前执行更新list,只会影响state参数为present/latest的时候

     【yum模块批量安装nginx】

    1.检查客户端机器是否安装了nginx
    [root@m01 ~]# ansible chaoge -m shell -a "rpm -qa nginx warn=false"
    192.168.178.110 | CHANGED | rc=0 >>
    
    192.168.178.111 | CHANGED | rc=0 >>
    
    
    2.通过yum模块批量安装软件
    [root@m01 ~]# ansible chaoge -m yum -a "name=nginx state=installed"
    
    其实yum模块,就是远程在节点机器上执行,可以快速登录到节点机器,检查进程
    /usr/bin/python /usr/bin/yum -d 2 -y install nginx
    
    3.远程检查ansible命令执行结果
    [root@m01 ~]# ansible chaoge -m shell -a "rpm -qa nginx warn=false"
    192.168.178.110 | CHANGED | rc=0 >>
    nginx-1.16.1-1.el7.x86_64
    192.168.178.111 | CHANGED | rc=0 >>
    nginx-1.16.1-1.el7.x86_64
    
    4.远程删除软件包
    ansible chaoge -m yum -a "name=nginx state=absent"
    
    5.升级nginx软件包
    ansible chaoge -m yum -a "state=latest name=nginx"
    
    6.升级系统所有软件包,排除某些服务
    ansible chaoge -m yum -a "state=latest name='*' exclude='nginx'"
    

      

    service/systemd模块

    该模块作用时针对yum包管理

    如果使用systemctl 管理程序的话,可以使用systemd模块,systemctl 可以 控制程序启/
    停,reload,开机启动,观察程序状态(status)等,掌握使用后管理就更方便了
    
    主要参数
    daemon_reload:在执行任何其他操作之前运行守护进程重新加载,以确保systemd已经读
    取其他更改
    enabled:服务是否开机自动启动yes|no。enabled和state至少要有一个被定义
    masked:是否将服务设置为masked状态,被mask的服务是无法启动的
    name:必选项,服务名称
    no_block(2.3后新增):不要同步等待操作请求完成
    state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)
    user:使用服务的调用者运行systemctl,而不是系统的服务管理者
    

      【管理crond定时任务服务】

    1.一条命令快速检查 所有客户端机器,crond服务是否启动
    [root@m01 ~]# ansible chaoge -m shell -a "systemctl status crond" |grep Active
       Active: active (running) since 二 2020-03-17 10:27:39 CST; 6h ago
       Active: active (running) since 二 2020-03-17 10:37:34 CST; 6h ago
    
    2.检查所有crond服务是否开机自启
    [root@m01 ~]# ansible chaoge -m shell -a "systemctl list-unit-files" | grep crond
    crond.service                                 enabled
    crond.service                                 enabled
    
    3.systemd管理服务
    ansible chaoge -m systemd -a "name=crond state=stopped"
    ansible chaoge -m systemd -a "name=crond state=started"
    ansible chaoge -m systemd -a "name=crond state=restarted"
    ansible chaoge -m systemd -a "name=crond state=reloaded"
    

      【管理nginx服务,启动nginx,添加至开机自启】

    1.命令如下
    [root@m01 ~]# ansible chaoge -m systemd -a "name=nginx enabled=yes state=started"
    
    停止服务
    ansible chaoge -m systemd -a "name=nginx stata=stoped"
    
    重启
    ansible chaoge -m systemd -a "name=nginx state=restarted"
    
    重载
    ansible chaoge -m systemd -a "name=nginx state=reloaded"
    
    2.检查命令执行结果
    服务器是否启动
    [root@m01 ~]# ansible chaoge -m shell -a "systemctl status nginx" |grep Active
       Active: active (running) since 二 2020-03-17 17:14:35 CST; 4min 20s ago
       Active: active (running) since 二 2020-03-17 17:13:14 CST; 5min ago
    
    服务是否开机自启
    [root@m01 ~]# ansible chaoge -m shell -a "systemctl list-unit-files" | grep nginx
    nginx.service                                 enabled
    nginx.service                                 enabled
    

      

    cron模块、

    cron模块作用是管理定时任务的条目

     【对比系统crontab和ansible模块cron】

     

     【ansible批量添加定时任务】

    1.批量添加定时任务
    [root@m01 ~]# ansible chaoge -m cron -a "name=chaoge_cron job='/usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1' minute=*/5"
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "envs": [],
        "jobs": [
            "chaoge_cron"
        ]
    }
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "envs": [],
        "jobs": [
            "chaoge_cron"
        ]
    }
    
    
    
    2.批量检查定时任务
    [root@m01 ~]# ansible chaoge -a "crontab -l"
    192.168.178.110 | CHANGED | rc=0 >>
    #Ansible: chaoge_cron
    */5 * * * * /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1
    192.168.178.111 | CHANGED | rc=0 >>
    #Ansible: chaoge_cron
    */5 * * * * /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1
    
    
    
    3.若要删除定时任务,可以:
    [root@m01 ~]# ansible chaoge -m cron -a "name='chaoge_cron' state=absent"
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "envs": [],
        "jobs": []
    }
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "envs": [],
        "jobs": []
    }
    
    4.验证定时任务是否已被删除
    [root@m01 ~]# ansible chaoge -a "crontab -l"
    192.168.178.111 | CHANGED | rc=0 >>
    
    192.168.178.110 | CHANGED | rc=0 >>
    

      

    User模块

    user模块管理系统用户

    模块参数 参数描述
    create_home 创建家目录,设置no则不创建家目录
    group 创建用户组
    name 创建用户的名字
    password 创建用户的密码
    uid 创建用户的uid
    shell 指定用户所用的shell解释器

    【创建test用户】

    [root@m01 ~]# ansible chaoge -m user -a "name=test uid=8888 shell=/sbin/nologin create_home=no"
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "comment": "",
        "create_home": false,
        "group": 8888,
        "home": "/home/test",
        "name": "test",
        "shell": "/sbin/nologin",
        "state": "present",
        "system": false,
        "uid": 8888
    }
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "comment": "",
        "create_home": false,
        "group": 8888,
        "home": "/home/test",
        "name": "test",
        "shell": "/sbin/nologin",
        "state": "present",
        "system": false,
        "uid": 8888
    }
    
    2.验证创建是否成功
    [root@m01 ~]# ansible chaoge -m shell -a "tail -1 /etc/passwd"
    192.168.178.110 | CHANGED | rc=0 >>
    test:x:8888:8888::/home/test:/sbin/nologin
    192.168.178.111 | CHANGED | rc=0 >>
    test:x:8888:8888::/home/test:/sbin/nologin
    
    [root@m01 ~]# ansible chaoge -m shell -a "ls /home"
    192.168.178.110 | CHANGED | rc=0 >>
    chaoge
    192.168.178.111 | CHANGED | rc=0 >>
    caixukun
    chaoge
    haoge
    pyyu
    wwwchao
    yuchao
    

      

    group模块

    管理系统用户组

    模块参数    参数描述
    name    创建指定的组名
    gid        组的GID
    state        absent,移除远程主机的组
                    present,创建远端主机的组
    

      

    [root@m01 ~]# ansible chaoge -m group -a "name=cc  gid=9999"
    192.168.178.110 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "gid": 9999,
        "name": "cc",
        "state": "present",
        "system": false
    }
    192.168.178.111 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": true,
        "gid": 9999,
        "name": "cc",
        "state": "present",
        "system": false
    }
    
    [root@m01 ~]# ansible chaoge -m shell -a "tail -1 /etc/group"
    192.168.178.111 | CHANGED | rc=0 >>
    cc:x:9999:
    192.168.178.110 | CHANGED | rc=0 >>
    cc:x:9999:
    

      

  • 相关阅读:
    有效挽回流失用户的数据分析及策略:需多一点套路才能得人心
    有效挽回流失用户的数据分析及策略:需多一点套路才能得人心
    大数据时代管理会计的创新
    大数据时代管理会计的创新
    人们应该如何理性认识大数据
    人们应该如何理性认识大数据
    “忘掉大数据”之“法”:大数据修炼要五讲四美
    “忘掉大数据”之“法”:大数据修炼要五讲四美
    小白学数据分析--留存率使用的窘境
    大数据时代的风险管理
  • 原文地址:https://www.cnblogs.com/abc1234567/p/14199739.html
Copyright © 2011-2022 走看看