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 ...
随机推荐
- protobuf遇坑总结
在一个vs2013解决方案下创建了三个工程文件,在其中一个工程(Foundation)中放有CtrlMessage.pb.h和ControlMessageTags的头文件.编译后出错总共68处. 错误 ...
- Win10家庭版安装docker desktop
1.开启Hyper-V在桌面新建hyperv.cmd文件,内容如下: pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*H ...
- SAP 没有开工的产线 闲置成本 处理方案
SAP 没有开工的产线 闲置成本 处理方案 需要沟通的请联系 wx :erpworld
- 51nod1355
没啥意思的板子题. 首先,众所周知, \[\gcd\{f_a,f_b\}=f_{\gcd\{a,b\}} \] 所以考虑将 \(\operatorname{lcm}\) 转化为 \(\gcd\). \ ...
- 理解函数调用_arguments对象作为函数参数的别名
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 异步按照同步顺序执行的function
function step1 (callback) { console.log(111111) callback.call() } function step2 (callback ...
- C语言所有的数据类型
整型数据类型:char 1 字节 -128 到 127 或 0 到 255unsigned char 1 字节 0 到 255signed char 1 字节 -128 到 127int 2 或 4 ...
- nvm在windows下安装与使用
1.卸载本地已经安装的所有node 2.nvm下载 下载地址https://github.com/coreybutler/nvm-windows ,选择nvm-noinstall.zip 放在本地盘, ...
- verilog 进制的表示
n'b 是二进制 n'h 是十六进制 n'd 是四进制 n是位数
- Vue+Element+Table表格动态跨列文章
https://my.oschina.net/u/4772459/blog/4699602 如图所示: 1 <template class="SysRole"> 2 & ...