zoukankan      html  css  js  c++  java
  • ansilbe基础学习(一)

    Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用、安装软件、执行命令、配置和编排任务。

    一、Ansible工作机制

    ansible架构图

    从图中可以看出ansible分为以下几个部份:

    1> Control Node:控制机器 
    2> Inventory:主机清单,配置管理主机列表 
    3> Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由ansible自动执行。 
    4> Modules(Core | Custom):模块,用于执行某个具体的任务 
    5> connection plugin(连接插件):Ansible通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh协议连接远程主机。

    二、Ansible执行流程

    Ansible执行流程 
    简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

    三、安装Ansible

    一台控制主机:192.168.0.202

    三台管理主机:

    • 192.168.0.200
    • 192.168.0.201
    • 192.168.0.203

    安装要求:

    • 控制服务器:需要安装 Python2.6/2.7
    • 管理服务器:需要安装 Python2.4 以上版本,若低于 Python2.5 需要安装 pythonsimplejson; 若启用了 selinux,则需要安装 libselinux-python。

    本次安装基于CentOS7系统环境、Python2.7.5、root用户。

    3.1、yum安装(推荐)

    yum install epel-release
    yum install ansible
    

     

    3.2、pip安装

    pip install ansible

    注:pip方式安装不会在/etc/ansible目录下生成默认的相关配置文件

    四、配置

    控制主机:用于控制其它机器的主机 
    管理主机:被控制主机管理的主机

    4.1、配置管理主机

    vim /etc/ansible/hosts

    在hosts文件中添加管理主机的IP地址列表:

    配置管理主机

    4.2、配置控制主机SSH密钥

    4.2.1、在控制主机中生成ssh密钥对

               秘钥路径:/root/.ssh

    ssh-keygen -t rsa  

    一路回车即可在$HOME/.ssh目录下生成id_rsa和id_rsa.put私钥和公钥两个文件。

    注: 如果在生成密钥的时候设置了密码,ansible每次执行命令的时候,都会提示输入密钥密码,可通过下面的命令记住密码。

    ssh-agent bsh
    ssh-add ~/.ssh/id_rsa
    

      

    4.2.2、将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.200
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.201
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.203
    

      

    注:ssh-copy-id命令会自动将id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中。

    4.2.3、ansible配置

    vim /etc/ansible/ansible.cfg

    1> 禁用每次执行ansbile命令检查ssh key host 
    host_key_checking = False

    2> 开启日志记录 
    log_path = /var/log/ansible.log

    3> ansible连接加速配置

    [accelerate]
    #accelerate_port = 5099
    accelerate_port = 10000 
    #accelerate_timeout = 30
    #accelerate_connect_timeout = 5.0
    
    # If set to yes, accelerate_multi_key will allow multiple
    # private keys to be uploaded to it, though each user must
    # have access to the system via SSH to add a new key. The default
    # is "no".
    accelerate_multi_key = yes
    

    五、测试

    最后测试下在三台管理机器批量执行一个ping命令

    ansible all -m ping
    

     

    结果如下:

    ansible all -m ping运行结果

    从上图可以看出,在每台管理机器上都成功执行了ping命令。


    一些Ansible深入功能的学习资料: 
    http://blog.xiaorui.cc/category/ansible/ 
    http://lixcto.blog.51cto.com/4834175/d-4 
    https://github.com/ansible/ansible-examples 
    http://rfyiamcool.blog.51cto.com/1030776/d-51 
    http://dl528888.blog.51cto.com/2382721/d-4/p-1 
    http://edu.51cto.com/course/course_id-2220.html 
    http://edu.51cto.com/course/course_id-2032.html

  • 相关阅读:
    C#Winform中treeView控件使用总结
    转:vs发布window应用程序时出错:未能签名 ...setup.exe
    C# 常见集合之前的转换
    开发者眼中的Spring与JavaEE
    运行库到底做了什么?
    C++, Java和C#的编译、链接过程解析
    转载一篇将C/C++ 与lua混合使用入门讲的比较好的文章
    路会越走越窄的
    [DBNETLIB][ConnectionOpen(Connect()).]SQL Server 不存在或拒绝访问 数据库错误 解决办法总结
    Linux学习路线指南
  • 原文地址:https://www.cnblogs.com/huangxu/p/8998392.html
Copyright © 2011-2022 走看看