1、什么是ansible?
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能 。
2、如何安装ansible?
ansible的安装来源于epel仓库,因此在安装前需确保安装了正确的epel源:yum install -y epel-release安装ansible命令:yum install ansible -y查看ansible是否安装:rpm -qa |grep ansible ,whereis ansible查看ansible安装信息:ansible --version
文章插图
【「自动化运维」带你入门ansible】3、ansible的特点?
ansible是基于模块工作的,本身没有批量部署的能力 。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架 。主要包括:
(1) 连接插件connection plugins:负责和被监控端实现通信
(2) host inventory:指定操作的主机,是一个配置文件里面定义监控的主机
(3) 各种模块核心模块、command模块、自定义模块
(4) 借助于插件完成记录日志邮件等功能
(5) playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
4、ansible相关概念
1、Play:将一系列主机与需要在主机上运行的任务列表相关联
2、Playbook:一个ansible脚本,它指定一系列play与一批play执行的对象主机
3、Task:Ansible play中的工作单元,一个task指定一个模块和相关参数,以及一个可选名字与一些可选的参数
4、TLS(Transport Layer Security):用于Web服务器与浏览器之间相关的安全通信协议
5、Transport :Ansible用于连接到远程主机的协议与实现,默认的transport是SSH
6、Convergence(收敛性):配置管理系统的一种属性,具有这种属性的系统将会对一台服务器执行多次让服务器接近期望的状态(Ansible执行一次后就会将服务器置为期望状态,所以不具备收敛性)
5、ansible的主机清单配置?
ansible 通过读取默认的主机清单配置/etc/ansible/hosts,可以同时连接到多个远程主机上执行任务 。
文章插图
管理节点(即安装ansible的节点)上添加目标节点(即需要管理的节点)的ssh认证信息 。管理节点生成SSH-KEY:ssh-keygen添加目标节点的SSH认证信息:ssh-copy-id root@目标节点IP添加认证信息后,目标节点主机的~/.ssh/目录下将会出现一个authorized_keys文件,里面包含了ansible管理节点的公钥信息,可以检查一下是否存在 。测试ping探测test1客户主机是否存活:ansible -m ping test1
文章插图
6、ansible的常用模块?
1 、file模块
用于设定或修改文件的属性信息group:默认为空owner:默认为空path:默认为空,别名:'dest', `name'recurse:yes, no 默认为nosrc:创建连接文件时有用state:file, link, directory, hard, touch, absentfile 默认属性,如果文件不存在则不创建,并且报错,用于修改已存在文件的属性directory 如果目录不存在,则创建目录和子目录absent 递归删除文件或目录link 在创建软链接是有用hard 创建硬链接示例---- name: filehosts: localtasks:- name: filefile:src: '/tmp/{{ item.src }}'dest: '{{ item.dest }}'state: linkwith_items:- { src: 'x', dest: 'y' }- { src: 'z', dest: 'k' }
2 、synchronize 模块
archive:是否采用地规模上同步compress:开启压缩默认为开启copy_links:同步是否复制连接delete:删除源中没有而目标文件存在文件dest= 目标地址dirs 以非递归的方式传输目录mode:push或pull,默认为pushrecursive 是否递归rsync_opts 使用rsync的参数rsync-path=PATH # 指定远程服务器上的rsync命令所在路径信息rsync_timeout # 指定 rsync 操作的 IP 超时时间,和rsync命令的 --timeout 参数效果一样.set_remote_user # put user@ for the remote paths. If you have a custom ssh config to define the remote user forsrc= https://www.isolves.com/it/rj/jy/2022-02-10/# 源,同步的数据源times #--exclude=.Git 忽略同步.git结尾的文件注:同步businessdata目录下单独某个文件到对应目录,delete: yes 先清空再同步---- name: synchronize test1/sit files to develophosts: developtasks:- name: synchronizesynchronize:src: '{{ item.src }}'dest: '{{ item.dest }}'delete: yeswith_items:- { src: '/tmp1/', dest: '/tmp1/' }- { src: '/tmp2/', dest: '/tmp2/' }
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 真香啊!5个方便好用的Python自动化脚本
- 开发者的瑞士军刀「GitHub 热点速览 v.22.04」
- 服务器安全篇:最可怕的搜索引擎 运维必备之——Shodan
- 有哪些打印软件
- SEO和竞价推广的区别、优势及不足
- 文档如何自动化部署到线上环境「每个前端都可以拥有自己的博客」
- 一文详解Liquibase如何自动化数据库脚本部署
- 运维需要掌握的 17 个实用技巧
- 太好玩了!6种Python实现「实时」显示进度条
- 6个实用的 Python 自动化脚本,你学会了吗?