自动化运维工具ansible(一)--- 介绍与详解

1.ansible简介

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

2.ansible安装与启用

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm   在官方网站下载epel源
 rpm -ivh epel-release-latest-8.noarch.rpm  安装epel源
 dnf install -y ansible   ansible的安装包都在epel源中
 dnf install -y  sshpass-1.06-9.el8.x86_64.rpm  下载依赖性
 dnf install -y ansible-2.9.11-1.el8.noarch.rpm  安装ansible

ansible --version 查看版本
在这里插入图片描述3.

3.部署ansible

ansible的默认配置目录:/etc/ansible
/etc/ansible/ansible.cfg #主配置文件
/etc/ansible/hosts #主机清单

在这里插入图片描述

1.添加管理清单

ansible 172.25.254.200 -m ping
vim hosts
172.25.254.200
cat hosts|tail -n 3
ansible all --list-hosts

管理清单中没有200主机所以不能管理,可以在管理清单中,添加被控主机
在这里插入图片描述

2.生成密钥认证

ansible 172.25.254.200 -m ping

当要控制200主机时,首先会在ansible主机中生成py脚本,然后远程通过sshd服务传输到被控主机中在传文件过程中需要后者的认证通过
在这里插入图片描述解决方法1:
当执行snsible时询问ssh密码,出现pong回馈,表示和200主机之间可以实现ansible管理
在这里插入图片描述解决方法2:密钥认证

首先在node1建立新用户 devops,让ansible用devops来控制本机
在这里插入图片描述ssh-keygen 在ansible生成一对公钥和私钥
在这里插入图片描述
ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.200
给devops@172.25.254.200使用公钥加密,需要输入devops@172.25.254.200的密码验证

在这里插入图片描述

在这里插入图片描述

3.下放权力给devops

当前在200主机中运行指令的是devops这个普通用户身份所以权力很小,不能执行一些指令
在这里插入图片描述解决:visudo 下放权力给devops,在100行添加
在这里插入图片描述
在这里插入图片描述

4.ansible清单

什么是清单:定义了ansible将要管理的一批主机。

<1>静态清单
每行一个,填写主机名或ip,如:
在这里插入图片描述在这里插入图片描述

查看清单中不在组里面的主机在这里插入图片描述定义主机组
在这里插入图片描述查看组中所有的主机
在这里插入图片描述<2>定义嵌套组
ansible主机清单可以包含多个主机组构成的组,如:
在这里插入图片描述<3>通过范围简化主机规格
可以指定主机名称或ip范围或者数字和字母范围。
语法:[START:END]
在这里插入图片描述
<5>自定义查看清单

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

ansible "westos1:&westos2" --list    在westos1组中也在westos2组中
ansible 'westos1:!westos2' --list    在westos1组中也不在westos2组中
ansible '~(172|192)' --list          以172或192开头的

5.管理ansible配置文件

5.1配置文件的分类

/etc/ansible/ansible.cfg ##基本配置文件,如果找不到其他配置文件,使用这个
~/.ansible.cfg ##如果存在此配置并且当前工作目录中也,没有ansible.cfg,此文件代替/etc/ansible/ansible.cfg
./ansible.cfg ##执行ansible命令的目录中如果有ansible.cfg,就用它,不用上面俩个(推荐使用,上面俩个不常用)

5.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

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

在这里插入图片描述

5.3 构建用户级ansible操作环境

新建用户lee作为用户级主控机;
新建用户devops作为被控主机用户 ,下放权力给devops,并给密钥

[root@localhost ansible]# useradd lee
[root@localhost ansible]# echo westos|passwd --stdin lee
[root@localhost ansible]# useradd devops
[root@localhost ansible]# visudo
[root@localhost ansible]# echo westos|passwd --stdin devops
[root@localhost ansible]# ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.100

在这里插入图片描述
建立目录,编写配置文件,编写被控清单,将私钥传输给lee主控机从而建立免密

[root@localhost ansible]# su - lee   
[lee@westos_ansible ~]$ mkdir ansible
[lee@westos_ansible ~]$ cd ansible/
[lee@westos_ansible ansible]$ vim ansible.cfg

[lee@westos_ansible ansible]$ vim inventory
[lee@westos_ansible ansible]$ cat inventory 
[westos]
172.25.254.100
172.25.254.200
[lee@westos_ansible ~]$ scp root@172.25.254.100:/root/.ssh/id_rsa /home/lee/.ssh/
ansible westos -m ping

ansible.cfg

[lee@westos_ansible ansible]$ vim 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

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值