Ansible 自动化运维

article/2025/9/28 6:47:11

一、 Ansible:开源的运维自动化工具,可以提高运维工程师的效率,减少人为失误。操作简单,功能丰富。

     特点:1)基于python开发,易于二次开发 2)丰富的内置模块,基本可以满足一切要求  3)管理模式非常简单 4)无客户端模式,底层通过ssh通信,也不需要代理程序  5)可以应用在大公司环境下。

二、Ansile的角色:

    1、使用者:如何使用Ansible(与Ansible的交互方式)

       CMDB:直接下发指令调用Ansibe工具集完成任务目标

       PUBLIC/PRIVATE:以API调用的方式

       Ad-hoc命令集:通过Ad-hoc命令集调用Ansible工具集完成任务

       Playbooks:根据预先编写好的Ansible Playbooks按序执行任务

    2、Ansible工具集:包含invertory,modules,plugins和API。

       Ansible plakbooks:任务脚本,编排定义Ansible任务集的配置文件,一般为json格式的yml文件

       inventory:管理Ansible设备列表,通过分组管理主机。

       modules: 执行命令的各种模块,任务通过模块执行

       plugins: 附加功能,是模块功能的补充

       API:供第三方调用的应用程序编程接口,便于二次开发

       Ansible:组合上述工具的命令工具,为核心的执行工具

    3、作用对象:linux、windows、各类PUBLIC/PRIVATE网络设施

三、Ansible的配置:inventory是Ansible管理主机信息的配置文件,相当于系统hosts文件的功能,默认存放在/etc/ansible/hosts.可以用-i选项指定在其他文件。在hosts文件中通过分组来组织设备。设备列表支持ip地址和主机名,通过ssh(22端口)管理设备。

四、Ansible命令:

    ansible:大多数维护命令以ansible开头。执行结果有:红色表示执行过程异常、橘黄色代表目标有状态变化、绿色代表执行成功且没有对目标修改

      格式:ansible  主机组  命令选项

          主机组:必须是hosts文件定义的设备组,或者单个ip,all代表所有

          主要选项:-m 指定执行使用的模块   -a 指定模块参数  -l(--limit) 限制运行主机    --list 列出符合条件的主机

     ansible-playbook命令:执行任务的脚本。根据预先编好的yml格式的playbook文件实现集中处理任务。文件中存放执行的任务代码。

        格式:ansible-playbook    .yml文件

五、Ansible的主要模块:

    1、command模块:在远程主机执行命令,不支持管道、重定向特性

    2、shell模块:与command命令相同,可以支持管道和重定向

    3、copy模块:复制指定主机文件到远程主机的指定位置

    4、hostname模块:管理远程主机的主机名

    5、yum模块:基于yum对远程主机管理程序包

    6、service模块:管理远程主机的服务

    7、user模块:管理远程主机的用户账号

六、Playbook配置文件:放置所有任务代码,使用yaml语法,扩展名为.yml或.yaml.可以实现自动化运维,类似任务脚本

    语法通过缩进来展示,通过-来代表项冒号:来分隔键和值,整个文件以- - -开头以...结束。

    playbook文件中可以配置触发器:需要触发才能执行的任务。即之前定义的tasks任务执行成功后触发 handlers(触发器)里的触发任务。

    playbook的tasks文件集中存放在某个目录下,则该目录就是角色。角色一般存放在/etc/ansible/roles中,目录下可以由自定义的各个子目录比如files存放模块调用的文件,tasks存放任务,handlers存放触发器等等

ansible批量管理服务意义
    01. 提高工作的效率
    02. 提高工作准确度
    03. 减少维护的成本
    04. 减少重复性工作
    ansible批量管理服务功能
    01. 可以实现批量系统操作配置
    02. 可以实现批量软件服务部署
    03. 可以实现批量文件数据分发
    04. 可以实现批量系统信息收集

复制代码
①. 管理服务器创建私钥和公钥(密钥对)

②. 将公钥文件远程传送复制到被管理服务器相应用户~/.ssh/id_dsa.pub下,并修改.ssh目录权限为700

③. 修改公钥文件文件名称为authorized_keys,授权权限为600

④. 利用ssh服务配置文件的配置参数,进行识别公钥文件authorized_keys

⑤. 进而实现基于密钥远程登录服务器(免密码登录/非交互方式登录)

 

 

Yum仓库配置:

[name]

name=ggg

baseurl=file:///media/cdrom

enabled=1

gpgcheck=0

[ansible]

name=ldsakl

baseurl=file:///root/ansiblerepo

enabled=1

gpgcheck=0

yum -y install ansible

ansible –version

[root@xiao---tong ~]# createrepo /root/ansiblerepo/

Spawning worker 0 with 108 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

[root@xiao---tong ~]# cd /etc/ansible/

[root@xiao---tong ansible]# ls

ansible.cfg  hosts  roles

[root@xiao---tong ansible]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:q+vs+wqRtL6WD6C88bcKdfpn4SkeuinNFBt5KWRvMD4 root@xiao---tong

