1、Ansible特性

模块化:

  • 调用特定的模块,完成特定的任务
  • 有paramiko、PyYAML、jinja2三个关键模块
  • 支持自定义模块
  • 基于python语言开发
  • 部署简单就要python和ssh,agentless
  • 安全,基于Openssh
  • 支持playbook编排任务
  • 幂等性:一个任务执行一遍和执行n遍效果一样,不会因为重复执行带来意外情况
  • 无序代理不依赖PKI(无需ssl)
  • 可使用认可编程语言编写模块
  • YAML格式编排任务,支持丰富的数据结构
  • 叫强大的多层解决方案

2、ansible架构解析

用户通过ansible去管理各个主机,那么ansible就是我们所说的主控端,后面的Host为被控端。

在控制主机时,ansible是如何知道哪些主机是被自己控制的呢?

这就需要一个Host Inventory(主机清单),用于记录ansible可以控制网络中的哪些主机。另外,要配置和管理这些主机,可以采用两种方式,一种是单一的命令实现,另外一种也可以使用palybook实现。单一的命令模式是采用不同的模块进行管理,一个模块类似于一些管理的命令,如top,ls,ping等等,适用于临时性的操作任务。如果需要执行一些例行性或经常性的操作,则需要采用playbook的方式,playbook类似于一个脚本,将多个模块按一定的逻辑关系进行组合,然后执行。ansible还支持一些插件,如邮件、日志等,在和远程主机通信时,也会采用类似的连接插件,这里使用则是SSH协议的插件进行通信。

3、ansible主要组成部分

1)命令执行来源:

  • ANSIBLE PLAYBOOKS :任务剧本,编排定义ansible任务急的配置文件,有Ansible顺序执行,通常为json格式的YAML文件
  • INBENTORY:Ansible管理主机的清单/etc/anaible/hosts
  • MODULES:Ansible的执行命令的功能模块,多数为内置核心模块,也可以自定义
  • PLUGINS:模块功能补充,比如链接类型插件、循环插件、变量插件、过滤插件等,不常用
  • API:供第三方程序调用的应用程序编程接口
  • ANSIBLE:组合INVENTORY API MODUES PLUGINS的绿框,可以理解为Ansible的命令工具,其为核心执行工具

2)利用ansible实现管理的方式

  • Ad-Hoc即ansible命令,主要用于临时命令场景
  • ansible-playbook主要用户长期规划好的,大型项目的场景,需要提前规划

3)Ansile-playbook执行过程

  • 将已有编排好的任务急写入Ansible-playbook
  • 通过ansible-playbook命令分拆任务急至逐条ansible命令,按照预定规则执行

4)Ansible主要操作对象

  • Hosts主机
  • Networking网络设备

5)注意事项

  • 执行ansile的主机一般称为主控端,中控,master或堡垒机
  • 主控端python版本需要2.6以上
  • 被控端python版本需要2.4以上,小于2。4需要安装python-simplejson
  • 被控端如开启selinux需要安装libselinux-python
  • windows端不能作为主控端

4、anisble部署

ansible官网

  • (1)环境说明
主机名称 IP地址 角色 系统版本
ansible 192.168.56.11 主控端 Centos 7.x
node01 192.168.56.12 被控端 Centos 7.x
node02 192.168.56.13 被控端 Centos 7.x
  • (2)ansible部署
[root@ansible ~]# yum install -y ansible
[root@ansible ~]# ansible --version
ansible 2.7.10
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
  • (3)ansible主要配置文件功能解析
/etc/ansible/ansible.cfg 	#主配置文件,配置ansible工作特性
/etc/ansible/hosts #主机清单
/etc/ansible/roles/ #存放角色的目录
/usr/bin/ansible #主程序,临时命令执行工具
/usr/bin/ansible-doc #查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy #下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook #定制自动化任务,编排剧本工具
/usr/bin/ansible-pull #远程执行命令的工具
/usr/bin/ansible-vault #文件加密工具
/usr/bin/ansible-console #基于Console界面与用户交互的执行工具
  • (4)小试牛刀
