zoukankan      html  css  js  c++  java
  • 2.ansible 命令模块 command shell script 文件模块 copy fetch file

    ansible-doc -l 查看模块使用说明
    ansible-doc yum 显示模块举例说明
    ansible-doc -s yum 查看指定模块详细说明

    ansible命令语法:
    ansible 主机信息(IP 主机组 all) -m (模块名)command -a "操作动作"
    01 02 03 04 05 06
    绿色 操作执行成功 没有对远程主机做任何改动
    黄色 操作执行成功 对远程主机数据信息有改动
    红色 操作失败
    粉色 警告
    蓝色 显示命令操作执行过程

    command 在目标主机执行命令 默认模块

    ansible all -m command -a "hostname"
    参数:
    chdir 切换目录

    ansible all -m command -a "chdir=/tmp  pwd"
    

    creates 判断文件是否存在 如果存在就跳过后面的操作

    ansible 192.168.1.214 -m command -a "creates=/var/run/rsyncd.pid systemctl start rsyncd"
    

    removes 判断文件是否不存在 不存在就跳过后面的操作

    ansible 192.168.1.214 -m command -a "removes=/var/run/rsyncd.pid echo 11"
    192.168.1.214 | CHANGED | rc=0 >>
    11
    

    shell 万能模块

    ansible all -m shell  -a "hostname && awk 'NR==3{print $1}' /etc/resolv.conf"
    

    参数:
    chdir 切换目录

    ansible all -m shell -a "chdir=/tmp  pwd"
    

    creates 判断文件是否存在 如果存在就跳过后面的操作

    ansible 192.168.1.214 -m shell -a "creates=/var/run/rsyncd.pid systemctl start rsyncd"
    

    removes 判断文件是否不存在 不存在就跳过后面的操作

    ansible 192.168.1.214 -m shell -a "removes=/var/run/rsyncd.pid echo 11"
    192.168.1.214 | CHANGED | rc=0 >>
    11
    

    scripts 命令模块 执行脚本

    第一个历程:编写脚本

    [root@m01 scripts]# cat yum.sh 
    #!/bin/bash
    yum install -y iftop
    

    第二个历程:运行脚本

    ansible backup -m script -a "/server/scripts/yum.sh"
    

    copy 批量分发文件

    作用:
    1 分发文件数据信息 从管理端分发到被管理端
    2 修改文件权限及属性
    3 移动远程主机数据
    src: 指定要推送的数据信息
    dest: 指定保存文件的路径

    ansible all -m copy -a 'src=/etc/hosts dest=/tmp'
    

    owner: 文件属组信息
    group: 文件属组信息
    mode: 文件权限

    ansible all -m copy -a 'src=/etc/hosts dest=/tmp owner=root group=root mode=600'
    

    remote_src: 远程主机复制一份数据备份 cp /etc/hosts /tmp/hosts.bak

    备份
    ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts.bak remote_src=yes'
    还原
    ansible all -m copy -a 'src=/tmp/hosts.bak dest=/etc/hosts remote_src=yes'
    

    content: 直接编辑信息 并进行批量分发

     ansible backupclient -m copy -a "content='oldboy123' dest=/etc/rsync.password mode=600"
    

    fetch 批量拉取数据

    ansible 192.168.1.203 -m fetch -a 'src=/etc/hosts dest=/tmp'
    [root@rstx-53 scripts]# tree /tmp/192.168.1.203/
    /tmp/192.168.1.203/
    └── etc
        └── hosts
    

    src: 源文件
    dest: 存放到本地的路径

    file 修改远程主机文件权限

    作用:
    1 修改远程主机文件权限信息
    2 创建远程主机数据信息/删除远程主机数据信息
    path: 远程主机文件路径
    owner: 属主
    group: 属组
    mode: 权限

    ansible 192.168.1.203 -m file -a 'path=/tmp/hosts mode=777'
    

    特殊用法
    state
    absent 删除数据信息
    touch 创建文件
    directory 创建目录
    hard 硬链接
    link 软连接
    创建文件:

    [root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/root/ansible.txt state=touch"
    192.168.1.201 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "dest": "/root/ansible.txt", 
        "gid": 0, 
        "group": "root", 
        "mode": "0644", 
        "owner": "root", 
        "size": 0, 
        "state": "file", 
        "uid": 0
    }
    

    创建目录:

    [root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/root/ansible state=directory"
    192.168.1.201 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "gid": 0, 
        "group": "root", 
        "mode": "0755", 
        "owner": "root", 
        "path": "/root/ansible", 
        "size": 6, 
        "state": "directory", 
        "uid": 0
    }
    [root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/root/ansible state=absent"
    192.168.1.201 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "path": "/root/ansible", 
        "state": "absent"
    }
    

    创建链接文件:软连接/硬链接
    创建硬链接:

    [root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "src=/etc/hosts path=/tmp/hosts  state=hard"
    192.168.1.201 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "dest": "/tmp/hosts", 
        "gid": 0, 
        "group": "root", 
        "mode": "0644", 
        "owner": "root", 
        "size": 158, 
        "src": "/etc/hosts", 
        "state": "hard", 
        "uid": 0
    }
    

    创建软链接

    [root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "src=/etc/hosts path=/tmp/hosts_link   state=link"
    192.168.1.201 | 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
    }
    

    删除文件数据:

    [root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/tmp/hosts   state=absent"
    192.168.1.201 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "path": "/tmp/hosts", 
        "state": "absent"
    }
    
  • 相关阅读:
    nginx使用https协议
    DUBBO入门
    Zookeeper学习笔记4
    maven dependency:tree中反斜杠的含义
    CATALINA_BASE与CATALINA_HOME的区别
    log4j打印抛出异常时堆栈内容
    如何获取e.printStackTrace()的内容
    springboot+RabbitMQ 问题 RabbitListener 动态队列名称:Attribute value must be constant
    详细介绍Spring Boot + RabbitMQ实现延迟队列
    springboot集成rabbitmq(实战)
  • 原文地址:https://www.cnblogs.com/yangtao416/p/14582275.html
Copyright © 2011-2022 走看看