The key's randomart image is:

+---[RSA 2048]----+

|                 |

|   =             |

|  + * .          |

|   E B           |

|  ..%.  S        |

|...=o. . .       |

|.++.+o. +        |

| .=o*B.*         |

| ..B*B#=.        |

+----[SHA256]-----+

[root@xiao---tong ansible]# ls /root/.ssh/

id_rsa  id_rsa.pub

[root@xiao---tong ansible]# ssh-copy-id root@192.168.10.20

[root@xiao---tong ansible]# ssh-copy-id root@192.168.10.30

[root@xiao---tong ansible]# ssh 192.168.10.20

[root@xiao---tong ansible]# ssh 192.168.10.30
vim /etc/ansible/hosts

[gzs]

192.168.10.20

[gao]

192.168.10.30

[root@xiao---tong ansible]# ansible all –m ping

[root@xiao---tong ansible]# ansible gzs –m ping

[root@xiao---tong ansible]# ansible all -f 5 -m ping

[root@xiao---tong ansible]# ansible all –list

[root@xiao---tong ansible]# ansible gzs -m command -a "df -hT"

192.168.10.20 | SUCCESS | rc=0 >>

文件系统                类型      容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root xfs        50G  3.6G   47G    8% /

devtmpfs                devtmpfs  897M     0  897M    0% /dev

tmpfs                   tmpfs     912M     0  912M    0% /dev/shm

tmpfs                   tmpfs     912M   18M  895M    2% /run

tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup

/dev/sda1               xfs      1014M  179M  836M   18% /boot

/dev/mapper/centos-home xfs        47G   33M   47G    1% /home

tmpfs                   tmpfs     183M  4.0K  183M    1% /run/user/42

tmpfs                   tmpfs     183M   44K  183M    1% /run/user/0

/dev/sr0                iso9660   4.3G  4.3G     0  100% /media/cdrom

IP地址

[root@xiao---tong ansible]# ansible 192.168.10.20 -m command -a "ifconfig ens33"

yum仓库:

[root@xiao---tong ansible]# ansible all -m command -a "cat /etc/yum.repos.d/benet.repo"

更改主机名:

[root@xiao---tong ansible]# ansible 192.168.10.30 -m command -a "hostname AAA"

[root@xiao---tong ansible]# ansible 192.168.10.30 -m command -a "hostname " 查看

root@xiao---tong ansible]# ansible-doc –l

cat /etc/hostname

shell模块:

ansible web -m shell -a 'echo "heelo" >> /tmp/hello.txt'

     ssh 192.168.10.30 cat /tmp/hello.txt

Copy模块:

      ansible web -m copy -a "src=/etc/hosts dest=/tmp mode=777 owner=nobody group=root"

     ssh 192.168.10.30 ls -l /tmp/hosts

     Hostname 模块:

ansible 192.168.10.20 -m hostname -a "name=demo

yum 模块:"

ansible web -m yum -a "name=httpd state=present"

ssh 192.168.10.30 rpm -qa | grep httpd

Service 模块:

ansible web -m service -a "name=httpd state=started enabled=yes"

ansible ssh -m service -a "name=httpd state=started enabled=yes"

ansible gzs -m user -a 'name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment="test user"'

ssh 192.168.10.20 tail -l /etc/passwd

  ansible web -m user -a 'name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment="test user"'

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

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftp

grep -v "^#" /etc/vsftpd/vsftpd.ccc > /etc/vsftpd/vsftpd.conf


http://chatgpt.dhexx.cn/article/rgkAQxqZ.shtml

相关文章

运维思索:自动化运维体系如何入手

需求 运维是事件驱动,还是自驱动可能是我们在运维工作中不太关注的问题。事件驱动让运维止步于故障,而自驱动让运维不止于建设。持续性的运维建设就需要一套自动化的运维体系,那么我们应该从何入手? 其实前期《运维思考》一系列…

自动化运维了解

背景 公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入**自动化运维**工具, 对多台服务器实现高效运维。 需求 通过管理服务器能够按照需求灵…

做好自动化运维平台必备技能

万丈高楼平地起,高楼稳不稳取决于地基是否扎实。基础数据便是运维管理这座高楼的地基。 首先介绍一下我们在运维管理中所涉及到的基础数据有哪一些。请看下图: 基础数据大致分为CMDB、日志、生产DB、知识库四个模块。 一、基础数据概况 CMDB中文是配置管…

什么是自动化运维,目前的普及状况?

感觉随着近年全球运维大会的火热举办,自动化运维话题逐渐被推向了前所未有地热度,很多人都觉得这是炒作的概念,其实不然,它是随着信息技术发展的必然趋势,下面和大家细聊。 随着IT技术的发展,“大数据”、…

超全!常见自动化运维工具全解析(含ansible、Puppet、SaltStack教程)

在IT行业运维一直是重复性工作较多的重灾区,而通过自动化运维工具不仅可以让工作更加轻松还减少了人为失误。 实现自动化运维就是将复杂的事情简单化、标准化、流程化,通过工具重复性、周期性的实现。例如应用系统维护自动化,巡检自动化和故障…

