ansible 原理 面试

ansible 简介 

ansible是一款自动化的运维工具基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)

 

组件:

  • Host Lnventory [ˈɪnvəntri]:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载
  • Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.
  • Core Modules 英 /kɔː(r)/ Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。
  • Custom Modules英 /ˈkʌstəm/ 自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

作用:

优点:

  • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
  • 默认使用SSH协议对设备进行管理;
  • 幂等性  保证我们重复同一样操作的时候,得到的结果是一样的
  • 通过Playbooks来定制强大的配置、状态管理;
  • 支持API及自定义模块,可通过Python轻松扩展;

返回值颜色:

  • 红色 报错
  • 黄色 成功 更改了
  • 绿色 成功 说明可能执行第二次了 没有更改但也成功了因为幂等性可以多次执行还能保证状态
  • 紫色

 

配置文件:

/etc/ansible/hosts //配置主机组  配置可以使用YAML(一种标记语言)或者INI

 

 

 

 

 

 

基础命令:

  • -m : 使用什么模块
  • -a : 使用模块中的参数
  • -h : 帮助信息 
  • -C: 测试一下不会真的执行

 

模块: (ansible-doc -l 可以看到模块的名称和大概功能 -s 可以看单个模块的使用方法)

1.单个模块使用格式 (testA是主机组的名称)

2.学会看ansible-doc信息

标黄色的地方是模块的作用 红色线标注的地方是模块的选项 required是必须选项

 

 

 3.常见模块

  • 1 ping  //测试ansible 运行时主机之间是否连通

  • 2 fetch //从远程主机拉取文件

  • 3 copy //复制模块
  • 4 file //  对文本的基本操作 创建文件目录修改删除 权限 软连接硬链接
  • 5 blockinfile //在指定文本插入一段文本 是被标记过的 以后可以通过标记修改删除会添加这样一段文字
  •  

     6 lineinfile //确保某一行文本在指定文本中 删除或替换

  • 7 find //寻找模块
  • 8 replace //通过正则表达式替换文件中的字符串
  • 9 command //和shell差不多但是识别不了管道符,;大于号小于号
  • 10 shell   //可以通过远程主机上的/bin/sh处理
  • 11 script //远程执行ansible主机上的脚本
  • 12 cron //相当于crontab 定时任务
  • 13 service  //服务 关闭开启
  • 14 user //用户 创建,删除修改
  • 15 group //查看远程主机上的组
  • 16 yum_repository // 查看本地yum仓库
  • 17 yum  //下载模块

4 playbook 里面的使用:

检查语法错误试运行

 

 

 

 

 

 

4.1YAML 语法:

  • ”---“代表文档开始
  • 第二行”-“ 开头 “-” 后面要有空格
  • :后面一定要有空格
  • 是不能用tab键缩进的 vim编辑器自动设置为空格
  • 每一个任务都要用 “-”开头

4.2 关键字:

  • hosts: //主机之间用逗号隔开
  • tasks: //任务列表
  • name: // 执行的时候会输出关键字
  • handlers //notify 调用
  • tags //打标签方便单独执行

 

 

 

 

 

 

 

  • 特殊tag  always //总是执行 当没有被调用的时候也执行
  • 特殊tag   never 2.5版本
  • 特殊tag    tagged// 只有执行标签任务的时候执行别的时候不执行
  • 特殊tag untagged //
  • 特殊tag all //所有任务

 

 

 

面试题:()

1.Ansible 判断文件存在

 

2.Ansible 部署过什么

3Ansible的优势

posted @ 2020-02-23 21:09  Databasess  阅读(4863)  评论(0编辑  收藏  举报