自动化运维工具之Ansible

目录

一、自动化运维

1、通过xshell自动化运维

2、Ansible简介

3、Ansible特点及优势

4、Ansible核心程序

5、Ansible工作原理及流程

6、部署Ansible自动化运维工具

7、Ansible常用模块

(1) ansible命令行模块

(2) command模块

(3) shell模块

(4) cron模块

(5) user模块

(6) grup模块 

(7) copy模块

(8) file模块

(9) hostname模块

(10) ping模块

(11)yum模块

(12)service/system模块

(13)script模块 

(14)setup模块

8、hostsinverntory主机清单

(1)inventory 中的变量含义

(2)主机变量使用

(3)组变量使用

(4)组嵌套使用 


一、自动化运维

1、通过xshell自动化运维

xshell提供会话窗口同步发送命令功能,但是必须将多台机器同时通过xshell窗口连接然后输入命令,如下点击xshell中的工具---发送键输入到--所有窗口(或选择指定窗口)

2、Ansible简介

Ansible是基于模块工作的,只是提供了一种运行框架,本身没有完成任务的能力,真正操作的是Anisble的模块。每个模块都是独立的、实现了批量系统配置、批量程序部署、批量运行命令等功能。

3、Ansible特点及优势

优势:

①轻便性:无需在被控制服务器上安装客户端,Ansible基于ssh协议

②幂等性:大部分模块有幂等性,即如果输入systemctl stop firewalld当发现要停止的服务已经停止就不会做任何操作了,多次停止不会改变结果。systemtl restart是非幂等的。

③判断性:大部分模块在执行时都会判断目标节点是否要执行任务,所有重复执行某个任务大部分时间不会产生副作用

④简介性:一个窗口即可管理所有需要控制的机器,无需开启多个窗口

 特点:

①部署简单,只需要主控端部署Ansible环境,被控端无需做任何操作;

②默认使用SSH协议设备进行管理;

③主从集中化管理;

④配置简单、功能强大、扩展性强;

⑤支持API及自定义模块,可以通过Python轻松扩展

⑥通过playbooks来定制强大的配置、状态管理

⑦对云平台和大数据都有很好的支持

4、Ansible核心程序

①HostInventory:记录由Ansible管理的主机信息,端口,ip,密码等

②playbooks:'剧本'YAML格式文件,多任务定义在一个文件中,定义主机需要调用那些模块完成功能

③core modeules:核心模块主要操作通过调用核心模块来完成管理任务

④customodules:自定义模块,完成核心模块无法完成的模块,支持多种语言编写

⑤connectiontugins:连接插件,ansible和主机通信使用(ssh协议)

5、Ansible工作原理及流程

①加载自己的配置文件,默认/etc/ansible/ansible.cfg

②查找对应的主机的配置文件,找到要执行的主机或组/etc/ansible/hosts文件

③加载自己对应的模块文件,如command、yum、ping、

④通过ansible将模块命令生成对应的临时py文件(类似python脚本),并将该文件传输至被管理端

⑤传输到在被控制端的对应用户的家目录下.ansible/tmp/xxx/xxx.py

⑥被控制端给传输过来的py文件加执行权限

⑦执行并返回结果,执行完成后删除py文件并sleep 0退出

6、部署Ansible自动化运维工具

yum install  -y epel-release 
#安装epel-release
yum install -y  ansible
#安装ansible
#配置文件位置:/etc/ansible/ansible
#hosts文件位置:/etc/ansible/hosts
vim /etc/ansible/hosts
#编辑hosts文件添加被管理的机器,内容如下
[webservers]
192.168.30.12
192.168.30.13
#[webservers]为一个组,组内2个服务器,添加完毕保存退出
ssh-keygen
#生成公钥,输入命令输入4个回车即可
cd ~/.ssh
ssh-copy-id -i   192.168.30.12
ssh-copy-id -i   192.168.30.13
#进入生成的公钥路径将公钥传输给备管理的服务器,传输需要输入每台备管理服务的root密码
ansible ansible-doc  -l 
#安装完毕,此命令可以查看有哪些ansible模块,按q退出
ansible  webservers  -m command  -a 'pwd'
#安装完成尝试管理webservers组输入pwd命令
ansible  all   -a 'ls'
#安装完成尝试管理所有hosts中主机输入ls命令,不指定模块默认为command模块
ansible  192.168.30.12  -m -a 'ls'
#安装完成尝试管理192.168.30.12服务器输入pwd命令

7、Ansible常用模块

(1) ansible命令行模块

命令格式:ansible <组名>/ip -m <模块> -a<参数列表>

ansible-doc -s 模块

#  -s列出指定模块的描述信息和操作动作

(2) command模块

