设为首页 收藏本站
查看: 1319|回复: 0

[经验分享] Ansible基础理论及安装

[复制链接]

尚未签到

发表于 2018-7-29 06:57:05 | 显示全部楼层 |阅读模式
Ansible介绍及安装

一. ansible自动化运维完成的功能
  在运维工程中,我们部署一台使其能够在生产环境中使用大致经过一下步骤:
DSC0000.jpg



  • 安装主机。
  • 部署中间件,运行环境等。
  • 安装我们实际生产的应用程序。
  这一系列步骤如果人工一步步去配置话,需要花费大量的时间。特别是在生产环境中,我们为了提高线上环境的可用性,要尽量减少不可用时间,我们可以使用高可用以增加可用性。尽管有高可用但在实际情况下,也会导致生产环境不可用,例如自然灾害等不可抗力。那么我们就需要有一种工具能快速部署线上环境,在主机只用几百来台的情况下ansible就是一个不错的选择。
  Ansible自动化运维完成的功能:


  • 实现多主机并行执行命令
  •   批量安装部署线上环境
      简而言之,他可以实现OS以上的全部功能。注意安装操作系统这一功能现在处于实际测试环境下,不能使用。

二. Ansible简介
  ansible运维工具,他不需要在被管理的主机上安装代理程序已接收ansible发来的指令,ansible管理被主机是通过ssh连接来管理。它属于无agent运维工具。相反像zabbix我们需要在被管理主机上安装zabbix-agant程序包,故zabbix是有agent端运维工具。

1. Ansible特点


  • 部署简单,只需在主控端部署ansible环境
  • 幂等性,同一命令能够执行多次,但要注意的是实行的命令要具备幂等性特性,否则会报错。
  • 默认使用SSH协议管理主机。
  • 提供了丰富的模块,并支持自主开发新模块。
  • 通过playbook编排,管理。并且playbook使用yaml语法。
  • 支持云平台和大数据。
2. Ansible架构图
DSC0001.jpg


Ansible核心组件说明


  •   Ansible:Ansible的核心程序,后面会详细介绍ansible的使用

  •   Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。默认资产文件是在/etc/ansible/hosts中定义。

  •   Playbooks:YAML格式文件,组织了多个模块功能,在统一调用。

  •   Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

  •   Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

  • Connection Plugins:连接插件,Ansible和Host通信使用
  ansible大致工作流程:
  用户向ansible发送请求,但ansible不处理任何请求,所用的请求都由相应的模块完成,core模块是自带,用户也可以自己写模块以完成相应的功能。而命令执行的主机来自inventory file。连接主机使用连接引擎,默认是使用ssh引擎。而playbook是将一个完成任务的命令放在一个文件中执行。

三. Ansible基础环境的安装和配置

1. Ansible安装及重要文件介绍

安装
  ~] yum install ansible

二进制文件
  ~] rpm -ql ansible | less
  /usr/bin/ansible : 用于在指定主机上运行任务。
  /usr/bin/playbook : 用于运行playbook。
  /usr/bin/ansible-doc : 用于查看ansible中个模块的使用方法。

Inventory资产清单
  /etc/ansible/hosts

ansible配置文件
  /etc/ansible/ansible.cfg
  配置文件使用的类似ini风格
  [defaults]
  [privilege_escalation]
  [paramiko_connection]
  [ssh_connection]
  [persistent_connection]
  [accelerate]
  [selinux]
  [colors]
  [diff]
  从各个方面定义了ansible的默认行为,以及特性。详细介绍请看官方文档配置文件介绍
  相关配置


  • inventory = /etc/ansible/hosts :设置inventory文件目录
  •   gathering = implicit :是否获取被控主机参数信息
      

    implicit:默认获取主机facts, 使用gather_facts=False关闭  
    explicit:默认不获取主机facts,使用gather_facts=True关闭
      


  •   gather_subset = all :指明获取被控主机那些facts信息,最终作为变量可以被yaml和jinja2文件应用
      

    他将主机的信息分为多个子系统:  
    all - 获取所有子系统的信息
      
    network - 获取网络facts
      
    hardware - 获取主机硬件facts
      
    virtual - 获取虚拟化fact
      
    facter - 从factoer中获取facts
      
    ohai - 从ohai获取facts
      


2. 配置SSH连接
  Ansible master主控端:192.168.200.135
  Ansible node1 节点机:192.168.200.136
  Ansible node2 节点机: 192.168.200.137

Ansible主控端配置 :
  生成rsa算法密钥对
DSC0002.jpg

  默认即可,直接回车,生成的密钥对默认情况下放在家目录中隐藏目录.ssh。
DSC0003.jpg

  其中,id_rsa为私钥,id_rsa.pub为公钥。
  拷贝公钥到被管理主机
DSC0004.jpg

  此命令会将私钥文件本机id_rsa.pub文件的内容复制到192.168.200.136的/root/.ssh/authorized_keys文件中,如下图
DSC0005.jpg

  本机在/root/.ssh/known_hosts中记录了远程主机的信息,如下图
DSC0006.jpg

  测试远程连接是否成功
DSC0007.jpg

  由上图可看出远程登录成功。

3. 测试Ansible功能
DSC0008.jpg

  表明Ansible配置成功了。

四. 术语

术语
解释
Action
它是一个task的具体表现,而一个action是模块和其对应参数的运行
Facts
它是远程主机的信息,使用setup模块获取,可在配置文件通过gather_subset设置获取的值
Forks
Ansible主控端连接主机可并发运行,默认是5,可在配置文件修改forks参数设置
Handlers
触发器,它实际也是一个task,这个task只会被notify触发,例如,我们配置文件修改后会重启服务。一个Handlers如果被多个task调用只会执行一次。handlers运行顺序是其列出来的顺序而不是触发的顺序。
Inventory
它是一个文件,用于描述主机和组
Jinja2
他像一个插入型语言,例如php,jsp可以进行变量替换,运算等
Notify
用于task中,给task注册了一个事件,一旦发生改变就会触发对应的task执行,
paramiko
ansible默认使用的库,用户ssh连接
Playbooks
它是一种语言,ansible用其编排,配置,管理,部署系统
Roles
它是一个组织单元,以实现一个特殊的功能,例如安装一个nginx,他就可以编写成一个role。这样方便重复利用
Tags
playbook中用于标记一个task,在执行时可以只执行指定的task,也可跳过指定的的task
Templates
它使用jinga2的模板引擎,可以使用fact变量,host变量,group变量
When
用于task中。是判断语句,当判断为假是task不会执行
YAML
使用yaml定义palybook

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-542725-1-1.html 上篇帖子: ansible:集中管理平台 下篇帖子: ansible playbook循环
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表