Ansible自动化部署工具

这篇具有很好参考价值的文章主要介绍了Ansible自动化部署工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、自动化运维工具—Ansible

1、运维工具特点

Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。

Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。

2、Ansible运维工具原理

Ansible分为控制端和被控制端,主要是基于SSH协议去管理客户端,被控制端是不需要安装agent插件的Ansible会读取控制端的host文件 ,根据文件中定义的IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理。

自动运维管理工具优点

  • 轻量级,更新时,只需要在操作机上进行一次更新即可;
  • 采用 SSH 协议;
  • 不需要去客户端安装 agent;
  • 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
  • 使用 python 编写的,维护更简单;
  • 支持 sudo 普通用户命令;
  • 去中心化管理。

3、Ansible自动化运维工具流程

Ansible自动化部署工具

(1)加载自己的配置文件,默认/etc/ansible/ansible.cfg
(2)查找对应的主机配置文件,找到要执行的主机或组
(3)加载自己对应的模块文件,如command yum ping
(4)通过ansible将模块命令生成对应临时py文件(pyhton),并将该文件传输至远程服务器上
(5)对应执行用户的家目录的.ansible/tmp/xxx/xxxx.py文件
(6)给文件+执行权限
(7)执行并返回结果,删除临时文件,sleep 0 退出

二、安装Ansible

管理端Ansible:192.168.10.135

被管理端:192.168.10.136

被管理端:192.168.10.137

1、安装准备

