Linux Ansible安装以及环境搭建

目录

Ansible介绍

Ansible架构

Ansible节点类型

Anisble配置文件

Ansible任务执行情况

Ansible相关命令

Ansible环境搭建

安装Ansible

创建Ansible相关文件

配置ansible.cfg文件

配置资产清单文件

验证测试资产清单


Ansible介绍

Ansible是一种基于Python的自动化配置工具,通过OpenSSH的方式管理被管理节点,实现批量系统配置、批量程序部署、批量运行命令等功能。

当管理节点需要管理被管理节点时,只需要在管理节点安装ansible,无需在被管理节点安装客户端程序;

Ansible架构

Host Inventory             资产清单;定义了被管理主机

Playbooks                    剧本;可以将多个任务定义到剧本中,由ansible自动执行

Core Modules              核心模块;ansible自带的模块(例如yum模块、user模块等)

Custon Modules          扩展模块;对核心模块的补充,完成核心模块无法完成的任务

Plugins                        插件;ansible借助插件完成记录日志、邮件等功能

Connection Plugins      连接插件;负责管理节点和被管理节点实现通信

Ansible节点类型

管理节点

 管理节点通过ssh的方式和被管理节点建立通信

 1、管理被管理节点(在资产清单内定义的就是被管理节点)

 2、定义任务(可以通过add-hoc临时命令、playbook剧本、role角色等方式定义任务)

 2、下发任务(将管理节点上定义的任务下发到被管理节点)

被管理节点

 需要开启ssh服务,能够被 管理节点 访问到

 1、执行管理节点下发的任务

 2、提供应用访问

Anisble配置文件

Ansible的全局配置文件为/etc/ansible/ansible.cfg

普通用户的Ansible的配置文件为~/etc/ansible/ansible.cfg(优先级高)

Ansible任务执行情况

Ansible任务的执行结果通过json格式显示

Success代表执行的结果是正确的,但并不单表此任务是有效的,具体通过颜色来判断任务的执行的情况

黄色:被管理主机已经成功执行了下发的任务,并且伴随着状态的改变

绿色:被管理主机已经成功执行了下发的任务,但是没有状态改变

表示遵循Ansible的幂等性(表示执行一次或者多次不会产生副作用),例如:任务要求安装apache服务,如果被管理节点已经安装的apache服务,则此被管理节点执行此任务的结果就是绿色的;任务能够执行,但是没有去执行,即任务无效

红色:执行失败

Ansible相关命令

ansible  		        Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
    ansible --version              查看ansible版本
    ansible -m                     指定调用的模块名称
    ansible -v 	    显示任务结果
                    -vv  显示任务结果、任务配置
					-vvv 显示被管理主机连接信息
					-vvvv 增加连接插件相关的额外详细程度选项(包含受管主机上用于执行脚本的用户和所执行的插件)

    ansible -a                     调用模块的某些参数
    ansilbe -c                     测试命令执行结果,不实际执行
    ansible -u                     指定执行命令的客户端
    ansilbe -i                     指定访问的主机列表文件

ansible-doc                 Ansible 模块功能查看工具
    ansible-doc -l                  列出ansible所有模块
    ansible-doc -s 模块名           查看模块的参数信息

ansible-galaxy  		      下载/上传优秀代码或Roles模块 的官网平台,基于网络的
ansible-playbook  	      Ansible 定制自动化的任务集编排工具
ansible-inventory --list     查看默认资产清单的内容
ansible-pull  		     Ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)
ansible-vault  		     Ansible 文件加密工具
ansible-console  	         Ansible基于Linux Consoble界面可与用户交互的命令执行工具

Ansible环境搭建

配置管理节点到被管理节点的ssh免密

在管理节点上生成私钥,然后发放给被管理节点,实现ssh免密

在管理节点配置
ssh-keygen  生成私钥
ssh-copy-id root@被管理节点

如果出现ssh-copy-id: command not found报错,则说明缺乏openssh-clientsansible包,通过yum安装此包就可以

安装Ansible

一般基于普通用户进行ansible管理,所以以下重点介绍普通用户的ansibke环境搭建

安装ansible不需要在客户端去安装,只需要在管理节点安装

基于root用户安装ansible

yum info ansible             基于root用户查看ansible是否安装
yum install -y ansible       基于root用户安装ansible

基于普通用户安装ansible(普通用户要有sudo权限)

