运维实操——ansible(一)安装、参数详解、资源清单、用户级ansible环境

1、什么是Ansible?

Ansible是近年越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率,一个人管理多个操作系统。常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。

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

2、ansible的安装

环境中所用的系统版本与软件源版本保持一致,这里都使用的是8.2版本。
实验准备两台虚拟机westosa(172.25.254.100)做ansible主机,westosb(172.25.254.200)是被控制的node节点。
westosa配置ip为172.25.254.100
在这里插入图片描述
修改westosa的域名为westos_ansible.westos.org
在这里插入图片描述
westosb配置ip为172.25.254.200
在这里插入图片描述
修改westosb的域名为westos_node1.westos.org
在这里插入图片描述
ansible主机配置软件仓库
在这里插入图片描述
ansible可以下载epel源,然后直接安装就可以。这里用了另一种方法,首先ansible的依赖性中sshpass这个软件在镜像中没有,其他的依赖性在镜像中都有,所以我们提前下载sshpass的rpm包和ansible的rpm包,安装sshpass
在这里插入图片描述
然后安装ansible
在这里插入图片描述
查看ansible的版本,说明已经成功安装ansible
在这里插入图片描述

3、使用Ansible的参数

进入/etcansible目录,可以看到ansible.cfg主配置文件,hosts默认清单文件,roles角色。ansible all --list-hosts列出所有的受控制的主机,发现没有,进入hosts文件,在最后一行添加172.25.254.200,再次列出,就可以看到受控制的主机有172.25.254.200这台主机。
在这里插入图片描述
-m表示模块,使用ping这个模块连接,-k参数是询问ssh的密码,出现pong回馈说明,成功连接
在这里插入图片描述
由于root权限调用node1权限太大,所以我们一般用普通用户的身份进入受控节点,执行操作,创建devops用户,给密码
在这里插入图片描述
但是每次输入密码太麻烦,想ssh免密登陆,ansible把rsa公钥给被控节点的devops用户
在这里插入图片描述
ssh的方式默认是root用户登陆,而上面我们给的是被控节点的devops用户,所以报错,只要指定了登陆的用户devops就好了
在这里插入图片描述
执行命令时,是devops的用户,没有权力(mnt对其他人没有写的权限)
在这里插入图片描述
直接在node1上测试,devops确实没有权限操作mnt
在这里插入图片描述

所以要下放权力给devops,node1打开visudo
在这里插入图片描述

给devops用户所有权限
在这里插入图片描述
-K输入sudo的密码,并且加入–become参数,表示使用sudo执行命令,才能真正提权,而不是直接执行
在这里插入图片描述
在node1上成功建立文件
在这里插入图片描述

每次输入sudo的密码也很麻烦,node1编辑visudo
在这里插入图片描述

NOPASSWD免密登陆sudo
在这里插入图片描述
现在不用-K,就可以sudo登陆,删除文件
在这里插入图片描述
node1查看,已删除
在这里插入图片描述

4、构建Anisble清单

默认清单是用hosts文件,如果自己创建一个westos文件,无法读取,需要使用-i参数指定westos文件查看清单
在这里插入图片描述
查看未定义组的清单
在这里插入图片描述
设定单层清单,两个组westos1和westos2
在这里插入图片描述
也可以设定嵌套清单,westos大组包括westos1和westos2
在这里插入图片描述
通过指定主机名称或IP的范围可以简化Ansible主机清单
在这里插入图片描述
也可以用域名的方式设定清单
在这里插入图片描述
列出192*,可以列出192这个组,也可以列出192的清单
在这里插入图片描述
下面测试正则表达式,列出带172或192的
在这里插入图片描述
列出在westos1组中,也在westos2组中的
在这里插入图片描述
列出在westos1但是不在westos2中的
在这里插入图片描述
列出172开头的或者192开头的
在这里插入图片描述

5、Ansible配置文件参数详解

/etc/ansible/ansible.cfg文件参数

自己制作的westos文件清单,为什么无法列出呢,是因为在配置文件中inventory指定清单路径为/etc/ansible/hosts
在这里插入图片描述
inventory中添加清单路径
在这里插入图片描述
再次执行,可以列出
在这里插入图片描述
remote_tmp和local_tmp是远端的本地的临时文件路径。当执行ansible后,主机生成py临时脚本,ssh发送到受控主机,受控主机执行完删除该临时文件,主机也会删除临时文件
在这里插入图片描述
测试,执行等待30秒
在这里插入图片描述
在这30秒内,可以看到node1存在py临时文件
在这里插入图片描述
同样在这30秒内,ansible主机有py临时文件,一旦执行完毕,自动删除py脚本
在这里插入图片描述
打开ask_pass后,每次执行ansible时询问连接用户密码
在这里插入图片描述
输入密码
在这里插入图片描述
配置文件恢复正常
在这里插入图片描述
查看主机名时,正常
在这里插入图片描述
如果删除了~/.ssh/known_hosts文件,那么连接时,连接受控主机会询问是否接受受控主机发送过来的身份认证key,会要求输入yes,但是如果一百台node都要输入yes挺累的。
在这里插入图片描述
所以修改配置文件中的host_key_checking参数,关闭他,不再询问是否接受
在这里插入图片描述
ssh连接时自动输入yes
在这里插入图片描述
默认使用的模块是command,可以改为ping
在这里插入图片描述
默认使用模块为ping
在这里插入图片描述
在远程主机中用devops用户执行指令时,转换用户身份;转换用户身份执行命令时,用sudo调用;转换成root用户;执行sudo指令时,不提示输入密码
在这里插入图片描述
成功执行
在这里插入图片描述
连接远程主机的用户为devops
在这里插入图片描述
执行成功
在这里插入图片描述

常用配置参数含义
#[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

6、构建用户级Ansible操作环境

ansible的主配置文件只有一个,如果每个用户的配置不一样,怎么办,需要把配置独立出来,一个用户一个配置文件。
比如ansible主机上的lee用户,先创建lee,给密码,创建lee的snasible目录,编辑配置文件,在当前目录下,会优先找本目录的ansible.cfg文件,找不到才找/etc/ansible/ansible.cfg文件,所以想用该ansible.cfg文件,必须在这个目录中。
在这里插入图片描述
指定一些参数,
在这里插入图片描述
ansible主机本身也可以是受控节点
在这里插入图片描述
100中创建devops用户
在这里插入图片描述
root把私钥给lee用户,测试,200的devops可以成功,100的devops不行
在这里插入图片描述
root把对应的公钥给100的devops用户
在这里插入图片描述
并给devops用户做提权
在这里插入图片描述
切换lee用户,执行成功
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值