#此模块不能使用管道符和重定向,指定模块默认为commend模块

举例:ansible  webservers   -m   command   -a  'date'

#调用command模块在192.168.30.11服务器上执行ls命令,若不指定则默认为command模块

(3) shell模块

#用远程主机的shell进程,打开一个子shell进行命令操作,支持管道符和重定向

举例:ansible webservers -m shell -a 'ifconfig ens33 |awk "NR==2{print \$2}"'
#提取webservers组中的所有ip地址,注意双引号不识别变量所以要加转义符\

(4) cron模块

#远程主机定义计划任务,2种状态present(添加)和absent(移除),默认为present。

常用参数:minute/hour/day/month/weekday:分/时/日/月/周

job:任务计划要执行的命令

name:任务计划的名称

举例:ansible  webservers -m cron  -a 'name=crontest hour="*/12"  day="*/1" job="/usr/bin/echo   cron test "   ' 

        ansible webservers -m cron -a "name=crontest  state=absent"

(5) user模块

#用户管理模块

常用参数:name:用户名;shell:用户默认shell;uid:指定用户uid;group:指定用户基本组

                 state:账户状态present增加/absent删除;system:是否为系统用户yes/no;

                 move_home:yes/no若创建用户的家目录存在是否移动;

                remove:yes/no当state=absent时是否删除家目录;

                passwd:指定用户的密码;comment:用户的注释信息

举例:ansible webservers -m user -a 'name="crontest"  uid="10086"  group="root"'

           ansible webservers -m user -a 'name=crontest    state=absent  remove=yes'

(6) grup模块 

 #用户组模块

常用参数: name:组名称 gid:组id system:是否为系统组

(7) copy模块

 #复制文件或输出内容到被控制服务器上

常用参数:

mode:指出复制时,目标文件的权限

owner:指出复制时,目标文件的属主(对面无此组或此主会报错)

group:指出复制时,目标文件的属组

dest=‘路径’:目标文件路径

src=‘路径’:源文件路径

content=‘字符串内容’:将字符串内容复制到到目标文件中,等于重定向即覆盖,不能与src同用

举例:       ansible webservers -m copy   -a "src=/a.txt  dest=/opt/"

                  ansible webservers -m copy   -a 'content="123456"  dest=/opt/a.txt'

(8) file模块

文件属性管理模块

常用参数:owner:文件的属主;group:文件属组;mode:文件权限;path:文件路径

                       指定的属主和属组不存在会报错

举例:ansible  webservers  -m  file  -a  'ower=lhj group=lhj mode=777 path=/opt/a.txt'    

(9) hostname模块

修改被控制端的主机名

参数:name:指定被控端的主机名 

举例:ansible  webservers -m hostname -a "name=ansible"

(10) ping模块

检测ansible与被控端的网络连通性

举例:ansible  webservers  -m ping 

(11)yum模块

在远程主机上yum安装与卸载软件包

常用参数:name:指定要安装卸载的软件;state=present/absent,默认persent添加,absent卸载

举例:ansible   webservers  -m  yum  -a  "name=httpd"

(12)service/system模块

管理远程被控制主机上的管理服务的运行状态

常用参数: name=“名称” :管理的服务名称

enable=true/false 设置服务开机自启或关闭

state=start/stop/restart 设置服务的状态为开始/关闭/重启

enable=yes/no        设置是否开机自启;runlevel:若设置开机自启则要设置在那些系统等级使用

举例:ansible webservers -m service -a 'enabled=yes  name=httpd state=started'

(13)script模块 

实现远程批量运行本地的shell脚本

ansible服务器:
vim  /test.sh
#编写/下的test.sh脚本内容如下
#!/bin/bash
echo  "this is test"
chmod +x /test.sh
ansible webservers -m script -a "/test.sh"

(14)setup模块

setup 模块可以获取这些信息 facts 组件收集d 被管理节点信息

参数:filter 过滤可配合正则表达式。

ansible webservers -m setup -a 'filter=*ipv4'

8、hostsinverntory主机清单

 hosts配置文件位置:/etc/ansible/hosts;

Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内

(1)inventory 中的变量含义


ansible_host            ansible连接节点时的IP地址
ansible_port            连接对方的端口号,ssh连接时默认为22
ansible_user           连接对方主机时使用的主机名。不指定时,将使用执行ansible或ansible-playbook命令的用户
ansible_password                           连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_ private_key_file         指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args            提供给ssh、sftp、 scp命令的额外参数
ansible become                               允许进行权限提升
ansible become_ method                指定提升权限的方式,例如可使用sudo/ su/runas等方式
ansible become_user                      提升为哪个用户的权限,默认提升为root
ansible_become_password            提升为指定用户权限时的密码

