Ansible 工具参数详解自动化运维
一、Ansible基本概述:
Ansible是一个配置管理系统(configuration management sysytem )你只需要可以使用ssh访问你的服务器或设备就行
Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。
Ansible 通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事。
1、Ansible特点
- ansible不需要单独安装客户端,ssh相当于ansible客户端
- ansible不需要启动任何服务,仅需要安装对应工具即可
- ansible依赖大量的python模块来实现批量管理
- ansible配置文件 /etc/ansible/ansible.cfg
2. ansible批量管理服务介绍
ansible批量管理服务意义
- 提高工作的效率
- 提高工作准确度
- 减少维护的成本
- 减少重复性工作
ansible批量管理服务功能
可以实现批量系统操作配置
- 可以实现批量软件服务部署
- 可以实现批量文件数据分发
- 可以实现批量系统信息收集
3.Ansible基本架构
- 连接插件(connector plugins)用于连接主机 用来连接被管理端
- 核心模块(core modules)连接主机实现操作,它依赖具体的模块来做具体的事情
- 自定义模块(custom modules)根据自己的需求编写具体的模块
- 插件(plugins)完成模块功能的补充
- 剧本(playbooks ansible)的配置文件,将多个任务定义在剧本中,由ansible自动执行
- 主机清单(host inventory)定义ansible需要操作主机范围
最重要的一点是ansible是模块化的 它所有的操作都依赖于模块
二、Ansible安装配置
ansible的环境:
环境部署
m01 192.168.1.66 ansible管理端
backup 192.168.1.69 ansible受控端
nfs 192.168.1.70 ansible受控端
web01 192.168.1.67 ansible受控端
1、安装ansible,需先安装epel扩展源
[root@localhost yum.repos.d]# rpm -Uvh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@localhost yum.repos.d]# yum install eprl-release
检查epel源中有无ansible
[root@localhost ~]# yum list ansible
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository mysql57-community is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Available Packages
ansible.noarch 2.9.14-1.el7 epel
安装ansible
[root@localhost ~]# yum install -y ansible
查看版本号
[root@m01 ~]# ansible --version
hosts:被管理机的IP或主机名列表
ansible.cfg:主配置文件
roles: 角色或插件路径
2、ssh部署公钥认证
#利用非交换工具实现批量分发公钥与批量管理服务器
[root@m01 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.69
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.70
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.67
3、配置ansible主机清单
主机清单配置文件 /etc/ansible/hosts
[root@m01 ~]# vim /etc/ansible/hosts
4、验证ansible
[root@m01 ansible]# ansible cm -m ping
如果报一下错误
192.168.1.11 | FAILED! => {
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
}
产生原因:控制端与被控制端第一次通讯,需要先添加指纹信息
解决方法:ssh 192.168.1.11 (被控制端ip)
如果被控制端机器比较的情况下:
修改 /etc/ansible/ansible.cfg 中的host_key_checking = False
三、ansible服务架构信息
主机清单配置
- 软件模块信息 OK
- 基于秘钥连接主机 OK
- 主机需要关闭selinux OK
- 软件剧本功能
四、Ansible常见模块
调用模块来部署架构
安装软件包
修改配置文件
创建程序用户组
创建目录,并修改所属和权限
启动服务
挂载
测试
在ansible中时指需要快速执行一条命令,并且不需要保存的命令,对于复杂的命令则为playbook
模块的应用语法格式:
ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) "执行什么动作"
Ansible注意事项--->提示颜色信息说明
黄色:对远程节点进行相应的修改
绿色:对远程节点不进行相应修改,或者只对远程节点信息进行查看
红色:操作执行命令有异常
紫色:表示对命令执行发出警告信息(可能存在问题)
1.command模块
主要执行Linux的基础命令,可以执行远程服务器命令执行、任务执行
[root@localhost ansible]# ansible -k -i /etc/ansible/hosts all -m command -a 'date'
SSH password:
192.168.1.11 | CHANGED | rc=0 >>
Thu Dec 29 15:30:11 CST 2022
192.168.1.6 | CHANGED | rc=0 >>
Thu Dec 29 15:30:12 CST 2022
all:代表/etc/ansible/hosts内所有机器
[root@localhost ansible]# ansible -k -i /etc/ansible/hosts all -m command -a 'ping www.baidu.com -c 1'
SSH password:
192.168.1.6 | CHANGED | rc=0 >>
PING www.a.shifen.com (180.101.49.13) 56(84) bytes of data.
64 bytes from 180.101.49.13 (180.101.49.13): icmp_seq=1 ttl=54 time=6.22 ms --- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 6.229/6.229/6.229/0.000 ms
192.168.1.11 | CHANGED | rc=0 >>
PING www.a.shifen.com (180.101.49.13) 56(84) bytes of data.
64 bytes from 180.101.49.13 (180.101.49.13): icmp_seq=1 ttl=54 time=5.89 ms --- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.890/5.890/5.890/0.000 ms
2.shell模块
用于远程客户端上执行各种shell命令或运行脚本
#默认模块,执行命令
[root@m01 ansible]# ansible cm -m command -a "hostname"
#如果需要一些管道操作,则使用shell
[root@m01 ansible]# ansible cm -m shell -a "df -h | grep /$" -f 3
# -f=forks /etc/ansible/ansible.cfg #结果返回的数量
注意:command和shell模块的区别:
command只能调用一条指令
shell可以使用管道
3.yum模块
用于软件的安装、升级、卸载
[root@m01 ansible]# ansible web -m yum -a "name=httpd state=installed"
name ---指定要安装的软件包名称,如果有多个,用","隔开
state ---指定使用yum的方法
installed,present ---安装软件包
removed,absent ---移除软件包
latest ---安装最新软件包
4.copy模块
src ---推送ansible的源文件或目录,空文件不能复制
dest ---推送客户端的目录或文件,需要绝对路径
backup ---对推送传输过去的文件,先备份原始文件
content ---将指定文件的内容复制到远程文件内
group ---将本地文件推送到远端,指定文件属组信息
owner ---讲本地文件推送到远端,指定文件属主信息
mode ---将本地文件推送到远端,指定文件权限信息
force --覆盖远程主机不一致的内容
#推送文件模块
[root@m01 ansible]# ansible cm -m copy -a "src=/etc/hosts dest=/tmp/test.txt"
#在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份
[root@m01 ansible]# ansible cm -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup =yes"
#直接向远端文件内写入数据信息,并且会覆盖远端文件内原有数据信息
[root@m01 ansible]# ansible cm -m copy -a "content='cm' dest=/tmp/cm"
案例:批量推送hosts文件,并备份
[root@m01 ~]# ansible cm -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes"
案例2:添加rsync认证文件和rsync客户端密码文件
添加rsync服务端认证文件:
[root@m01 ~]# ansible backup -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"
[root@m01 ~]# ansible backup -m shell -a "ls -l /etc/rsync.password"
192.168.1.69 | CHANGED | rc=0 >>
-rw------- 1 root root 14 Nov 13 10:50 /etc/rsync.password
[root@m01 ~]# ansible backup -m shell -a "cat /etc/rsync.password"
192.168.1.69 | CHANGED | rc=0 >>
rsync_backup:1
添加rsync客户端密码文件
[root@m01 ~]# ansible cm -m copy -a "content='1' dest=/etc/rsync.pass owner=root group=root mode=600"
5.service模块
用于远程客户端的各种服务管理,包括启动、停止、重启、重新加载
[root@m01 ~]# ansible cm -m service -a "name=crond state=stopped enabled=yes"
name #定义要启动服务的名称
state #指定服务状态时停止或是运行,停止和运行指令要写成过去式
started #启动
stopped #停止
restarted #重启
reloaded #重载
enabled #是否让服务开启启动
6.user模块
主要用于操作系统用户、组、权限、密码
7.cron模块
用于添加、删除、更新crontab任务计划
8.synchronize 模块
用于目录、文件同步,主要基于命令rsync命令工具同步目录和文件
Ansible 工具参数详解自动化运维的更多相关文章
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- 详解Linux运维工程师
运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- 详解Linux运维工程师高级篇(大数据安全方向).
hadoop安全目录: kerberos(已发布) elasticsearch(已发布)http://blog.51cto.com/chenhao6/2113873 knox oozie ranger ...
- 3.3、Ansible命令参数详解
0.ansible 命令参数详解: [root@localhost ~]# ansible Usage: ansible <host-pattern> [options] Options: ...
- 详解Linux运维工程师应具备的十大技能
Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究 ...
- 详解Linux运维工程师必备技能
张戈大神是腾讯的一名运维,张戈博客也是我接触到第一个 Linux 运维师的博客,最近也在接触 Linux,说到工具,在行外可以说是技能,在行内一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几 ...
- 详解Linux运维工具:运维流程管理、运维发布变更、运维监控告警
概述 应用上线后,运维工作才刚开始,具体工作可能包括:升级版本上线工作.服务监控.应用状态统计.日常服务状态巡检.突发故障处理.服务日常变更调整.集群管理.服务性能评估优化.数据库管理优化.随着应用 ...
- ansible puppet saltstack三款自动化运维工具的对比
一.基础介绍 ansible基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149671.htm puppet基础介绍可参考:http://www.linu ...
- nginx 编译参数详解(运维必看--转)
nginx参数: –prefix= 指向安装目录 –sbin-path 指向(执行)程序文件(nginx) –conf-path= 指向配置文件(nginx.conf) –error-log-path ...
随机推荐
- ssl 导入和配置
https://blog.csdn.net/qq_23663693/article/details/121698553
- dvwa sql盲注教程
原文地址:https://www.jianshu.com/p/757626cec742 一.DVWA-SQL Injection(Blind)测试分析 SQL盲注 VS 普通SQL注入: 普通SQL注 ...
- ABAP SmartForms开发脚本补丁
当时因为编辑不舒服找了还挺久的Smartforms开发脚本补丁,这里记录一下 补丁下载路径:http://www.drv5.cn/sfinfo/16341.html 当安装补丁后不再以Word形式展现 ...
- ORACLE查看会话的大小及终止会话
一.出现PGA不足时,我们可以查看用户会话大小,结束相应会话 方法一 Select Server, Osuser, Name, Value / 1024 / 1024 Mb, s.Sql_Id, Sp ...
- 模块二:os模块、sys模块、json模块、pickle模块,包
os模块 1 os模块是与操作系统交互的一个接口 2 import os: 3 1.获取当前工作目录 4 print(os.getcwd()) 5 6 2.切换到D:\yuan文件目录 7 os.ch ...
- react native android9 axios network error
react native 发布成apk后网络请求会报 network error 是因为android9以后http协议不能用,要用htts协议.需要改成配置能兼容http协议,修改信息如下: and ...
- 实现MybatisPlus乐观锁
1.实体类中添加version字段及相关注解 @Version@TableField(fill = FieldFill.INSERT)//第一次添加数据时使其有个默认值1private Integer ...
- TypeScript - 安装,类型
// 要使用typescript需要全局安装 通过tsc -v 来验证是否安装成功 npm i -g typescript// ts 文件中完全可以写js语法, 完全兼容js // ts 本身在运行时 ...
- 在linux环境下自动执行python脚本
有时候编辑的py文件,需要进行自动执行时,可以用以下方式进行定时 00 09 * * * /usr/local/bin/python3 /udata/ubi/uenbi_py/trade_all_da ...
- 通过flask完成web实时播放视频
def gen(): r = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB, password=PASS_WORD) ...