ansible的介绍与基本应用

1. ansible简介

ansible是开源自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

2. ansible的优点

1.跨平台支持
2.人类可读自动化: ansible提供linux,Windows,unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境
3.完美描述应用:playbook
4.轻松管理版本控制:playbook是纯文本,可视作源代码
5.支持动态清单
6.编排可与其他系统轻松集成:puppet、jenkins
7.基础架构即代码
8.减少人为错误

3. 安装ansible

①:在安装ansible之前确保已经在实验主机上搭建epel仓库
②:安装ansible dnf install -y ansible
在这里插入图片描述

4. ansible 的部署

4.1 构建ansible清单

清单:定义了ansible将要管理的一批主机;
默认主机清单 :/etc/ansible/hosts
示例:
在这里插入图片描述
注意:一台主机可以存在于多个主机组
还可以通过范围简化主机规格
在这里插入图片描述

4.2. 列出主机
命令作用
ansible all --list-hosts#列出清单中所有受管主机
ansible ungrouped --list-hosts列出不属于某个组的主机
ansible webservers --list-hosts#列出属于webservers组的主机

示例:
①:vim /etc/ansible/hosts ##编写主机清单
在这里插入图片描述
②:列出主机
在这里插入图片描述

4.3. 自定义清单

① 建立清单目录 : mkdir deploy-inventory
② 编写主机清单 : vim inventory
在这里插入图片描述
③:列出主机

命令作用
ansible all f -i inventory --list-hosts列出清单中所有受管主机
ansible ungrouped -i inventory --list-hosts列出不属于某个组的主机
ansible webservers -i --list-hosts列出属于webservers组的主机

在这里插入图片描述

4.4. 管理ansible配置文件

配置文件:

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

管理配置文件中的设置:

  • [defaults] #部分设置ansible操作的默认值
  • [privilege_escalation] #配置ansible如何在受管主机上执行特权升级

示例:
在当前工作目录下创建配置文件 vim ansible.cfg
在这里插入图片描述
ansible webservers -i inventory --list-hosts -v ##显示webservers组使用的配置文件
在这里插入图片描述 如何使用siudo下放权利:
vim /etc/sudoers.d/student ##为student建立一个下放权限的文件
在这里插入图片描述

5. 运行临时命令

使用临时命令可以快速测试和更改,无需编写playbook
格式:
ansible host-pattern -m module [-a 'module arguments'] [-i inventory]
①:检查能否在受管主机上运行python模块ansible all -m ping
在这里插入图片描述
②:使用临时命令通过模块执行任务ansible-doc -l #列出所有模块
③:ansible-doc ping #查看ping模块帮助文档
常用ansible模块:

文件模块:
     	-copy:将本地文件复制到受管主机
		-file:设置文件的权限和其他属性
		-lineinfile:确保特定行是否在文件中
		-synchronize:使用rsync同步内容

系统模块:
     	-firewalld:使用firewalld管理任意端口和服务
		-reboot:重启
		-service:管理服务
		-user:添加、删除和管理用户账户

Net Tools模块:	
        -get_url:通过http、https、或者ftp下载文件
		-nmcli:管理网络
		-uri:与web服务交互

示例:
①:使用user模块确保student用户存在于rhel8_no1.test.com且uid为1000
在这里插入图片描述
②:使用command模块执行临时命令 (通过-u 选项使用student进行连接并执行id命令)
在这里插入图片描述
注意:command模块允许执行远程命令,但这些命令不是shell处理,所以无法访问shell环境变量,所以不能执行重定向、传送等操作
③:使用copy模块,以student用户登录,使用root权限,把“westos ansible”复制给192.168.1.19主机的/etc/mo
td文件 (- -become 给student用户权限提升)
在这里插入图片描述
在192.168.1.19受管主机上查看文件内容,copy模块复制内容成功
在这里插入图片描述
ssh远程登录192.168.1.19主机时会显示更改的内容
在这里插入图片描述
④:使用copy模块,修改192.168.1.19受管主机的apache默认发布页面
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值