ansible入门--安装、配置与执行介绍

概念介绍

        Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可

术语介绍

Ansible的与节点有关的重要术语包括控制节点,受管节点,清单和主机文件:

控制节点(Control node):指安装了Ansible的主机,也叫Ansible服务器端,管理机。 Ansible控制节点主要用于发布运行任务,执行控制命令。Ansible的程序都安装在控制节点上,控制节点需要安装Python和Ansible所需的各种依赖库。注意:目前Ansible还不能安装在Windows下。

受控节点(Managed nodes):也叫客户机,就是想用Ansible执行任务的客户服务器。

清单(Inventory):受控节点的列表,就是所有要管理的主机列表。

host文件:清单列表通常保存在一个名为host文件中。在host文件中,可以使用IP地址或者主机名来表示具体的管理主机和认证信息,并可以根据主机的用户进行分组。缺省文件:/etc/ansible/hosts,可以通过-i指定自定义的host文件。

模块(Modules):模块是Ansible执行特定任务的代码块。比如:添加用户,上传文件和对客户机执行ping操作等。Ansible现在默认自带450多个模块,,Ansible Galaxy公共存储库则包含大约1600个模块。

任务(Task):是Ansible客户机上执行的操作。可以使用ad-hoc单行命令执行一个任务。

剧本(Playbook):是利用YAML标记语言编写的可重复执行的任务的列表,playbook实现任务的更便捷的读写和贡献。Playbook可以理解为是多个ad-hoc单行命令组合在一起形成业务流程或者执行计划共同执行,在Github上有大量的Ansible playbooks共享,你要你有一双善于发现的眼睛你就能找到大量的宝藏。

角色(roles):角色是Ansible 1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。

安装

Ansible可以运行在任何机器上,但是对管理机有一定要求。管理机应安装Python 2(2.7)或Python 3(3.5或更高版本),另外,管理机不支持Windows控制节点。我们可以使用Linux发行版包管理器、源码安装或者Python包管理器(PIP)来安装Ansible,下面演示使用yum进行安装

安装epel仓库

Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。

sudo yum install epel-release -y

安装ansible

sudo yum install ansible –y

验证安装是否成功

执行ansible命令

出现下面画面说明安装成功

配置

ansible 程序结构

安装目录如下(yum安装):
  配置文件目录:/etc/ansible/
  执行文件目录:/usr/bin/
  Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
  Help文档目录:/usr/share/doc/ansible-X.X.X/
  Man文档目录:/usr/share/man/man1/

常用配置项

ansible 的配置文件为/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:

  1. inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
  2. library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
  3. forks = 5 #并发连接数,默认为5
  4. sudo_user = root #设置默认执行命令的用户
  5. remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
  6. host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
  7. timeout = 10 #设置SSH连接的超时时间,单位为秒
  8. log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)

修改Inventory列表

默认清单配置文件位于/etc/ansible/hosts中,但是通过ansible.cfg配置文件中修改此位置。也可以通过-i自定义hosts清单。

为了安全起见,笔者建议不要直接在/etc/ansible/host配置清单,尤其是有用户认证等信息时候。对于长期不执行ansible可以将host文件加密锁定,防止信息泄露,引起安全事故

清单文件格式如下:

[platform]

Hadoop1

Hadoop2

Hadoop3

Kafka

Zookeeper

Elasticsearch

Postgresql

[web]

active

standby

可以对不同用途分组,用[]指定分组名。

执行

Ansible有两种执行模式,ad-hoc以及playbook

        ad-hoc命令行是我们可以随手执行的单个ansible任务,是ansible任务快速执行方式。对于一些快速获取的任务使用ad-doc命令非常简便有效,而且有助于我们学习和熟悉Ansible的使用。

        Playbook 是Ansible提供的最强大的任务执行方法。与ad-hoc命令不同,Playbooks配置在文件中,可以重用和共享给其他人。

        Playbooks是以YAML标记语言来定义的。每个playbook由一个或多个play组成。play的目标是将一组主机映射到任务中去。每个play包含一个或多个任务,这些任务每次执行一次。

        可以简单的理解,Playbook就是多个ad-hoc进行编排后按照一定的逻辑进行执行的一个ad-hoc命令集

猜你喜欢

转载自blog.csdn.net/microGP/article/details/106492695