一篇文章带你学会Ansible的安装及部署

  • Post author:
  • Post category:其他



目录


前言


一、什么是Ansible


二、Ansible的工作方式


三、Ansible的安装


四、构建Anisble清单


1、清单书写方式


2、清单查看


3、清单书写规则


4、主机规格的范围化操作


五、ansible命令指定清单的正则表达式


六、 Ansible配置文件参数详解


1、配置文件的分类与优先级


2、常用配置参数


前言


实验环境搭建:共3台主机,其中一台作为主控机

配置主控机:

更改主机名

配置网卡

配置软件仓库,需要挂载光盘镜像

配置本地软件仓库

关闭火墙

搭建网络上的软件仓库,使用阿里云的方式访问,epel源

配置永久挂载

配置 nodea

网络,端口号192.168.1.20

配置nodeb

端口号为192.168.1.30

一、什么是Ansible

Ansible是近年越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric.Ansible发布于2012年,其作者兼创始人是Michael DeHaan。红帽2015收购了Ansible母公司。

Ansible完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己并发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。Agentless(无客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人。

二、Ansible的工作方式

Ansible没有客户端,因此底层通信依赖于系统软件,Linux系统下基于OpenSSH通信,Windows系统下基于PowerShell,管理端必须是Linux系统。

根据Ansible使用过程中的不同角色,将其分为:使用者、Ansible工具集、作用对象。

Ansible使用者来源于多种维度,分为以下几种方式:

(1)CMDB存储和管理着企业IT架构中的各项配置信息,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达成的目标。

(2)基于PUBLIC(公有云)/PRIVATE(私有云)’,Ansible以API调用的方式运行,Ansible提供了丰富的API语言接口:PHP、Python等。

(3)直接使用Ad-Hoc临时命令集调用Ansible工具集来完成任务执行。

(4)通过执行Playbooks中预先编排好的任务集按序完成任务执行。

三、Ansible的安装

ansible是三方插件,需要epel源安装

ansible处理多台主机任务时速度非常快

epel源

dnf install ansible -y

ansible –viersion


ansible的基本信息:

/etc/ansible/ansible.conf         ##全局配置文件,默认很少修改

/etc/ansible/hosts         ##全局主机清单清单文件







四、构建Anisble清单

1、清单书写方式

清单:指定执行动作的范围,相当于被处理的白名单

shell脚本在处理多台主机时,每次都需要输入密码,效率比较低,ansible只需要在host中写入清单







1、直接书写受管主机名或ip,每行一个

2、设定受管主机的组[组名称]




2、清单查看

#清单查看:

ansible 清单中组名称 [-i 清单文件] –list-hosts

ansible ungrouped –list-hosts

ansible all –list-hosts







当前用户优先读取的配置文件




/etc/下的ansible是全局配置文件

用户子配置文件在用户家目录中.ansible目录中




可以在当前目录中写清单也可以写配置文件,但是当前目录中没有配置文件,所以写清单也没有用。后续在配置中,我们就知道了怎么在子配置目录中书写清单,这个清单是针对于这个用户生效的。也可以在系统的任何位置去写一个清单,使用-i的方式手动指定清单




3、清单书写规则

#单层清单#

[list1]

node1.westos.com

node2.westos.com

[list2]

node2.westos.com

[list3]

192.168.1.20

上面写的就是单层清单


#嵌套清单#

[westos:children]

list1

list3







4、主机规格的范围化操作

#通过指定主机名称或IP的范围可以简化Ansible主机清单

#语法:

#[start:end]

[westostest]

172.25.254.[100:108]

vim host







起始和结束的语法

五、ansible命令指定清单的正则表达式

*                           ##所有

##172.25.254.*

##westos*

:                           ##逻辑或

##westos1:linux

##172.25.254.100:172.25.254.200

:&                         ##逻辑与

##westos1:&linux

##主机即在westos1清单也在linux清单中

:!                          ##逻辑非

##westos1:!linux

##在westos1中不在linux中

~                          ##以关键字开头

~(str1|str2)           ##以条件1或者条件2开头




逻辑或:







&







|




六、 Ansible配置文件参数详解

ansible 清单中组名称 -m 模块 -u remote_user




ansible原理:在当前主机也就是主控机中生成一个python类型的脚本,生成完成后使用sshd服务把脚本传递给要执行动作的受控主机中,在这台主机中执行python,ssh在传输脚本时需要用到用户名和密码,在远程主机中也需要用户身份和密码

以上是基本的执行逻辑

1、配置文件的分类与优先级

/etc/ansible/ansible.cfg                 #基本配置文件,找不到其他配置文件此文件生效

~/.ansible.cfg                                #用户当前目录中没有ansible.cfg此文件生效

./ansible.cfg                                  #优先级最高




用户级配置文件生成







写自己的配置文件,一般使用inventory







这样就就成功了

2、常用配置参数

#[default]                                    ##基本信息设定

inventory=                                   ##指定清单路径

remote_user=                              ##在受管主机上登陆的用户名称,未指定使用当前用户

ask_pass=                                   ##是否提示输入SSH密码,如果公钥登陆设定为false

library=                                        ##库文件存放目录

local_tmp=                                   ##本机临时命令执行目录

remote_tmp=                               ##远程主机临时py命令文件存放目录

forks=                                           ##默认并发数量

host_key_checking=                    ##第一次连接受管主机时是否要输入yes建立host_key

sudo_user=                                  ##默认sudo用户

ask_sudo_pass=                          ##每次在受控主机执行ansible命令时是否询问sudo密码

module_name=                             ##默认模块,默认使用command,可以修改为shell

log_path=                                      ##日志文件路径


[privilege_escalation]                     ##身份信息设定

become=                                        ##连接后是否自动切换用户

become_method=                          ##设定切换用户的方式,通常用sudo

become_user=                               ##在受管主机中切换到的用户,通常为root

become_ask_pass                         #是否需要为become_method提示输入密码,默认为false

远程主机简历用户

每次指定用户都要-u,可以直接用参数指定好

手动指定用户身份

模块名称

ask_pass

精简密码,生成秘钥,锁主控机

需要把当前主机内家目录 ~/.ssh/id_rsa.pub复制到远程主机,并重命名为authorized_keys

现在可以把ask_pass改成false

保证在远程主机执行动作时,还是需要用超级用户身份,还是需要不断去转换超级用户身份去做

sudo

在所有主机中以所有用户身份,都能免密执行所有命令,追加到/etc/sudoers中


删除

达到了操作一台主机和多台主机的效果一样,这就是在企业中达到运维自动化最主要的一个插件ansible以上就是它的基本配置方法



版权声明:本文为weixin_43975532原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。