(2)主机变量使用

写法1:
[webservers]
192.168.30.11 ansible_port=22 ansible_user=root ansible_password=abc123
192.168.30.12 ansible_port=22 ansible_user=root ansible_password=abc123
#webservers组中被控制端192.168.30.11的端口号为22登录时用户是root密码为abc123
写法2:
[webservers]
192.168.30.1[1:2] ansible_port=22 ansible_user=root ansible_password=abc123
#如果是名称类似的主机,可以使用列表的方式标识各个主机
写法3:
[webservers]
192.168.30.11:22
192.168.30.12:22
#默认ssh管理时的端口为22,若不是22则直接在被管理ip后加冒号和对应端口号

(3)组变量使用

[webservers:vars]     
ansible_user=root
ansible_password=abc123
#表示webservers 组内所有主机定义变量控制时使用root账户密码为abc123
[all:vars]       
ansible_port=22
#表示为所有组的所有主机定义变量使用ssh远程管理时都是22端口

(4)组嵌套使用 

#nginx组
[nginx]
192.168.30.11
192.168.30.12
#httpd组
[httpd]
192.168.30.13
192.168.30.14
#组内嵌为web
[web:children]
nginx
httpd
#表示web组的成员即children的直译‘孩子’包括nginx和httpd组
asddASD323432
关注 关注
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ansible自动化运维
02-24
ansible自动化运维ansible自动化运维ansible自动化运维ansible自动化运维
自动化运维工具Ansible详细部署
weixin_33915554的博客
11-20 1201
==========================================================================================一、基础介绍==========================================================================================1、简...
运维自动化之——Ansible
最新发布
rmh0713的博客
03-12 1339
xshell提供会话窗口同步发送命令功能,但是必须将多台机器同时通过xshell窗口连接然后输入命令,如下点击xshell的工具---发送输入--到所有窗口或者指定窗口。举例:ansible webservers -m file -a 'ower=lhj group=lhj mode=777 path=/opt/a.txt'举例:ansible webservers -m user -a 'name="crontest" uid="10086" group="root"'
自动化运维工具——ansible详解(一)
weixin_30950887的博客
12-05 325
ansible 简介 ansible 是什么?   ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。   ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansib...
自动化运维工具Ansible
weixin_33701617的博客
10-10 91
一、简介 1.1 基本概念: ansible是一个基于python开发的轻量级自动化运维管理工具,可以用来批量执行命令,安装程序,支持playbook编排。它通过ssh协议来连接主机,去中心化,相对比puppet和saltstack无需安装客户即可实现文件传输、命令执行、应用部署、配置管理、任务编排等,显得更为简单与轻量。ansible...
Ansible 自动化运维
weixin_64813315的博客
06-30 5703
自动化运维参考
自动化运维工具ansible
02-25
其中puppet最受欢迎3、批量程序的部署4、批量命令的运行查看状态信息ansible的架构大致如下ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量...
自动化运维工具ansible学习笔记
08-29
自动化运维工具ansible学习笔记
自动化运维工具——ansible详解(一) - 珂儿吖 - 博客园.html
05-27
自动化运维工具——ansible详解(一) - 珂儿吖 - 博客园.html
Linux 自动化运维工具 ansible
01-09
ansible是一个自动化运维工具,基于python开发,实现了批量系统配置、批量程序部署、批量命令执行等功能; 2.安装 只需要在客户端机器上安装ansible命令,无需每台服务器都安装。 安装命令:yum install -y ansible ...
自动化运维工具 Ansible
weixin_30512089的博客
10-07 136
学习Ansible的系列文章 Ansible 介绍 Ansible 架构 Ansible 安装 Ansible 配置文件及参数 Ansible 常用模块 Ansible playbook 1. Ansible 介绍 Ansible 是一个配置管理和应用部署工具,只需要通过 ssh 访问服务器或设备即可实现批量系统配置、程序部署、运行命令等功能。 Ansible 是基于...
自动化运维管理工具——Ansible
wuds_158的博客
06-22 3043
1、部署简单,没有客户端,只需在主控端部署Ansible环境,被控端无需做任何操作;2. 模块化:调用特定的模块,完成特定任务3. 默认使用SSH协议对设备进行管理;4. 主从集中化管理;5、配置简单、功能强大、扩展性强;6、支持API及自定义模块,可通过Python轻松扩展;7、通过Playbooks来定制强大的配置、状态管理8. 对云计算平台、大数据都有很好的支持;9. 具有幂等性:一个操作在一个主机上执行一遍和执行N遍的结果是一样的1、连接插件connection plugins:负责和被监控端实现通
Ansible---------常用模块
weixin_44898311的博客
09-14 239
介绍: ansible是基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点 具有批量系统配置、批量程序部署、批量运行命令等功能。 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。 操作: 以下通过实际演练来更好的理解ansible的工作原理 使用三台机器组建ansible使用环境 注意:三台主机要网络同步时间,101主机作为ansible控制机,106和107主机作为普通
Ansible自动化运维
qq_45078274的博客
06-03 2990
ansible自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,无客户端。管理节点management定义主机组,通过SSH连接远程主机,使用功能模块实现对node节点的部署操作。通过编写playbook来实现较为复杂的项目。ansible域名解析 2、安装ansible 3、定义主机清单 变量表 三、Ansible模块 Ad-Hoc-点对点模式 ②、复制模块 ③、用
自动化运维工具——ansible详解(一)
09-03
自动化运维工具——ansible是一款开源的IT自动化工具,广泛应用于软件部署、配置管理和任务协同等领域。它的最大特点是简单易用、功能强大且跨平台。 首先,ansible具有简单易用的特点。它使用简单的YAML语言作为配置文件,无需编写复杂的脚本。用户只需要简单地定义主机和操作即可完成任务的执行。这使得即便是非开发人员,也能轻松上手使用ansible进行自动化管理。 其次,ansible功能强大。它支持广泛的操作系统、云平台和网络设备,并提供了丰富的模块化功能。通过在任务中使用ansible的模块,我们可以实现系统配置、软件安装、文件传输等各种常见操作。此外,ansible不仅支持并发执行任务,还能够将任务分组执行,并提供了强大的变量和条件控制功能。 再次,ansible跨平台。无论是在Linux、Unix还是Windows系统上,ansible都能够良好地运行。此外,它还支持云平台,如AWS、Azure等,以及网络设备,如Cisco、Juniper等。这使得ansible成为一个非常灵活的自动化运维工具,能够满足各种不同环境和需求的自动化管理。 最后,ansible还具有良好的社区支持。ansible拥有庞大的用户社区和活跃的开发者社区,有大量的文档、示例和插件可供参考和使用。这使得我们在使用ansible时能够获得快速解答和支持,同时也能够从社区中学习到更多的技巧和经验。 总而言之,ansible是一款简单易用、功能强大且跨平台的自动化运维工具。它在软件部署、配置管理和任务协同等方面具有广泛的应用,并且得到了良好的社区支持。无论是企业还是个人,都可以通过ansible来提高工作效率和自动化管理水平。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 网络基础之IP地址分类及划分 13691
  • Nginx实现自签名SSL证书生成与配置 9287
  • 数据库:Redis数据库 8806
  • Linux系统Shell脚本第三章:for、while循环及脚本实操 7995
  • Linux系统服务:Apache安装及配置应用 5360