sudo yum info ansible         基于普通用户查看ansible是否安装
sudo yum install -y ansible   基于普通安装ansible
ansible --version            查看ansible的版本

创建Ansible相关文件

基于普通用户创建一套Ansible架构(即文件的所有者为普通用户)

1、创建基于用户的主配置文件ansible.cfg(定义ansible相关配置)

 进入到普通用户下
 cd ~
 mkdir ansible
 cd ansible
  cp /etc/ansible/ansible.cfg .   将配置文件复制到家目录下

2、创建资产清单文件inventory(存放被管理节点,有静态的和动态的)

动态的资产清单需要结合CMDB实现,目前创建基于静态的
cd ~/ansible
touch inventory  创建文件名为inventory的文件(文件名自定义,后续在ansible配置文件需要指定)

3、创建未来用于角色的roles目录(存放角色,简化任务的创建)

cd ~/ansible
mkdir roles         创建roles目录(目录名自定义,后续在ansible配置文件需要指定)

配置ansible.cfg文件

关键配置(一般会做修改)

inventory =/home/student/ansible/inventory 指定资产清单的路径(就是之前创建的inventory文件的路径)
ask_pass = Fasle                          是否提示输入ssh密码(当使用公钥认证时,可以时false)
roles_path=/home/student/ansible/roles    指定角色目录的路径(就是之前创建的roles目录的路径)
remote_user = devops                      playbook默认远程用户,管理节点使用此管理节点上的此用户去管理被管理节点,向其下发任务,被管理节点也是用的此用户去执行任务(即管理节点和被管理节点都需要有此用户,并且需要sudo权限)


[privilege_escalation]
become=True              连接到被管理节点后是否自动在被管理主机上切换用户
become_method=sudo       切换用户的方式为sudo(也可以是su)
become_user=root         在被管理节点上切换到哪个用户(默认为root)
become_ask_pass=False    是否提示输入密码(默认是False)

以上配置表示连接到被管理节点的身份是devops(前提是被管理节点本地有devops用户,并且已经做了sudo的配置;如果没有就需要创建用户,并对此用户做sudo配置 )

非关键配置(一般不修改)

forks    =  10    控制能够同时和多少台被管理节点进行通信(并行执行play任务)
library    = /usr/share/my_modules/             ansible默认模块的位置
module_utils = /usr/share/my_module_utils/      ansible默认模块的位置
forks          = 5                              主机通信的默认并行进程数
poll_interval  = 15                             异步执行任务时,每15s查一次任务状态
sudo_user     = root                   提权到root用户(被管理节点登录到管理节点时使用的身份)
remote_port    = 22                    远程端口号
host_key_checking = False              配置主机是否进行ssh密钥对的检测
timeout = 10                           配置ssh连接超时时间

在被管理节点验证是否有devops用户,并且此用户是否有sudo权限

id devops
cd /etc/sudoers.d/  查看此目录下sudo的配置(也可以直接通过visudo命令查看)

配置资产清单文件

Ansible允许有多个资产清单文件,优先级如下

 当前路径下 > 家目录下 > etc目录下

基于IP/域名/主机名的形式

cd ~/ansible
vim inventory  编辑资产清单文件
    172.16.1.1
    172.16.1.2

基于组的形式

通过设置组的形式来配置资产清单(自定义分类,可以按照功能分、位置分等)

并且还支持组可以再包含组(组嵌套)

组形式:用中括号来指定组,组下再添加主机名、FQDN、IP地址等

例如:

cd ~/ansible
vim inventory  编辑资产清单文件
 [ftpserver]
 node1

 [webserver]           webserver组包含主机名为node3主机
 node3

 [servers:children]   servers组包含webserver组和ftpserver组
 webserver
 ftpserver

验证测试资产清单

ansible命令测试

ansible servers -m ping             对属于servers组内的主机进行ping
ansible all -m ping                 对默认资产清单内的所有主机进行ping
ansible all -i 资产清单路径 ping     对特定的资产清单内的所有主机进行ping

注意:使用ansible的ping模块进行ping被管理的主机时,必须是资产清单已经存在的,并且名称要一致

ansible-inventory命令测试

ansible-inventory -i 资产清单文件位置 --list       查看指定资产清单文件的内容
ansible-inventory --list                         查看默认资产清单文件的内容

猜你喜欢

转载自blog.csdn.net/m0_49864110/article/details/130349241
今日推荐