#一、概述
运维工具按需不需要有代理程序来划分的话分两类:

agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix

agentless(无须代理工具):基于ssh服务完成管理,ansible, fabric
#二、简介

  Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。

  Ansible与Saltstack最大的区别是Ansible无需在被控主机部署任何客户端代理,默认直接通过SSH通道进行远程命令执行或下发配置:相同点是都具备功能强大、灵活的系统管理、状态配置,两者都提供丰富的模板及API,对云计算平台、大数据都有很好的支持。

1.特点

  • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
    默认使用SSH协议对设备进行管理;
  • 主从集中化管理;
  • 配置简单、功能强大、扩展性强;
  • 支持API及自定义模块,可通过Python轻松扩展;
  • 通过Playbooks来定制强大的配置、状态管理;
  • 对云计算平台、大数据都有很好的支持;
  • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
  • 幂等性:一种操作重复多次结果相同

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

Ansible核心组件说明:

  • Ansible:Ansible的核心程序
  • Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载
  • Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.
  • Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。
  • Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。
  • Connection Plugins:连接插件,Ansible和Host通信使用

3、ansible执行过程,其中暖色调的代表已经模块化。

三、基础环境的安装与配置

1、ssh免密登录 配置 一直回车

2、shell脚本复制到101-150服务器

`for i in seq 101 150
do
/usr/bin/expect << EOF
spawn ssh-copy-id bfadmin@192.168.100.$i
expect {
"yes/no" { send "yesr"; exp_continue; }
"*password" { send "P@ssw0rdr" }
}

expect "~$ "
send "exitr"
expect eof

EOF
done


3、安装Ansible 环境 及pssh 环境包

sudo sed -i -re 's/w+.archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
sudo apt-get update
sudo wget http://www.theether.org/pssh/pssh-1.4.3.tar.gz #下载PSSH安装包
tar zxvf pssh-1.4.3.tar.gz
cd pssh-1.4.3
sudo wget 'http://peak.telecommunity.com/dist/ez_setup.py'
sudo python ez_setup.py
sudo python setup.py install
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get install ansible

4.配置文件
/etc/ansible/ansible.cfghost_key_checking = False5.主机清单
/etc/ansible/hosts6.ansible命令的使用说明
常用选项ansible -m MOD_NAME -a MOD_ARGS
表示调用什么模块,使用模块的那些参数ansible -h[root@localhost ~]# ansible -h
Usage: ansible <host-pattern> [options]Options:-a MODULE_ARGS, --args=MODULE_ARGS    模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等module arguments    模块参数-k, --ask-pass        ask for SSH password  登录密码,提示输入SSH密码而不是假设基于密钥的验证--ask-su-pass         ask for su password    su切换密码-K, --ask-sudo-pass   ask for sudo password  提示密码使用sudo,sudo表示提权操作--ask-vault-pass      ask for vault password-B SECONDS, --background=SECONDS     后台运行超时时间run asynchronously, failing after X seconds(default=N/A)-C, --check           don't make any changes; instead, try to predict some    只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化of the changes that may occur-c CONNECTION, --connection=CONNECTION   连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。connection type to use (default=smart)-f FORKS, --forks=FORKS   并行任务数。NUM被指定为一个整数,默认是5specify number of parallel processes to use(default=5)-h, --help            show this help message and exit   打开帮助文档API-i INVENTORY, --inventory-file=INVENTORY    指定库存主机文件的路径,默认为/etc/ansible/hostsspecify inventory host file(default=/etc/ansible/hosts)-l SUBSET, --limit=SUBSET    进一步限制所选主机/组模式  --limit=192.168.91.135 只对这个ip执行further limit selected hosts to an additional pattern--list-hosts          outputs a list of matching hosts; does not executeanything else-m MODULE_NAME, --module-name=MODULE_NAME   执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数module name to execute (default=command)-M MODULE_PATH, --module-path=MODULE_PATH    要执行的模块的路径,默认为/usr/share/ansible/specify path(s) to module library(default=/usr/share/ansible/)-o, --one-line        condense output      压缩输出,摘要输出.尝试一切都在一行上输出。-P POLL_INTERVAL, --poll=POLL_INTERVAL    调查背景工作每隔数秒。需要- bset the poll interval if using -B (default=15)--private-key=PRIVATE_KEY_FILE    私钥路径,使用这个文件来验证连接use this file to authenticate the connection-S, --su              run operations with su    用 su 命令-R SU_USER, --su-user=SU_USER      指定SU的用户,默认是root用户run operations with su as this user (default=root)-s, --sudo            run operations with sudo (nopasswd)    -U SUDO_USER, --sudo-user=SUDO_USER    sudo到哪个用户,默认为 root  desired sudo user (default=root)-T TIMEOUT, --timeout=TIMEOUT    指定SSH默认超时时间,  默认是10Soverride the SSH timeout in seconds (default=10)-t TREE, --tree=TREE  log output to this directory     将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。-u REMOTE_USER, --user=REMOTE_USER    远程用户, 默认是root用户connect as this user (default=root)--vault-password-file=VAULT_PASSWORD_FILE  vault password file-v, --verbose         verbose mode (-vvv for more, -vvvv to enable    详细信息connection debugging)--version             show program's version number and exit   输出ansible的版本

Ansible 详细用法部署安装相关推荐

  1. VMware vSphere6.0 服务器虚拟化部署安装图解(最全,最详细)-搭建的所有步骤

    VMware vSphere6.0 服务器虚拟化部署安装图解 一 .VMware vSphere部署的前期规划要点 1.vSphere的优点 (略) 2如何利用现在的设备架构虚拟化环境 在虚拟化过程中 ...

  2. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...

  3. #前端开发# 【一】 之Animate动画库的安装及详细用法

    #前端开发# 之Animate动画库的安装及详细用法 在前端的开发过程中,我们免不了需要动画来实现更多酷炫效果, 下面主要是介绍Animate这款强大的动画库,以及其安装及使用 相信大家也已经了解过A ...

  4. 记录一个ansible高级用法与shell结合

    未经本人同意不得转载 目录 一.ansible安装(ansible的配置与roles运用) 1.ansible的概述 2.安装python 3.ansible运用前准备 二.修改roles 1.初步修 ...

  5. Linux之Ansible入门用法(实验解析)

    Linux之Ansible入门用法(实验解析) 实验前提: 三台CentOS7和一台CentOS6,其中一台CentOS7当作Ansible堡垒机,其余三台主机当作被控主机.四台主机均为最小化安装,全 ...

  6. VMware vSphere6.0 服务器虚拟化部署安装图解(转载火星小编)

    VMware vSphere6.0 服务器虚拟化部署安装图解 版权声明:本文为火星小编原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 文章转载:火星小编 http ...

  7. linux中chmod命令的用法,【linux】chmod命令详细用法

    功能说明: 变更文件或目录的权限 u:User,即文件或目录的拥有者. g:Group,即文件或目录的所属群组. o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围. a:Al ...

  8. 《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 mongodb副本集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ans ...

  9. Rasa课程、Rasa培训、Rasa面试系列之:Rasa 3.x部署安装初体验

    Rasa课程.Rasa培训.Rasa面试系列之:Rasa 3.x部署安装初体验 Rasa 3.x部署安装 进入Ananconda系统,新建rasa虚拟环境 conda create --name in ...

最新文章

  1. 弃用notepad++
  2. KPI总结模板:How
  3. ES6笔记(1) -- 环境配置支持
  4. python有序队列_【Python】:拓展Queue实现有序不重复队列
  5. java继承实现不用每个类都写toString方法
  6. Go语言超全详解(入门级)
  7. Javaweb安全——Java类加载机制
  8. C语言编程魔法书--基于C11标准(陈铁)
  9. DEDECMS验证码不正确及其不显示问题
  10. [微信小程序开发者工具] [error] Error: Fail to open IDE 问题解决方法
  11. 豆瓣读书TOP250书籍信息爬虫脚本
  12. linux考试不及格反思100字,考试没考好的反思总结(精选10篇)
  13. 数独游戏-C语言实现
  14. h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法
  15. ui设计现状与意义_UI设计的现状如何?
  16. PostgreSQL对汉字按拼音排序
  17. 微信支付API3 APP【统一下单 APIV3】
  18. 前端js、功能性工具插件网站(持续更新,欢迎分享)
  19. 1_VBA_POWERSHELL病毒分析
  20. Selenium基础知识 自动登录QQ空间

热门文章

  1. Linux截图工具import使用说明
  2. 不怕辣眼睛!这个机器人用脸来摘辣椒
  3. 欧空局2018机器学习系列课程发布:从概念到实践(视频+PPT)
  4. 马库斯:DeepMind新出的机器心智网络不错,但有误导性
  5. Kafka如何实现每秒上百万的超高并发写入?掌握好面试给你打满分!
  6. (原創) 為什麼VB有Dim obj As Foo = New Foo()這種語法? (初級) (Visual BASIC)
  7. 服务器端事件发送SSE
  8. [SDOI2013]直径
  9. PHP正则表达式的运用
  10. minicom与USB转串口