[root@ansible ~]# ansible --help	#查看ansible使用帮助
Usage: ansible <host-pattern> [options] #使用方法,ansible+主机+选项 [root@ansible ~]# ansible 192.168.56.12 -m ping #检测主机的存活,返回pong则是正常,这里使用了-m参数,采用ping模块进行检测目标主机的存活性
192.168.56.12 | SUCCESS => {
"changed": false,
"ping": "pong"
} [root@ansible ~]# ansible -m ping 192.168.56.13 #连接另外1台被控端,提示无法匹配
[WARNING]: Could not match supplied host pattern, ignoring: 192.168.56.13 [WARNING]: No hosts matched, nothing to do #这里就需要在主机清单中增加被控端主机,需要注意的是,主机清单也支持分组模式,这里将三台主机分为web组
[root@ansible ~]# vim /etc/ansible/hosts
[web]
192.168.56.11
192.168.56.12
192.168.56.13
[root@ansible ~]# ansible web -m ping #通过对一组服务器进行存活性检测
192.168.56.13 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.56.12 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.56.11 | SUCCESS => {
"changed": false,
"ping": "pong"
} #PS:这里需要注意的是,远程连接采用的不是单纯的ping命令,如果没有做ssh密钥认证,是会出现无法ping通的错误,此时可以采用-k参数,默认执行使用root用户进行连接远程主机。
[root@ansible ~]# ansible 192.168.56.13 -m ping -k
SSH password:
192.168.56.13 | SUCCESS => {
"changed": false,
"ping": "pong"

在使用ansible时,我们会发现ssh链接较慢的现象,这里则需要修改sshd服务的两个参数来解决该问题:

UseDNS no
GSSAPIAuthentication no

5、主配置文件ansible.cfg解析

配置文件大部分都是注释,只需要保持默认配置即可。这里需要开启日志记录以及关闭远程首次连接的ssh认证检查。

[root@ansible ~]# vim /etc/ansible/ansible.cfg
[defaults] 默认配置 # some basic default values... #inventory = /etc/ansible/hosts #主机列表配置文件
#library = /usr/share/my_modules/ #库文件存放目录
#module_utils = /usr/share/my_module_utils/ #模块存放目录
#remote_tmp = ~/.ansible/tmp #临时py命令文件存放在远程主机目录
#local_tmp = ~/.ansible/tmp #本机的临时命令执行目录
#forks = 5 #默认并发数
#poll_interval = 15 #时间间隔
#sudo_user = root #默认sudo用户
#ask_sudo_pass = True #每次执行ansible命令是否询问sudo用户密码
#ask_pass = True #每次执行ansible命令是否询问ssh密码
#transport = smart #传输方式
#remote_port = 22 #远程端口号
#module_lang = C
#module_set_locale = False
... ...
host_key_checking = False #检查对应服务器的host_key,建议取消注释.
log_path=/var/log/ansible.log #记录日志及位置,默认不记录 建议取消注释

Ansible入门笔记(1)之工作架构和使用原理的更多相关文章

  1. Ansible入门笔记(3)之Playbook

    目录 Ansible-playbook 1.1.什么是playbook? 1.2.playbook的核心组成 1.3.playbook的handlers.notify触发 1.4.playbook的变 ...

  2. Ansible入门笔记(2)之常用模块

    目录 Ansible常用模块 1.1.Ansible Ad-hoc 1.2.Ansible的基础命令 1.3.常用模块 Ansible常用模块 1.1.Ansible Ad-hoc 什么事ad-hoc ...

  3. 1 TensorFlow入门笔记之基础架构

    ------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...

  4. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  5. MySQL入门笔记

    MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: ·          rpm包形式 ·          通用二进制 ...

  6. Ansible 入门指南 - 安装及 Ad-Hoc 命令使用

    安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...

  7. Centos7——docker入门(笔记)

    docker 入门(笔记) 一.Docker是什么? 官方原话: Docker provides a way to run applications securely isolated in a co ...

  8. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  9. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

随机推荐

  1. [Objective-C] id类型和instancetype类型

    前些时间在源码里看到instancetype返回类型,一脸惊异,表示接触iOS不久没见过这东西,但发现跟id功能差不多.故查了一些资料,了解了两者之间的区别,故将资料简单翻译整理了一下,为博客充一个数 ...

  2. INCLUDE COMMON FILES IN HTML USING JQUERY

    Simple example for including common files in HTML. JQuery load() function is used for including comm ...

  3. Android 增加JNI

    Android:JNI 与 NDK到底是什么?(含实例教学) 前言 在android开发中,使用NDK开发的需求正逐渐增大: 很多人搞不懂JNI与NDK到底是怎么回事? 今天我们先介绍JNI与NDK之 ...

  4. Zabbix添加Ping外网IP监控

    1.先添加一个HOST,只填写IP即可,如10.1.1.1 2.选择一台客户端,新建item,如下: 3.新建trigger: 注:icmpping[<target>,<packet ...

  5. Online, Cheap -- and Elite

    Online, Cheap -- and Elite Analysis of Georgia Tech’s MOOC-inspired online master's in computer scie ...

  6. ELK安装过程

    官方安装文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-targz.html 官方硬件和配置项推荐:htt ...

  7. October 18th 2017 Week 42nd Wednesday

    Only someone who is well-prepared has the opportunity to improvise. 只有准备充分的人才能够尽兴表演. From the first ...

  8. python: 用pygments给markdown文档染色

    首先你需要一个markdown解析器 比如有常见的markdown和markdown2,其他的可以参考这个网站的评价 我选择了mistune,自己继承写一个渲染的Renderer mistune的do ...

  9. 【adb命令】在cmd窗口中使用adb install命令安装 中文名字apk报错的解决办法

    1.在cmd窗口中使用adb install命令安装中文名字apk报错,安装英文名字apk就正常,详细报错如下图: 2.查看adb版本号:adb version 3.怀疑是adb版本的原因,尝试换个最 ...

  10. 夯实基础之--new关键字、instanceOf原理

    1.instanceOf原理  检测右边构造函数的prototype是否在左边对象的原型链上,在返回true,不在返回false 例:function  Persion(name,age){ this ...