官方定义:"Ansible is Simple IT Automation"——简单的自动化IT工具
Ansible 为运维自动化工具,一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。
Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。
Ansible 特点:
部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台。
Ansible 与 SaltStack:

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

如何安装

yum install -y ansible

如果安装不成功,提示 No package ansible available,可能需要安装前置依赖包epel-release

yum install -y epel-release

并且不能一起写,否则也还会触发这个问题 ,比如如下写法:

yum install -y epel-release ansible

如何配置minion

vi /etc/ansible/hosts
[gameservers]
106.53.236.78 ansible_ssh_user=root ansible_ssh_port=3737[backendservers]
106.53.236.198 ansible_ssh_user=root ansible_ssh_port=3737

如果要一劳永逸的配置多台,可以用如下格式

192.168.1.[1:100]

其他参数如以下列表:

ansible_ssh_host将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置ansible_ssh_portssh端口号.如果不是默认的端口号,通过此变量设置.ansible_ssh_user默认的 ssh 用户名ansible_ssh_passssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)ansible_sudo_passsudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)ansible_sudo_exe (new in version 1.8)sudo 命令路径(适用于1.8及以上版本)ansible_connection与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.ansible_ssh_private_key_filessh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.ansible_shell_type目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'.ansible_python_interpreter目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如  \*BSD, 或者 /usr/bin/python不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26).
ansible_ruby_interpreter与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径

让我们来远程执行下指令:

[root@VM_0_11_centos script]# ansible 106.53.236.195 -m shell -a "df -h"
106.53.236.198 | UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true
}

原因分析:没有在ansible管理节点(即安装ansible的节点)上添加目标节点(即需要管理的节点)的ssh认证信息。
解决步骤:
1:管理节点生成SSH-KEY

ssh-keygen

成功后在~/.ssh/路径下将生成ssh密钥文件:id_rsa及id_rsa.pub
2:添加目标节点的SSH认证信息

cd  ~/.ssh/
[root@VM_0_11_centos .ssh]# ls
id_rsa  id_rsa.pub
ssh-copy-id  -p 3737 root@106.53.236.198

会让你输入密码,添加认证信息后,目标节点主机的~/.ssh/目录下将会出现一个authorized_keys文件,里面包含了ansible管理节点的公钥信息,可以检查一下是否存在。

3:在确定目标主机的SSH认证信息都已正确添加且目标主机的~/.ssh/目录都存在管理节点的公钥信息后,再执行之前出错的ansible指令,有效:

[root@VM_0_11_centos .ssh]# ansible 106.53.236.198 -m shell -a "df -h"
106.53.236.198 | SUCCESS | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  3.7G   44G   8% /
/dev/vdb         50G  462M   47G   1% /data

Ansible远程执行命令
指令指令格式
ansible [主机组] -m [模块方法] -a [指令]

ansible 106.53.236.198 -m command -a 'w' #对单个IP
ansible gameservers -m shell -a "df -h"  #对服务器组
ansible 106.53.236.198 -m shell -a "df -h"
ansible all  -m ping    #对所有minion

Ansible远程执行脚本

ansible gameservers -m shell -a "cd /data/server/logger/;sh start.sh"

Ansible拷贝文件或者目录
对主机组拷贝文件,目标中的文件不存在时就会创建,存在时就会覆盖原来的内容,写入新的内容

ansible gameservers -m copy -a "src=/data/server/data/version.properties dest=/data/server/data owner=root group=root mode=0755"
ansible gameservers -m copy -a "src=/data/server/data/version.properties dest=/data/server/data"
ansible gameservers -m copy -a "src=/data/server/router/lib/game-common.jar dest=/data/server/router/lib"

复制目录,定义所属组,当data不存在时就会创建,并把data传入到/data/server/下

ansible gameservers -m copy -a "src=/data/server/data/ dest=/data/server/data/"

进阶篇

ansible默认是同步阻塞模式,它会等待所有的机器都执行完毕才会在前台返回。可以采取异步执行模式。

如何提速?

vi /etc/ansible/ansible.cfg
pipelining=False

SSH pipelining 是一个加速 Ansible 执行速度的简单方法。ssh pipelining 默认是关闭,修改为 pipelining=True

DOCKERFILE里添加ansible

RUN yum makecache && yum install -y ansible && yum update -y; yum clean all
ADD ./devops/hosts /etc/ansible/
RUN sed -i 's/^#pipelining.*/pipelining = True/g' /etc/ansible/ansible.cfg
RUN sed -i 's/^#host_key_checking.*/host_key_checking = False/g' /etc/ansible/ansible.cfg

