Ansible基础理论及安装

Ansible介绍及安装

一. ansible自动化运维完成的功能

在运维工程中,我们部署一台使其能够在生产环境中使用大致经过一下步骤:

  1. 安装主机。
  2. 部署中间件,运行环境等。
  3. 安装我们实际生产的应用程序。

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

Ansible自动化运维完成的功能:

  • 实现多主机并行执行命令
  • 批量安装部署线上环境

    简而言之,他可以实现OS以上的全部功能。注意安装操作系统这一功能现在处于实际测试环境下,不能使用。

二. Ansible简介

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

1. Ansible特点

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

2. Ansible架构图

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算法密钥对

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

其中,id_rsa为私钥,id_rsa.pub为公钥。

拷贝公钥到被管理主机

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

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

测试远程连接是否成功

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

3. 测试Ansible功能

表明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

原文地址:http://blog.51cto.com/13589448/2068250

时间: 2024-08-11 09:40:07

Ansible基础理论及安装的相关文章

自动化运维工具ansible源码安装方法

1.首先查看python版本 [[email protected] ~]# python -V Python 2.6.6 注意安装ansible的时候,必须python的版本为2.6以上. 2.安装ansible 2.1 安装pycrypto模块 https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz # tar xvzf pycrypto-2.6.1.tar.gz # cd pycrypto-2.6.1

ansible介绍以及安装

ansible是个啥? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:

ansible示例,离线安装etcd

一.基础介绍 ========================================================================================== 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansi

ansible概述、安装、命令基础

ansible概述 Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议.其是基于Python研发,糅合了很多老运维工具的优点.实现了批量操作系统配置,批量程序的部署,批量运行命令等功能. 为什么要选择ansible? ? ansible优点 是仅需要ssh和Python即可使用 无客户端 ? ansible功能强大,模块丰富 ? 上手容易门槛低 ? 基于 python 开发,做二次开发更容易 ? 使用公司比较多,社区活跃 ansibl

ansible roles 自动化安装

例:  ansible roles 自动化安装memcached 文件目录结构如下: cat memcached_role.yml - hosts: memcached remote_user: root roles: - memcached cat roles/memcached/vars/main.yml username: memcached groupname: memcached memcached_port: 11211 cat roles/memcached/templates/m

用ansible模块化脚本安装redis(多机同步)

利用ansible脚本模块化安装redis数据库,实现同步安装多台主机. 从安全角度出发,会对Redis配置文件进行修改,所以,会先在控制端主机直接安装,从而获取Redis.conf配置文件 vim /etc/redis.conf 打开并编辑配置文件: 修改默认端口号6379为其他端口号. 关于访问ip,不能直接设置为0.0.0.0 因为若主机处在公网私网共存环境下,则无法限制外部网络的访问,非常危险 可以直接通过脚本获取当前本机的ip,从而避免这些问题 >>> bind 当前ip bi

ansible控制windows安装及运行error与解决方法

Q1:安装kerberos报错 $ sudo pip install kerberos running build_ext building 'kerberos' extension creating build creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -

Kubernetes 和 Swarm 两种docker集群,基于ansible的自动化安装部署(已测)

Git repo: https://git.oschina.net/yonchin/k8s-x86_64/tree/master/x86?dir=1 注:系统是基于CentOS_7.2,ansible:2.1 简介: kube-ansible-install: 除了安装Kubernetes的主从外,还包括Kubernetes的addons(如dashboard.dns.fluentd-elasticsearch-kibana.heapster-influxdb-grafana等),还包含zabb

Ansible 入门:安装 简例 playbook应用

Mysql 内:select unix_timestamp('2016-10-20')  <---> select from_unixtime(147662104) 转时间戳:date +%s   <--->  date -d @1476762104              ---- 小 Q -----------------------------------------------------------------------------------------------