最新评论

  • 网络基础之IP地址分类及划分

    weixin_42758849: 全位为的才1定义为广播地址,A类地址哪里你写错了

  • ACL和NAT介绍及EASY-IP原理实验

    Maple987: PC1和PC2ping的时候显示无法回显

  • 一篇学会Gitlab搭建及使用

    好的不坏: 可以了,可能是之前安装的宝塔应用没有卸载干净,有冲突了,重新建了个虚拟机,再装一边就正常了表情包

  • Zabbix自定义监控mysql数据库、自动注册服务器及部署代理服务器

    asddASD323432: 你装的什么版本呢,4.0之前的好像zbx的都不变绿。你直接自定义监控项先测试一下主页面会不会告警。

  • Zabbix自定义监控mysql数据库、自动注册服务器及部署代理服务器

    wxj196107: 不好意思再打扰一下,我这边看日志没有报错,但是网页依然显示不可用,Zbx没有变绿

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • NOsql之MongoDB入门分享
  • 自动化运维工具--saltstack部署及使用
  • 邮件收发原理及部署postfix邮件系统
2023年49篇
2022年33篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asddASD323432

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司本溪网站设计模板公司大同建网站哪家好株洲优化价格沙井网站排名优化营口网络广告推广报价怒江优化焦作网站搭建报价榆林企业网站设计多少钱阿坝网络推广价格大运关键词排名包年推广公司清徐网站优化软件海南百度竞价包年推广推荐巴中网站建设多少钱塘坑网站优化软件多少钱陇南网站开发价格松原网站开发报价朔州模板网站建设哪家好广州网站建设报价洛阳百姓网标王推荐西乡百搜标王推荐飞来峡SEO按天收费推荐醴陵百度网站优化推荐洛阳企业网站设计济南网站设计模板推荐大连网站制作设计报价宝鸡网络营销价格坪山网站优化软件价格金昌外贸网站建设报价中卫英文网站建设价格韶关百度竞价包年推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化