ansible自动化运维工具的安装与使用

时间:2021-02-06 18:08:11

运行环境

centOS6.6

ansible

ansible的功能还是比较多的,博主只用它在集群上进行批量部署软件和维护的功能,其他不多做研究,有需要的话这篇文章会慢慢补充。

ansible特点

  • 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
  • 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
  • 使用python编写,维护更简单,ruby语法过于复杂;
  • 支持sudo。

安装

yum install ansible

使用

  1. 配置ssh

    ansible是通过基于ssh实现的,我们先配置ssh无密码登录

    ssh-keygen
    ssh-copy-id -i ~/.ssh/id_rsa.pub user@dp0655
    ssh-copy-id -i ~/.ssh/id_rsa.pub user@dp0656
    ssh-copy-id -i ~/.ssh/id_rsa.pub user@dp0657
  2. 主机组定义

    这里定义了一个spark_test组

    vim /etc/ansible/hosts
    [spark_cluster]
    dp0655
    dp0656
    dp0657
  3. 连通测试

    ansible all的意思是对/etc/ansible/hosts中的所有主机进行操作,我这只对spark_cluster组进行操作。

    #查看spark_cluster组中的主机
    ansible spark_cluster --list-hosts
    dp0655
    dp0656
    dp0657 #测试是否连通
    ansible spark_cluster -m ping
    dp0657 | success >> {
    "changed": false,
    "ping": "pong"
    } dp0656 | success >> {
    "changed": false,
    "ping": "pong"
    } dp0655 | success >> {
    "changed": false,
    "ping": "pong"
    }

常用操作

  1. 用户和权限

    -u 指定运行的用户(默认为root)

    -s 使用sudo权限

    ansible spark_cluster -a "mkdir /usr/xx/xx" -s -u userName
  2. copy

    将本地文件/文件夹发送到远程主机,ansible的copy模块是围绕rsync的包装,所以它是增量而不是全量的拷贝。

    参数说明:

    src 本地文件/文件夹位置

    dest 发送到远程主机的位置

    owner(可选) 所属用户

    group(可选) 所属用户组

    mode(可选) 权限

将本地文件/etc/ansible/ansible.cfg复制到远程服务器

ansible spark_cluster -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=admin group=admin mode=0644"
  1. 批量执行脚本

    在远程批量执行本地脚本

    ansible spark_cluster -m script -a "hello.sh"

ansible的中文操作手册

http://www.simlinux.com/books/Ansible-notes.pdf