ansible基础-安装与配置

一 安装

1.1 ansible架构

ansible是一个非常简单的自动化部署项目,由python编写并且开源。用于提供自动化云配置、配置文件管理、应用部署、服务编排和很多其他的IT自动化需求。

ansible实现的自动化部署是多层次的,通过描述系统之间的逻辑关系来构建业务所需要的基础架构模型,而不仅仅用于管理一个单独的系统;也就是说ansible不仅仅能部署一个或多个独立的服务,它还能对这些服务做关联、对部署顺序做编排等,一个完美的ansible部署项目应该是层次分明、顺序有秩的。

另外,ansible是Serverless和Agentless项目,在部署工具准备阶段基本上是零成本,而且ansible使用YAML写playbooks,这使playbook看起来通俗易懂,一目了然。

ansible这个后起之秀在开源社区上也是非常火爆的,可以说是部署工具届的网红一枚。现在很多很火的开源项目都在使用ansible作为部署工具,例如我熟悉的openstack-ansible、openshift-ansible等等

架构图:

通过架构图我们可以看到ansible主要由以下部分组成:

Core Modules

核心模块,每个模块可以看成是一个小程序,用于实现具体的部署动作,也能指定被纳管服务的期望状态。

Custom Modules

自定义模块,与核心模块相似,不同之处在于人家是官方的,自己是民间(自定义)的。

Plugins

是为了增强ansible核心功能的代码片段,可以将其看作为一个函数,作用范围小,很实用。

Inventory

一个文件(INI类型)或者目录,主要作用是配置被纳管的主机和主机组,如果是目录也可以放置组变量group_vars和主机变量host_vars

Playbooks

用于存放play,每个play可以对指定的主机或主机组进行批量的部署动作,上面说到的服务的部署、关联、编排就是在playbook内实现的。

Connection Plugins

控制节点与被纳管节点的通讯插件,linux系统默认使用SSH进行通讯。

1.2 节点安装

被管理节点安装

依赖于python环境,python版本应该满足2.6或2.7或>=3.5与控制节点的通讯服务,通常是sshd服务

控制节点安装

python环境需求同被管理节点一致,windows不能作为控制节点

支持的操作系统包括但不限于Red Hat, Debian, CentOS, OS X, BSDs

安装方式根据操作系统的不同而定,比较简单,以centos为例,配置好yum源后可以通过命令yum install ansible -y进行安装。其他类型操作系统不一一列举了,可以参考官方文档https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

二 配置文件

2.1 配置文件位置

ansible配置文件可以存放在不同地方,按优先级由高到低排序:

  • 命令行-c 或 --config指定的配置文件路径
  • 环境变量ANSIBLE_CONFIG
  • 执行playbook所在目录下的ansible.cnf
  • 当前执行用户家目录下.ansible.cnf(即~/.ansible.cnf)
  • 默认配置文件存放路径/etc/ansible/ansible.cnf

当我们执行playbook时,ansible会按照上面列表的路径依次查找,如果高优先级的文件被找到则会被使用。

查看当前正在使用的配置文件路径:

➜  lab-ansible ansible --version
ansible 2.5.2
  config file = /Users/weim/DevOps/lab-ansible/ansible.cfg
  configured module search path = [u'/Users/weim/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/2.5.2/libexec/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.14 (default, Apr 27 2018, 19:33:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]

2.2 配置文件参数

因配置文件参数太多,下面只列举一些比较常用的参数;表格中defaults/inventory代表[defaults]章节下的inventory参数,其他依此类推

参数  含义
defaults/inventory inventory文件(夹)路径,默认值/etc/ansible/hosts
defaults/roles_path roles文件路径,默认值/etc/ansible/roles
defaults/remote_user 指定连接被管理主机的用户,默认值root
defaults/forks 同一时间操作目的主机的数量,默认值5
defaluts/remote_port 目的主机远程连接的端口,默认值22
defaults/timeout 连接目的主机的超时时间,默认值10
​privilege_escalation/become 是否允许当前执行用户提升权限,默认值True
privilege_escalation/become_method 提权使用的方法,默认值sudo
privilege_escalation/become_user 当defaults/remote_user不是root用户时,该用户提权后所变成的用户,默认值root
privilege_escalation/become_ask_pass 提权时是否要交互式输入密码,默认值False

三 inventory

3.1 主机与主机组

主机和主机组

欢迎大家关注我的公众号:

猜你喜欢

转载自www.cnblogs.com/mauricewei/p/10050306.html