优质的国外程序员网站

在学习计算机编程相关技术时,必须知道一些有用的网站,以便随时掌握信息,了解技术前沿和学习新技术。下面是整理的一些国外干货网站列表。由于大多在墙外,部分网站可能需要梯子,请自备。下面开始技术之旅吧。 索引 当你…

程序员自学网站推荐

1.CSDN(CSDN - 专业开发者社区) CSDN是国内非常知名的技术交流社区,创建的时间也比较早,所以在国内也很有影响力。并且CSDN还是有非常多很优质的原创文章与资料,对于程序员来讲经常来这边逛逛也会学到不少知识的。 2.Import New(import - J…

给大家推荐几个程序员必备网站

1、程序员导航CXY521: 程序员导航-CXY521http://www.cxy521.com/ 2、程序员盒子 coderutil 程序员盒子,专注于程序员学习编程提效 官网https://www.coderutil.com/ 3、程序员快速导航 程序员快速导航 - 专门为程序员服务的导航网站 (yundashi168.com)http://nav.yundashi1…

程序员平时上哪些网站

转载地址:http://blog.csdn.net/vqhgwjl9eub/article/details/78146795 前言 程序员每天必不可少的就是与电脑打交道,经常逛的一些网站也相对固定,今天小编给大家分享一下自己平时经常逛的一些网站,不管是开发,还是了解…

牛人程序员最爱逛的10大编程网站,你知道几个?

今天我给大家推荐10个高级程序员经常逛的网站,你又去过几个呢?来跟着小编一起看看都有哪些牛逼的网站吧。 分享之前我还是要推荐下我自己的前端学习群:653415492,不管你是小白还是大牛,小编我都挺欢迎,不定…

程序员必备网站,建议收藏!

俗话说的好,一个程序员,20%靠知识储备,80%靠网络搜索。 打开代码,打开Google,开始工作。 那么常用的写码软件,你知道几个呢? 下面我们来一起看一下常用的写码软件吧~ 建议收藏本文&#xff…

程序员必备网站

程序员学习网站: CSDNhttps://link.juejin.cn?targetwww.csdn.net 稀土掘金http://juejin.cn Giteehttps://link.juejin.cn?targetGitee.com Stack overflow中文网https://link.juejin.cn?targetstackoverflow.org.cn W3school在线教程https://link.juejin.cn?targetww…

10大程序员必逛网站,良心推荐,建议收藏!

本部分内容对应视频链接。 很多小伙伴在刚开始学习技术的时候,都会去找一些学习类的网站来提高自己的水平。但现在网络越来越发达,学习类的网站真的是多如牛毛。有的网站真的是非常优秀,可以让你学到不少技术,但同样也有很多网站…

8个不能错过的程序员必备网站,惊艳到我了!!!

程序员是一个需要不断学习的职业,不少朋友每天来逛CSDN、掘金等网站,但一直都抱着“收藏从未停止,学习从未开始”的态度,别骗自己了兄弟。在编程体系中,有很多不错的小工具,可以极大得提升我们的开发效率。…

程序员必备十大网站

窝窝整理了十大程序猿必备网站,涵盖了开源平台、搜索引擎、免费的精品课程,包括让你头疼的BUG、算法等。偷偷告诉你,还有帮你拿到心仪的 offer! 一,海量的资源平台 十大网站榜首 :GitHub — 开发者极其重…

10个程序员必上的网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 文章目录 1.StackOverflow2.Quora3.Reddit4.StackExchange5.CodeProject6.Google Groups7.CodeRanch8.Programmers Heaven9.FindNerd10.Chegg 当我们写代码的时候&…

程序员必备的网站推荐

程序员必备的网站推荐 注:我收集的网站很有限,可能有很多网站没有列出,希望大家可以通过评论告知我,我会尽快添加。 一、资源导航网站 1.AI圈导航(https://www.puuuq.cn) 人工智能(AI)领域最全面的资源导…

推荐10个程序员常去的网站

偶尔有收到一些读者留言和询问:大佬,你知道有哪些适合初级学者的技术论坛或网站吗? 我摸了摸头,若有所思的答道:这个还真有,不知道你喜欢什么风格和适合哪些?.... 我没有见过凌晨4点的洛杉矶&…

程序员必备的 58 个网站,赶快收藏

程序员是一个需要不断学习的职业。幸运的是,在这个互联网时代,知识就在那里,等着我们去获取。 作为一个“收藏从未停止,学习从未开始”的博主,秉承着好东西不能独享的态度,把收藏的学习网站整理分享出来&am…

程序员必须收藏的网站整理(持续更新)

作为《程序员电脑必备软件整理(持续更新)》的姊妹篇,本文整理我认为有价值的网站链接,希望对你有所帮助 目录 1 论文相关 1.1 paperswithcode 1.2 paperweekly 1.3 sci-hub 1.4 快期刊 2 代码相关 2.1 DevDocs 2.2 sta…