Ansible基础
1、你为什么用ansible不用其他的比如puppet saltstack?
ansible:基于ssh的协议,不需要部署agent端,缺点是执行效率低
puppet 要部署agent,配置比较复杂,不支持执行命令
saltstack:要部署agent,类似于ansible支持ssh协议,但是文档不好用
2、ansible怎么查看一组机器的磁盘空间使用情况?
ansible host-group -a "df"
3、ansible怎么重启一组机器的httpd服务?
ansible webservers -m service -a "name=httpd state=restarted"
4、ansible的playbook 是干嘛的?
根据任务的先后顺序设置完成,就是按“剧本”走
5、playbook的文件格式是?
yaml格式
6、ansible批量执行命令
1 shell模块:ansible all -m shell -a 'echo magedu |passwd –stdin wang'
2 commad模块:ansible all -a "date +%F" (此命令不支持 $VARNAME < > | ; & 等,用shell模块实现 )
3 script模块:
在远程主机上运行ansible服务器上的脚本
ansible web -m script -a /data/f1.sh
4 copy模块:
从服务器复制文件到客户端 ;src--本机目录文件地址;dest--目标绝对路径地址
目标存在,默认覆盖,此处指定先备份:
ansible web -m copy -a "src=/root/f1.sh dest=/tmp/f2.sh owner=szb mode=600 backup=yes"
5 fetch模块:
从客户端取文件至服务器端,copy相反,目录可先tar ;dest只能是本机目录
ansible web -m fetch -a 'src=/root/a.sh dest=/data/scripts'
6 File模块:
主要用于对文件的创建、删除、修改、权限、属性的维护和管理
ansible web -m file -a 'path=/data/f1.txt state=touch' # 创建空文件
7 Hostname–管理主机名
8 Yum:管理包
ansible srv -m yum -a 'name=httpd state=present' 安装
ansible srv -m yum -a 'name=httpd state=absent' 删除
9 Service:管理服务
ansible srv -m service -a 'name=httpd state=started enabled=yes'
10 User:管理用户
ansible srv -m user -a 'name=sysuser1 system=yes home=/app/sysuser1'
ansible srv -m user -a 'name=user1 state=absent remove=yes' 删除用户及家目录等数据
11 core模块:计划任务
ansible srv -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.16.0.1 &>/dev/null' name=Synctime"
7、其余命令
1 ansible-doc
ansible-doc –l # 列出所有模块 ansible-doc commad命令 # 查看指定模块帮助用法
2 ansible-galaxy
ansible-galaxy list # 列出所有已安装的
ansible-galaxy install geerlingguy.redis # 安装galaxy
ansible-galaxy remove geerlingguy.redis # 删除galaxy
ansible-galaxy search lamp # 搜索lamp相关的roles
ansible-galaxy install -r roles.txt # 批量安装多个roles
3 ansible-pull #推送命令至远程,效率无限提升,对运维要求较高
执行:ansile-playbook -i lamp_simple/hosts lamp_simple/site.yml
4 ansible-vault # 管理加密解密yml文件
5 ansible-console # 交互式,list,?
6 ansible-playbook # 在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。
ansible-playbook hello.yml
cat hello.yml
#hello world yml file
- hosts: web
remote_user: root
tasks:
- name: hello world
command: /usr/bin/wall hello world
7 role
1.roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制
2.使用roles只需要在playbook中使用include指令即可
8、playbook异常处理
1、ignore_errors ignore_errors: true来屏蔽当前任务的报错信息 2、failed_when failed_when: process_count > 3当进程数大于3时主动抛出错误,后续任务就不会执行了。如果不满足条件,则不会抛出错误。 3、changed_when 关闭状态改变的提示,则可以添加changed_when: false
9、Ansible是什么?
Ansible是一个自动化运维工具
1)基于Python开发,实现批量系统配置、批量程序部署、批量运行命令等功能
2)基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块,ansible只是提供一种框架
10、Ansible常用模块(至少6个)?
command ping yum copy service shell file replace user group
11、什么是 Ansible 的 playbooks ?
Playbooks 是 Ansible 的配置、部署和编排语言,它是基于YAML语言编写的。他们可以描述您希望远程系统实施的策略
12、描述Ansible是如何工作的?
Ansible由节点和控制机器组成
1)控制机器是安装Ansibles的地方,节点由这些机器通过SSH管理。 借助SSH协议,控制机器可以部署临时存储在远程节点上的模块。
2)控制机器使用ansible或者ansible-playbooks在服务器终端输入的Ansible命令集或者playbook后,Ansible会遵循预先编排的规则将PLAYbook逐条拆解为Play,再将Play组织成Ansible可以识别的任务tasks,随后调用任务涉及到的所有MODULES及PLUGINS,根据主机清单INVENTORY中定义的主机列表通过SSH协议将任务集以临时文件或者命令的形式传输到远程节点并返回结果,如果是临时文件则执行完毕后自动删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类