自动化运维管理工具Ansible
0.1、安装
yum install epel-release -y ##插件支持
yum install ansible –y
0.2、ansible 程序结构
安装目录如下(yum安装):
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录:/usr/share/doc/ansible-X.X.X/
Man文档目录:/usr/share/man/man1/
0.3、ansible 配置文件重要参数
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置 library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以 forks = 5 #并发连接数,默认为5 sudo_user = root #设置默认执行命令的用户 remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全 host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例 timeout = 60 #设置SSH连接的超时时间,单位为秒 log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)
1、ansible命令执行过程
-
加载配文件/etc/ansible/ansible.cfg;
-
加载对应模块;
-
通过ansible将模块或命令生成对应的临时python文件,并且将文件传输至对应主机和用户的$HOME/.ansible/tmp/文件夹下;
-
给文件+x执行;
-
执行并返回结果;
-
删除临时python文件,退出;
2、Ansible配置文件重要参数
ansible配置文件 /etc/ansible/ansible.cfg • forks ##调整并发 • model_name ##调整默认模块
小记:
模块化:调用特定的模块,完成特定的任务;
默认通过ssh协议;
Paramiko(python对ssh的实现),pyYaml jinja2(模块语言)三个关键模块
#ansible可以管理的设备:Linux、Windows 、路由器等; 通过ssh协议;
##c/s结构
指的是 client /server;ansible非传统cs架构,属于c端,称为主控端或中控等;
##使用说明
ansible <组名/all> <-m 模块名> [-a 参数]
3、Ansible常用模块
3.1、command
##可用性差,多数特殊符号并不支持;但 是ansible的默认模块,可通过ansible.cfg进行调整修改 sed -i 's/\#module_name = command/module_name = shell/g'
3.2、shell
##相较于command支持较多指令和特殊符号的使用; command和shell的参数命令几乎一致; ansible [db|ip组] -m shell -a 'chdir=/tmp [cp/touch/cat...] ["aaa" >>] file [to file]' ##使用shell模块,进入目标主机/tmp目录,并开始执行shell指令,shell指令正常写就可以; ##shell模块的相关常用指令 chdir:#在运行命令之前,请切换到此目录。 cmd:#要运行的命令,后跟可选参数。 creates:#文件名,当它已经存在时,此步骤将*不*运行。 executable:#更改用于执行命令的shell。这需要指向可执行文件的绝对路径。 free_from:#shell模块以字符串形式运行一个free form命令。没有名为“自由形式”的实际参数。请参阅有关如何使用本模块的示例。 removes:#文件名,当它存在时,此步骤将*运行*。 stdin:#将命令的stdin直接设置为指定值。 stdin_add_newline:#是否向stdin数据追加新行。 warn:#是否启用任务警告。
3.3、script
##远程执行shell脚本 ansible [db|IP组] -m script -a '主控端shell绝对路径'
3.4、copy
##将主控端的文件copy至目标主机 ansible [db|IP组] -m copy -a 'src=/tmp/test.sh dest=/tmp/test1.sh owner=xiebai mode=777 backup=yes' ##将主控端的test.sh copy至目标主机指定目录并指定文件名test1.sh,且属主为xiebai,权限为777,如果文件原始存在就执行备份操作 ansible [db|ip组] -m copy -a 'content="test line1\ntest line2" dest=/root/tmptest/a.txt owner=xiebai mode=744' ##通过content参数将指定内容直接写入目标主机并生成a.txt,并赋予相对应权限
3.5、fetch
##将远端文件copy至主控端 ansible [db|ip组] -m fetch -a 'src=/var/log/messsges dest=/root/tmp/tmplog/' ##将远端的message文件copy过来
3.6、file
##调整目标主机的文件 ansible [db|ip组] -m file -a 'path=/root/tmp/tmp.txt group=root mode=600 owner=xiebai' ##调整远程主机的tmp.txt权限为600,属主属组xiebai/root; ansible [db|ip组] -m file -a 'path=/root/tmp/tmp1 state=directory owner=xiebai group=xiebai' ##创建目录,权限属主 ansible [db|ip组] -m file -a 'src=/root/tmptest/xyc dest=/root/xcy state=link' ##创建软连接
3.7、archive
##文件归档,压缩 ansible [db|ip组] -m archive -a 'path=/var/log/ dest=/root/tmptest/log.tar.gz format=gz owner=root group=root' ##path 后面的“/”,带上只压缩log下的文件,不带就从log开始压缩
3.8、unarchive
##文件解压缩 ansible [db|ip组] -m unarchive -a 'src=/xx/xx压缩包 dest=/xx/xx/xx [copy=yes/no ##文件在主控端为yes,可忽略不写;在被控端为no,必写]'
3.9、cron模块
##定时任务 支持时间:minute hour day month weekday ansible [db|ip组] -m cron -a 'minute=00 hour=01 weekday=1-5 name=启动cpu消耗程序 job=/root/shell/test.sh' ##对对应主机增加crontab #增加state=absent,即可删除对应的任务
4、playbook
使用ansible-playbook xx.yml执行即可,剧本中的参数可以通过命令行传参进行调用
ansible-playbook xxx.yml -e 'aa=11 bb="22" '
--- ##install nginx - hosts: client ##IP组 remote_user: root ##远程执行用户 gather_facts: no ##收集信息 tasks: - name: create nginx group ##定义字典名 group: name=nginx system=yes gid=888 ##引用model[模块] tags: add group ##打标签,playbook -t引用 - name: create nginx user user: name=nginx system=yes uid=888 group=nginx shell=/sbin/nologin create_home=no home=/home/nginx tags: add user - name: xml file update copy: src=/root/tmp/index.html dest=/usr/share/nginx/html backup=yes notify: reload ##判断,当文件改变,通知'reload' tags: copy - name: install nginx yum: name=nginx tags: install - name: start nginx service: name=nginx state=started enabled=yes tags: start handlers: ##定义操纵者字典 - name: reload ##定义名称[被notify引用] service: name=nginx state=reloaded
本文来自博客园,作者:谢白,转载请注明原文链接:https://www.cnblogs.com/XBxiebai/p/16045972.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