[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl stop firewalld  #关闭防火墙

2、Ansible控制端安装epel扩展源

安装ansible自动化管理工具

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install  ansible -y
[root@localhost ~]#tree /etc/ansible/   #目录结构
/etc/ansible/
├── ansible.cfg   #ansible的配置文件,一般无需修改
├── hosts         #ansible的主机清单,用于存储需要管理的远程主机的相关信息
└── roles         #公共角色目录

Ansible自动化部署工具
Ansible自动化部署工具

3、配置主机清单

[root@localhost ~]#vim /etc/ansible/hosts 

[webservers]
192.168.10.136
[dbservers]
192.168.10.137
#保存退出

Ansible自动化部署工具

4、配置密钥对验证

[root@Ansible ~]#ssh-keygen -t rsa  #一路回车就OK
[root@Ansible ~]#sshpass -p '123123' ssh-copy-id root@192.168.10.136
[root@Ansible ~]#sshpass -p '123123' ssh-copy-id root@192.168.10.137
##验证
[root@Ansible ~]#ssh 192.168.10.136
[root@Ansible ~]#ssh 192.168.10.137

Ansible自动化部署工具
Ansible自动化部署工具

5、查询webserver组中主机的日期

[root@Ansible ~]#ansible dbservers -m command -a 'date'
192.168.10.137 | CHANGED | rc=0 >>
2023年 04月 27日 星期四 15:10:25 CST
[root@Ansible ~]#ansible webservers -m command -a 'date'
192.168.10.136 | CHANGED | rc=0 >>
2023年 04月 27日 星期四 15:10:31 CST

Ansible自动化部署工具

三、Ansible命令模块

1、command模块

在远程主机执行命令,不支持管道 重定向shell等

[root@Ansible ~]#ansible-doc -l  #列出所有已安装的模块,按q退出
[root@Ansible ~]#ansible all -m command -a 'date'
#所有主机执行date命令,其中all可以换成IP或者分类名称
192.168.10.136 | CHANGED | rc=0 >>
2023年 04月 27日 星期四 15:15:04 CST
192.168.10.137 | CHANGED | rc=0 >>
2023年 04月 27日 星期四 15:15:04 CST

[root@Ansible ~]#ansible all -a 'date'
#不加-m模块,则默认使用command模块
192.168.10.137 | CHANGED | rc=0 >>
2023年 04月 27日 星期四 15:15:14 CST
192.168.10.136 | CHANGED | rc=0 >>
2023年 04月 27日 星期四 15:15:14 CST

Ansible自动化部署工具

2、cron模块

在远程主机定时计划任务两种状态(state):present表示添加(可以省略),absent表示移除

[root@Ansible ~]#ansible-doc -s cron
[root@Ansible ~]#ansible webservers -m cron -a 'minute="*/1" job="/usr/bin/echo hello" name="test"'   
#webserver:分类  -m指定模块 -a输出模块内的指令  分钟:每分钟,工作:输出hello,工作名称:test
[root@Ansible ~]#ansible 192.168.10.136 -a 'crontab -l'
#查看计划任务命令
[root@Ansible ~]#ansible 192.168.10.136 -m cron -a 'name=test state=absent'
#移除计划任务

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

3、user模块

用户管理模块user模块是请求三条指令,useradd,userdel,usermod

[root@Ansible ~]#ansible all -m user -a 'name=lisi'   #为所有主机创建一个用户
[root@Ansible ~]#ansible all -m command -a 'tail -1 /etc/passwd'  #查看是否创建成功
[root@Ansible ~]#ansible all -m user -a 'user=lisi state=absent'  #移除用户

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

4、group模块

用户组管理的模块group模块请求的是groupadd、groupdel、groupmod模块

[root@Ansible ~]#ansible-doc -s group   #查看模块信息
[root@Ansible ~]#ansible dbservers -m  group -a 'name=lisi system=yes'  #system=yes创建系统组
[root@Ansible ~]#ansible dbservers -a 'tail -1 /etc/group'  #查看组账号信息
[root@Ansible ~]#ansible dbservers -m user -a 'name=wangwu  uid=1221 group=lisi system=yes'

[root@Ansible ~]#ansible dbservers -a 'id wangwu'

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

5、copy模块

用于复制指定主机文件到远程主机文件

[root@Ansible ~]#ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak'
[root@Ansible ~]#ansible dbservers -a 'cat /opt/fstab.bak'
[root@Ansible ~]#ansible dbservers -m copy -a 'content="zz is good student" dest=/opt/zz.txt'
[root@Ansible ~]#ansible dbservers -a 'cat /opt/zz.txt'

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

6、file模块

设置文件属性

[root@Ansible ~]#ansible dbservers -m user -a 'name=dbservers system=yes'
[root@Ansible ~]#ansible dbservers -m file -a 'owner=dbservers group=dbservers mode=600 path=/opt/zz.txt'
[root@Ansible ~]#ansible dbservers -a 'ls -l /opt/zz.txt'
[root@Ansible ~]#ansible dbservers -m file -a 'src=/opt/zz.txt path=/opt/zz.txt.link state=link'
[root@Ansible ~]#ansible dbservers -a 'ls -l /opt'

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

7、ping模块

检测远程主机的连通性

[root@Ansible ~]#ansible all -m ping

Ansible自动化部署工具

8、service/systemd模块

用于管理远程主机上的管理服务的运行状态

在192.168.10.137安装httpd
[root@Client2 ~]#yum install -y httpd

Ansible自动化部署工具

[root@Ansible ~]#ansible dbservers -a 'systemctl status httpd'
[root@Ansible ~]#ansible dbservers -m service -a 'enabled=true name=httpd state=started'

Ansible自动化部署工具
Ansible自动化部署工具

#回到dbservers主机验证
[root@Client2 ~]#systemctl status  httpd
[root@Client2 ~]#systemctl is-enabled httpd
enabled

Ansible自动化部署工具

9、Shell模块

在远程主机执行命令,相当于调用远程主机的shell进程,然后再该shell下打开一个子shell运行命令

[root@Ansible ~]#ansible dbservers -m user -a 'name=wangwu'
[root@Ansible ~]#ansible dbservers -m shell -a 'echo 123123 | passwd --stdin wangwu'

Ansible自动化部署工具
Ansible自动化部署工具

10、script模块

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

[root@Ansible ~]#vim test.sh
[root@Ansible ~]#chmod  +x test.sh 
[root@Ansible ~]#ansible all -m script -a 'test.sh'
[root@Ansible ~]#ansible all -a 'cat /opt/script.txt'

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

11、yum模块

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

[root@Ansible ~]#ansible dbservers -m yum -a 'name=httpd'
[root@Ansible ~]#ansible dbservers -a 'rpm -q httpd'
[root@Ansible ~]#ansible dbservers -m yum -a 'name=httpd state=absent'
[root@Ansible ~]#ansible dbservers -a 'rpm -q httpd'

Ansible自动化部署工具
Ansible自动化部署工具
Ansible自动化部署工具

12、Setup模块

facts是用来收集被管理节点的信息,使用setup可以获取这些信息Ansible facts 是远程系统的信息,主要包含IP地址,操作系统,以太网设备,mac 地址,时间/日期相关数据,硬件信息等信息。

[root@Ansible ~]#ansible dbservers -m setup

Ansible自动化部署工具

13、hostname模块

用于管理远程主机上的主机名

[root@Ansible ~]#ansible dbservers -m hostname -a "name=mysql01"

Ansible自动化部署工具
Ansible自动化部署工具

四、inventory主机清单

1、inventory介绍

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

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

2、inventory中的变量

  • ansible_host ansible连接节点是的IP地址。
  • ansible_port 连接对方的端口号,ssh连接时默认为22。
  • ansible_user 连接对方主机时使用的主机名,将使用执行ansible或ansible-playbook命令的用户。
  • nsible_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_becom_password 提升为指定用户权限时的密码。

3、主机变量

[webservers]
192.168.10.136 ansible_port=22  ansible_user=root  ansible_password=abs123

4、组变量

[webservers:vars]  #表示为webservers组内所有主机自定义变量
ansible_user=root
ansible_password=abc123

[all:vars]          #表示为所有组内的所有主机自定义变量
ansible_port=22

5、嵌套组

[nginx]
192.168.10.135
192.168.10.136
192.168.10.137

[apahce]
192.168.10.3[0:3]

[webs:children]  #表示为webs主机组中包含了nginx和apache组内所有主机
apache
nginx

总结

(1)Ansible其中一个比较鲜明的特性Agentless,即无Agent的存在,只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。

(2)Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性,指的是多次操作或多次执行对系统资源的影响是一致的。文章来源地址https://www.toymoban.com/news/detail-429624.html

到了这里,关于Ansible自动化部署工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ansible自动化运维工具的认识

    目录 一、Ansible概述 二、Ansible特点 三、Ansible应用 1、使用者 2、Ansible工具集合 3、作用对象 四、Ansible的搭建 1、实验环境 2、环境准备 Ansible: 3、创建ssh免密交互登录 client端环境准备 五、Ansible配置 六、Ansible命令 1、ansible 实验案例: 1.检查所有主机是否存活 2.列出Rich组中

    2024年02月16日
    浏览(44)
  • Linux:ansible自动化运维工具

    当前所有执行权限我是在root下执行的,如果提示权限之类的,可以在每句命令前  加上 sudo     ansible主服务器  192.168.0.194         另外两个客户端分别为 192.168.0.193   192.168.0.192 软件只需要在主服务器上安装,客户端不需要去安装软件,因为他们相互使用的是ssh 只需要

    2024年02月11日
    浏览(42)
  • 自动化运维工具-------Ansible(超详细)

    Ansible是自动化运维工具,基于Python开发,分布式,无需客户端,轻量级,实现了批量系统配置、批量程序部署、批量运行命令等功能, ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架 。 1)、no agents:不需要在

    2024年02月10日
    浏览(40)
  • Ansible 自动化运维工具(完善版)

    目录  Ansible概述 Ansible特点 Ansible应用 1、使用者 2、Ansible工具集合 3、作用对象 Ansible的搭建 环境 ansible主机 1、ansible 2、Ansible-doc Ansible模块 1.command模块 2.shell模块 3.raw模块 Ansible是最近非常火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工

    2024年02月16日
    浏览(42)
  • Ansible 自动化运维工具的使用

    目录   一、Ansible简介 二、Ansible 的安装和使用 1.下载 2.使用 三、Ansible命令和模块 1.命令格式 2.命令行模块 (1)command 模块 (2)shell 模块 (3)cron 模块 (4)user 模块 (5)group 模块 (6)copy 模块 (7)file 模块 (8)hostname 模块 (9)ping 模块  (10)yum 模块 (11)service/

    2024年02月11日
    浏览(54)
  • 自动化运维工具——Ansible学习(二)

    目录 一、handlers和notify结合使用触发条件 1.新建httpd.yml文件 2.复制配置文件到ansible的files目录中 3.卸载被控机已安装的httpd 4.执行httpd.yml脚本 5.更改httpd.conf配置文件 6.使用handlers 7.重新执行httpd.yml脚本 8.检查被控机的端口号是否改变 9.handlers也可以触发多个 二、tags 1.通过指定

    2024年02月16日
    浏览(42)
  • Ansible自动化运维工具---Playbook

    playbook是剧本的意思,通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 playbook各部分组成 : Tasks : 任务,即调用模块完成的某操作 Variables : 变量 emplates : 模板 Handlers : 处理器,当某条件满足时,触发执行的操作 Roles : 角色 playbook yaml语法 是换行空两格,-和

    2024年02月03日
    浏览(41)
  • 【Ansible】Ansible自动化运维工具之playbook剧本

      简单来说,playbooks是一种简单的配置管理系统与多机器部署系统的基础。与现有的其他系统有不同之处,且非常适合复杂应用的部署。   Playbooks 可用于声明配置,更强大的地方在于,playbooks可以编排有序的去执行过程,甚至做到多组机器间来回有序的执行特别指定的

    2024年02月14日
    浏览(39)
  • Ansible自动化运维工具介绍与部属

    ansible是新出现的自动化运维工具,基于python开发,集合了从多的运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于paramiko开发的,并且基于模块化工作,它本身没有批量部署的能力。真正具有批量部署的是

    2024年02月07日
    浏览(45)
  • 自动化运维工具Ansible教程(一)【入门篇】

    ansible 学习大纲 Ansible 是一个开源的自动化工具,用于配置管理、应用部署和任务执行。它以简单、可读性强的 YAML 格式的 Playbooks 为基础,使得自动化任务变得简单、可维护和可扩展。 简单易用 :Ansible 的设计目标之一是简单易用。它使用 YAML 语法定义任务和配置,无需编

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包