参考文献:

saltstack与ansible对比

Ansible系列(七):执行过程分析、异步模式和速度优化

Ansible极速入门相关推荐

  1. 云计算网络极速入门-混合云网络

    目录 1.混合云组网技术 1.1.WAN 1.2.VPN 1.3.BGP 1.4.SD-WAN 2.混合云组网方案 3.混合云管理 4.混合云的应用场景 本文是<云计算网络极速入门>三部曲 ...

  2. 慕课网_《RabbitMQ消息中间件极速入门与实战》学习总结

    慕课网<RabbitMQ消息中间件极速入门与实战>学习总结 时间:2018年09月05日星期三 说明:本文部分内容均来自慕课网.@慕课网:https://www.imooc.com 教学源 ...

  3. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  4. PyTorch 深度学习: 60 分钟极速入门

    PyTorch 深度学习: 60 分钟极速入门 2019年年初,ApacheCN组织志愿者翻译了PyTorch1.2版本中文文档(github地址),同时也获得了PyTorch官方授权,我相信已经有许 ...

  5. Knative 初体验:CICD 极速入门

    Knative 社区很早就在讨论用 Tekton 替换 Build 模块的相关事宜.Knative Build 官方已经正式说明不再建议使用 Knative Build 了. 如果你知道 Knativ ...

  6. 60 分钟极速入门 PyTorch

    2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch. 因其在灵活性.易用性.速度方面的优秀表现,经 ...

  7. 24小时学会python_零基础python24小时极速入门学习

    本篇文章是 Python 入门必须掌握的知识点,24小时极速入门,是针对那些没有任何编程经验,从零开始学习 Python 的同学 想要快速学会python的6个关键点. 分别是:数据类型. 条件判断. ...

  8. Ansible Tower 入门 1 - 配置主机清单和访问凭证

    Ansible Tower 入门 1 - 配置主机清单和访问凭证 Ansible Tower 入门 2 - 通过模板运行 Git 上的 Playbook 和 Role Ansible Tower 入门 ...

  9. 极速入门Gamemaker编程语言

    极速入门Gamemaker编程语言 开篇废话 这文档适合已经会使用其他编程语言(C#.C\C++.java.python等)的游戏开发爱好者学习 (逛CSDN怎么会有不会编程的人呢) ,如果不会其他语 ...

最新文章

  1. c语言实现指定路径文件读取_C语言实现文件复制功能(包括文本文件和二进制文件)...
  2. CryptoAPI与openssl数字签名与验证交互
  3. 2014第3周四杂记
  4. react native loading动画_React高级进阶指南
  5. Bailian3728 Blah数集【数学+set】
  6. Java中int数字_java int 比较数值里面是否有某个数字
  7. Linux-MySQL主从配置
  8. ios tabtar 使用方法_Appium界面自动化测试(13)(iOS/Python):元素定位及操作
  9. MYSQL Day03~MySQL 常用命令汇总
  10. [echarts] 柱状图 改变划过柱子时的阴影颜色
  11. 使用Unity3D编写ARPG游戏——角色属性的定义与实现(一)
  12. Kanzi 记录:界面整体介绍(一),自己理解,绝非生搬硬套。
  13. oracle numa map size mismatch,Oracle启动时提示map size mismatch; abort
  14. 洛谷P2678 Java解法
  15. python numpy 子数组_详解:Python 取numpy数组的某几行某几列方法(含对与错示例)...
  16. setMouseTracking(true)
  17. 前端js手写日历相关函数(附demo)
  18. iOS前期OC训练OC_10Block
  19. 未来五年最有前景的编程语言是什么?
  20. 大数据导论习题_2020智慧树答案 大数据概论 最新知到章节测试答案

热门文章

  1. 7N65-ASEMI高压MOS管7N65
  2. ZeroMemory
  3. android电视root权限获取,电视盒子/ 智能电视如何通过ADB获取ROOT权限?
  4. 零距离泛目录网站站群二级程序源码 【程序开源无限制】
  5. 在Outlook和Foxmail里设置Gmail(Google)的企业邮箱
  6. 评测 - Quested V2104 两分频有源监听音箱
  7. 消费者吃燕麦有了标准!西麦全产业链打造好燕麦
  8. 二、mybatis-全局配置文件解析
  9. 企业为什么喜欢专家或者一专多能的人
  10. CDN缓存加速系统wdcdn3.0版本发布(20120720)