当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    集群运维自动化工具ansible的安装与使用(包括模块与playbook使

    栏目:win服务器问题汇总 时间:2019-11-06 20:07

    我使用过puppet与salt,但这2个软件都需要安装客户端,并且更新很快,每次更新都是令人蛋疼的事,尤其是salt,喜欢他的命令功能,但bug太多,不敢在公司线上使用,puppet虽然稳定,但弄命令执行的时候,需要mco配置,非常麻烦,我公司由于跟多家公司合作,很多业务没办法安装客户端,所以没办法使用puppet与salt(虽然salt有ssh,但不太好使),最后找到了ansible,他既有命令执行也有配置管理,关键开发它的语言是python,paramiko进行ssh连接,跟我之前开发的自动管理软件都是使用paramiko进行操作,不需要安装客户端,满足我的需求,下面给大家介绍一下我是如何使用的。
    一、安装
    1、安装第三方epel源
    centos 5的epel

    rpm -ivh http://mirrors.sohu.com/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm
    

    centos 6的epel

    rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
    

    查看系统版本

    17:01:30 # cat /etc/issue
    CentOS release 6.5 (Final)
    Kernel \r on an \m
    

    由于是6版本所以安装6的epel
    2、安装ansible

    yum install ansible
    

    如果需要自定义module或者想阅读源码、使用最新版本,可以去github里下载源码

    git clone https://github.com/ansible/ansible.git
    

    3、添加主机

    17:22:08 # cd /etc/ansible/
    root@ip-10-10-10-10:/etc/ansible
    17:23:27 # ll
    total 12
    -rw-r--r-- 1 root root 5113 Dec 29 03:00 ansible.cfg
    -rw-r--r-- 1 root root 965 Dec 29 03:00 hosts
    其中ansible.cfg是配置文件,hosts是管理主机信息
    17:24:44 # cat hosts
    172.17.0.2:49154
    172.17.0.4:49155
    [zabbix]
    172.17.0.2:49154
    172.17.0.4:49155
    [vpn]
    172.17.0.10
    

    4、使用密码登陆
    ansible支持正则测试

    16:20:57 # ansible 127* -m ping
    SSH password: 
    127.0.0.1 | success >> {
      "changed": false, 
      "ping": "pong"
    }
     
    root@ip-10-10-10-10:/etc/ansible
    16:21:05 # ansible 172* -m ping
    SSH password: 
    172.17.0.5 | success >> {
      "changed": false, 
      "ping": "pong"
    }
     
    172.17.0.4 | success >> {
      "changed": false, 
      "ping": "pong"
    }
     
    172.17.0.2 | success >> {
      "changed": false, 
      "ping": "pong"
    }
    

    如果你有多台服务器的话,想并发运行,可以使用-f参数,默认是并发5
    5、使用密钥登陆测试

    11:30:35 # ansible vpn -m shell -a "echo $TERM" -u test --private-key=denglei -K
    SSH password: 
    sudo password [defaults to SSH password]: 
    172.17.0.10 | success | rc=0 >>
    xterm
    

    二、模块应用
    6、文件传输

    11:30:44 # ansible vpn -m copy -a "src=/tmp/server dest=/tmp/server" -u test --private-key=denglei -K
    SSH password: 
    sudo password [defaults to SSH password]: 
    172.17.0.10 | success >> {
      "changed": true, 
      "dest": "/tmp/server", 
      "gid": 505, 
      "group": "test", 
      "md5sum": "e8b32bc4d7b564ac6075a1418ad8841e", 
      "mode": "0664", 
      "owner": "test", 
      "size": 7, 
      "src": "/home/test/.ansible/tmp/ansible-1402630447.45-253524136818424/source", 
      "state": "file", 
      "uid": 503
    }
    

    去客户端查看文件是否传输过来