zoukankan      html  css  js  c++  java
  • 自动化运维工之Ansible(1)

    1.1 ansible简介

    1.1.1 、Ansible软件介绍:

    Ansible提供一种最简单的方式用于发布、管理和编排计算机系统的工具,可在数分钟内搞定。Ansible由Python语言开发, 默认通过 SSH 协议管理机器。只要ssh连接正常被控制节点不需要安装任何工具,就可以实现远程连接执行任何操作支持多节点发布、远程任务执行。Ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能。

     Ansible的工作具有等幂性,Ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。

    1)幂等性不会重复执行相同的指令。例如不会重复安装软件 

    2)期望状态只需要告诉被监控端的期望状态

    官网:http://www.ansible.com/home

    官网文档:http://docs.ansible.com/ansible/index.html

    Github地址:https://github.com/ansible

    1.1.2 、Ansible软件特点:

    • q  不需要单独安装客户端(no agents),基于系统自带的ssh服务,sshd就相当于ansible的客户端
    • q  不需要服务端(no servers)
    • q  需要依靠大量的模块实现批量管理
    • q  配置文件/etc/ansible/ansible.cfg

    1.1.3 、ansible基本结构

         ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量 运行命令等功能。Ansible所有的工作都是基于模块实现的,Ansible本身并没有批量部署的能力,真正具有批量部署的是Ansible所运行的模块,Ansible只是提供了一种框架。基本的框架及组件构成如下:

    (1)、连接插件connectionplugins:负责和被监控端实现通信

    (2)、hostinventory:指定操作的主机,是一个配置文件里面定义监控的主机

    (3)、各种模块核心模块、command模块、自定义模块

    (4)、借助于插件完成记录日志邮件等功能

    (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

    1.1 ansible安装

    1.1.1 、安装前准备:

    #本机环境

    [root@m01 ~]# cat /etc/redhat-release

    CentOS release 6.9 (Final)

    [root@m01 ~]# uname -r

    2.6.32-696.el6.x86_64

    [root@m01 ~]# uname -m

    x86_64

    1.1.2 、安装ansible

    服务端安装软件:

    #更改yum源:

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

    说明:ansible软件安装需要epel源

    yum -y install ansible       <<-ansible软件安装

    被管理端安装软件:

    yum -y install libselinux-python   #libselinux是selinux安全插件,如果关闭selinux可以不装

    1.1.3 、ansible基础配置

    配置文件列表:

    [root@m01 ~]# tree /etc/ansible/

    /etc/ansible/
    
    ├── ansible.cfg      #ansible配置文件
    
    ├── hosts           #被ansible管理的主机名单(分组)
    
    └── roles          
    
    1 directory, 2 files         
    
    #目录查看:
    
    rpm –ql ansible
    
    /etc/ansible/  #配置文件目录
    
    /usr/bin/   #执行文件目录
    
    /usr/lib/pythonX.X/site-packages/ansible/   # Lib库依赖目录
    
    /usr/share/doc/ansible-X.X.X/   # Help_doc文档目录
    
    /usr/share/man/man1/   # Man文档目录      
    
    #ansible帮助
    
    ansible-doc -l
    
    ansible-doc -s 模块名称
    
    编辑ansible的主机配置文件hosts,添加主机组模块[web]

    [root@m01 ~]# cp /etc/ansible/hosts{,.bak}  #改前做备份是个好习惯

    [root@m01 ~]# tail -5 /etc/ansible/hosts

    [web]
    
    172.16.1.31
    
    172.16.1.41
    
    172.16.1.7
    
    172.16.1.8
    
    注:如果没有设置ssh密钥连接,ansible 无法正常管理模块中的服务器,解决方法如下:
    
    172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=登录密码
    
    172.16.1.8 ansible_ssh_user=root ansible_ssh_pass=登录密码
    
    命令说明:
    
    ansible_ssh_user:ssh连接的用户名
    
    ansible_ssh_pass:ssh连接的密码
    
    ansible.cfg配置文件
    
    [defaults]
    
    hostfile = /etc/ansible/hosts       #主机配置文件位置
    
    remote_user = root   #远程登录用户
    
    private_key_file=/root/.ssh/id_rsa  #密钥存放位置
    
    说明:测试使用不建
  • 相关阅读:
    springmvc @ResponseBody返回json 报406 not acceptable
    Java连接mysql中遇到的一些问题及解决方法
    nginx + keepalive 实现高可用
    nginx 内置变量
    nginx 防盗链
    nginx 跨域设置
    nginx 跨域设置
    nginx 日志分割
    servlet 下载地址 jcp
    图片压缩 jdk 1.8兼容问题
  • 原文地址:https://www.cnblogs.com/freeblogs/p/7944735.html
Copyright © 2011-2022 走看看