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"
    }
    
  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/yangtao416/p/14582275.html
Copyright © 2011-2022 走看看