ansible的安装及简单配置

本文介绍了Ansible作为自动化运维工具的基本概念、安装步骤、配置清单的构建与配置文件的设置,强调其特点如SSH协议管理、无需客户端、模块化工作,并提供了全局测试和不同用户配置的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ansible的简介

1、ansible是新出现的自动化运维工具,完全基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
2、ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。
3、ansible的特点:

(1)部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
(2)默认使用SSH协议对设备进行管理;
(3)有大量常规运维操作模块,可实现日常绝大部分操作;
(4)配置简单、功能强大、扩展性强;
(5)支持API及自定义模块,可通过Python轻松扩展;
(6)通过Playbooks来定制强大的配置、状态管理;
(7)轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(8)提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

官方网站

https://www.ansible.com/
在这里插入图片描述

二、ansible的安装

1、下载epel仓库

(1)rhel8环境

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

(2) rhel7.6环境

yum install wget -y
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2、安装ansible

yum install ansible -y

查看版本及配置文件

ansible --version
rpm -qc ansible

在这里插入图片描述

/etc/ansible/ansible.cfg全局配置文件
/etc/ansible/hosts全局主机清单文件

3、全局测试

(1)指定远程主机

vim /etc/ansible/hosts

在这里插入图片描述
(2)列出远程主机

ansible all --list-hosts

在这里插入图片描述(3)使用ping模块测试远程主机
-m:使用模块,-k:使用交互式输入ssh的密码

ansible 172.25.36.2 -m ping -k

在这里插入图片描述

  • 使用root用户调用权限太大,所以一般用普通用户的身份操作远程主机

(4)在server2主机创建devops用户,并赋予密码,同时下放权力给devops用户

useradd devops
echo devops | passwd --stdin devops
visudo  ##下放权力

在这里插入图片描述(5)做ssh免密认证,将公钥发送给远程主机的devops用户

ssh-keygen
ssh-copy-id devops@172.25.36.2

在这里插入图片描述(6)使用远程主机的devops用户执行一些命令
-a:指定模块参数,--become参数,表示使用sudo执行命令,-u:指定用户

ansible 172.25.36.2 -a "touch /mnt/testfile" -u devops --become

在这里插入图片描述在这里插入图片描述

4、ansible的命令参数

  • anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]
参数功能
-i指定hosts文件路径,默认在/etc/ansible/hosts
-m指定使用的module名称,默认command模块
-a指定模块参数
-k(小写)提示输入ssh密码,并非基于ssh密钥认证
-K(大写)提示输入sudo密码
-b使用sudo执行命令
-become-user=指定sudo的用户
-f,-forks=NUMNUM默认是整数5,指定fork开启同步进程的个数
-u指定远程主机的执行用户
-v详细模式,如果执行成功,输出详细结果,-vv -vvv更详细过程
-C预执行检测
-T执行命令的超时时间,默认10s
--list显示主机列表,也可以用--list-hosts
--version显示版本

三、ansible配置清单

1、构建清单

cd /etc/ansible/
vim skk
ansible all -i skk --list-hosts  ##查看skk清单中的主机
ansible ungrouped -i skk --list-hosts  ##查看skk清单中未定义组的主机
ansible test -i skk --list-hosts  ##查看skk清单中组为test的主机

在这里插入图片描述

2、嵌套清单

[westos:children]

在这里插入图片描述

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

[start:end]

在这里插入图片描述

4、指定清单的正则表达式

*所有
:逻辑或
:&逻辑与
:!逻辑非
~以关键字开头
~(str1|str2)以条件1或条件2开头
vim inventory

在这里插入图片描述

ansible '172.*' -i inventory --list
ansible 'westos_list1:westos_list2' -i inventory --list
ansible 'westos_list2:&westos_list3' -i inventory --list
ansible 'westos_list2:!westos_list3' -i inventory --list
ansible '~westos' -i inventory --list

在这里插入图片描述

四、ansible配置文件

1、分类与优先级

/etc/ansible/ansible.cfg基本配置文件,找不到其他配置文件此文件生效
~/.ansible.cfg用户当前目录中没有ansible.cfg此文件生效
./ansible.cfg优先级最高

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

(1)修改清单路径

vim /etc/ansible/ansible.cfg 

 14 inventory      = /etc/ansible/hosts,/etc/ansible/westos

在这里插入图片描述
(2)python储存文件
remote_tmplocal_tmp是远端的本地临时文件路径;当执行ansible命令后,主机生成py临时脚本,通过ssh发送到远程主机,远程主机执行完删除该临时文件,主机也会删除临时文件。

vim /etc/ansible/ansible.cfg

 17 remote_tmp     = ~/.ansible/tmp
 18 local_tmp      = ~/.ansible/tmp

执行远程主机等待60秒的命令,监控两边是否有临时文件产生

ansible 172.25.36.2 -m shell -a 'sleep 60' -u devops -b
watch -n 1 ls -l ~/.ansible/tmp/
ls ~/ansible/tmp

在这里插入图片描述
等待60秒后,生成的两个临时文件自动消失
在这里插入图片描述(3)默认执行become模块
执行命令时,连接远程主机的用户为devops,在远程主机中操作指令时转换用户身份,并用sudo调用为root用户,执行sudo调用命令时不提示输入密码。

vim /etc/ansible/ansible.cfg

107 remote_user = devops
339 become=True
340 become_method=sudo
341 become_user=root
342 become_ask_pass=False

不需要加-b-K

ansible 172.25.36.2 -m shell -a 'hostname' -v

在这里插入图片描述

五、不同用户的配置设定

  • ansible只有一个主配置文件,不同用户的配置不同时,需要把配置独立出来,一个用户一个配置文件。需要该用户创建配置目录及配置文件,只有在配置目录时,才会优先读取该用户的配置文件。

1、创建skk用户及其配置目录

useradd skk
passwd skk
su - skk
mkdir /home/skk/ansible

2、编辑配置文件

su - skk
vim /home/skk/ansible/ansible.cfg

[defaults]
inventory               = ~/ansible/inventory
host_key_checking       = False
ask_pass                = False
remote_user             = devops
module_name             = shell

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

3、编写配置清单

vim /home/skk/ansible/inventory

[demo]
172.25.36.2

4、用ansible主机的root用户将自己的私钥给skk用户发送一份,保证可以连接到远程主机的devops用户

公钥在前面做全局测试时已经发送给远程主机的devops用户

scp ~/.ssh/id_rsa skk@172.25.36.1:~/.ssh/

5、切换到skk用户,用ping模块测试

su - skk
cd ansible/
ansible demo -m ping -v

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值