• ansible


    ## ansible

    在远程主机上批量执行命令或者脚本的一个工具

    python2.7

    puppet

    saltsatck

    管控机

    被控机

    ### 安装 

    ```shell
    #下载wget
    yum install -y wget
    #将epel源下载到本地
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    #安装ansible
    yum install -y ansible
    ```

    ### ansible 命令格式


    Usage: ansible <host-pattern> [options]
    -a MODULE_ARGS,     #模块参数
    -C, --check         # 干跑,白跑
    -f FORKS, --forks=FORKS  #指定并发,默认5个
    --list-hosts         #列出主机
    -m MODULE_NAME    # 模块名称
    --syntax-check       #检查语法
    -k             #密码

    ping走的协议 ICMP

    ```SHELL
    rpm -ql ansible|more # 查看ansible生成的文件
    /etc/ansible
    /etc/ansible/ansible.cfg #配置文件
    /etc/ansible/hosts
    /etc/ansible/roles #空文件夹

    ```

    使用公钥私钥连接机器

    #ssh-copy-id root@192.168.133.134    用户名和要连接的机器id

    copy 给了公钥

    #ansible 192.168.133.135 -m ping      连接

    #ssh root@192.168.133.135   进入到这个ip主机

    ansible 底层是通过ssh实现的

    ```
    ## www[001:006].example.com 代表 www001-www006(包含)
    ```

    ### ansible的第一个命令

    ```
    ansible 192.168.226.101 -m ping          #单独机器的ping
    ansible 192.168.226.101,192.168.226.102 -m ping   #多个机器的ping
    ansible all -m ping                  #全部机器
    ansible web -m ping               #单个的组
    ansible web,db -m ping             #多个组的并集
    ansible 'web:&db' -m ping             #多个组的交集
    ansible 'web:!db' -m ping             #多个组的差集,在前面但是不在后面
    ```

    ### host-pattern的格式

    - 单个的ip地址
    - 多个的ip地址,用,分割
    - 单个组
    - 多个组
    - 并集
    - web,db
    - ‘web:db’
    - 交集 ‘web:&db’
    - 差集 ‘web:!db’
    - 全部 all表示

    ### ansible-doc 命令格式   查看模块帮助信息


    ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
    -j         #以json的方式返回数据
    -l, --list      #列出所有的模块
    -s, --snippet     #以片段式显示模块信息
    #直接查看完整信息

    模块部分

    command

    这个模块可以直接在远程主机上执行命令,并将结果返回本主机。

    ansible web -m command -a "pwd"
    ansible web -m command -a "ls"
    ansible web -m command -a "chdir=/tmp pwd"     
      #切换目录并执行命令
    
    ansible web -m command -a "creates=/tmp pwd"    
      #因为tmp目录存在,pwd不会执行
    ansible web
    -m command -a "creates=/tmp2 pwd"     #因为tmp2不存在,pwd执行 (creates,只判断存在不存在)

    ansible web
    -m command -a "removes=/tmp2 pwd"     
      #因为tmp2不存在,pwd不执行
    ansible web -m command -a "removes=/tmp pwd"  
      #因为tmp目录存在,pwd会执行
    
    echo
    "1234" |passwd --stdin alex             #设置用户的密码


    shell

    shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等。

    ansible web -m shell -a "echo '1234' |passwd --stdin alex"
    ansible web -m shell -a "chdir=/tmp pwd" shabang
    ansible 192.168.226.101 -m shell -a "bash a.sh" 
        #执行shell脚本
    
    ansible 192.168.226.101 -m shell -a "/root/a.sh" 
        # 执行shell脚本,文件要有执行的权限
    
    ansible 192.168.226.101 -m shell -a "/root/a.py" 
        #执行Python文件


    script

    该模块用于将本机的脚本在被管理端的机器上运行。
      该模块直接指定脚本的路径即可

    ansible db -m script -a "/root/a.sh"          
      #执行本地的文件,管控机的文件
    
    ansible db -m script -a "creates=/root/a.sh /root/a.sh"   
      # 判断被控机上的文件是否存在,如果不存在,就执行,如果存在,就跳过
    
    ansible db -m script -a "creates=/tmp /root/a.sh"    
      #判断被控机上的文件


    copy

    这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。

    backup   #创建一个备份文件,以时间戳结尾
    content  #直接往文件里面写内容
    dest    #目标地址
    group   #属组
    mode   #文件的权限 W 2 R 4 X 1
    owner    #属主
    src      #源地址
    ansible web -m copy -a "src=/etc/fstab dest=/tmp/f"
      #复制本地文件到远程主机,并修改文件名,多次执行不会改变,因为checksum值是一样的
    
    ansible web
    -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes"   #复制本地文件,并备份
    ansible web
    -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes group=alex mode=755"   # 复制本地文件到远程主机,并指定属组和权限
    ansible web
    -m copy -a "src=/etc/init.d dest=/tmp backup=yes group=alex mode=755"   #复制本地的目录到远程主机,修改目录权限,则目录里面的文件也会跟着变更
    ansible web
    -m copy -a "src=/etc/init.d/ dest=/tmp backup=yes group=alex mode=755"   #复制本地目录下的所有文件,
    ansible web
    -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私语,嘈嘈切切错 杂弹,大珠小珠落玉盘' dest=/tmp/b"   #直接往文件里面写内容,覆盖写,慎用
  • 相关阅读:
    算法与数据结构基础
    算法与数据结构基础
    算法与数据结构基础
    算法与数据结构基础
    算法与数据结构基础
    算法与数据结构基础
    最佳实践 根据状态操作,这样能避免吃掉异常
    最佳实践 状态设计
    Android HTTPS如何10分钟实现自签名SSL证书
    马桶选购
  • 原文地址:https://www.cnblogs.com/wmh33/p/10827909.html
Copyright © 2020-2023  润新知