ansible

ansible是什么
ansible 是一个自动化运维工具,基于python开发,可以实现批量系统配置,批量程序部署,批量运行命令等功能。并且,它是基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块,而ansible只是提供了一种框架

组件:
Host Inventory :记录了每个由ansible管理的主机信息,信息包括ssh端口,root账户密码,ip地址等等,可以通过file来加载,可以通过CMDB加载
playbooks:yaml格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本” 用来定义那些主机需要调用哪些模块来完成的功能。
core Modules:ansible执行任何管理任务都不是由ansible自己完成的,而是由核心模块完成,ansible管理主机之前,先调用core Modules 中的模块,然后指明管理host inventory中的主机,就可以完成管理主机
Custom Modules:自定义模块,完成ansible核心模块无法完成的功能,此模块支持任何语言。
ansible core : 它是ansible 本身的核心模块
connection plugins 连接插件 : Ansible支持多种通信协议。,默认采取ssh远程通信协议
plugins : Ansible的扩展功能组件。
ansible常用模块(至少6个)

  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. scropt :远程执行ansible主机上的脚本
  12. cron : 相当于crontab定时任务
  13. service :服务 、关闭开启
  14. user : 用户创建删除修改
  15. group :查看远程主机上的组
  16. yum_repositroy :查看本地yum仓库
  17. yum:下载模块

ansible 配置文件优先级 :环境变量- ansible_config > ./ansible.cfg > ~/.ansible.cfg > /etc/ansible/ansible.cfg
编排文件加密解密 :ansible-vault encrypt demo.yml ansible-valut decrypt demo.yml

ansible——shell模块(支持 | 、 <、 > command模块 )、:常用参数:
chdir= 表示指明命令在远程主机上的哪个目录下运行
creates= 在命令运行时创建一个文件夹,如果存在,则不创建
removes= 在命令运行时删除一个文件夹,如果不存在,则不删除
executeble= 指明运行命令的shell程序文件,必须是绝对路径

ansible——copy模块:常用参数:
src= 当前服务器的源文件
dest= 目标远程服务器的目标文件
mode= 指定目标文件的权限
owner= 指定目标文件的属主
group= 指定目标文件的属组
content= 将内容复制到目标主机上的文件,不能与src一起使用

ansible-script 模块(将脚本复制到远端主机/root/.anshible/tmp 目录下,自动赋权,执行完删除脚本):
ansible server -m script -a ‘/home/user/auto.sh’

playbook 组件
基本由五个部分组成;

  1. hosts : 要执行任务管理的主机
  2. remote_user : 远程执行任务的用户
  3. vars: 要指定使用的变量
  4. tasks: 定义将要在远程主机上执行的任务列表
  5. handles :指定task执行完成以后需要调用的任务

ansible-playbook 命令常用参数 :
–ask-vault-pass :询问vault密码
–flush-cache : 清空fact缓存
–syntax-check : 检测语法
-C : 测试运行
–list-hosts : 打印出执行任务的主机清单

变量:
通过命令行传递变量: ansible-playbook release.yml -e ‘user=root’
使用setup 中变量值
通过变量文件,方法:
vars_files:

  • vars.yml
    主机清单的变量:
    [webserver]
    10.1.32.18 host=node1
    10.1.32.12 host=node2
    [webserver:vars]
    domain=main.org
    ansible webserver -m hostname -a ‘name={{ host }}.{{ domain }}’

template 模板:
ngingx.conf.j2 :
{% for vhost in nginx_vhosts %}
server{
listen {{ vhost }}
}
{% endfor %}

temginx.yml :

  • hosts: cloud
    remote_user: root
    vars:
    nginx_vhosts:
  • 81
  • 82
  • 83
    tasks:
  • name:将template转化为config
    template: src=/etc/ngingx.conf.j2 dest=/etc/nginx.conf

命令:ansible-playbook server -m temginx.yml --limit 10.1.32.18 (只在10.1.32.18 跑)

  • ansible-playbook server -m setup -a ‘filter=ansible_os_family’

实例: demo.yml

  • hosts: cloud
    remote_user: yourname
    gather_facts: no (如果设置no ,则不收集setup模块中的变量)
    sudo: yes
    tasks:
  • name: 重启mysql服务
    service: name=mysql state=restarted
    sudo: yes
    注意: 使用sudo执行操作时,必须在运行ansible-playbook 命令加上一个参数 --ask-sudo-pass ,或者在配置文件中配置:ask_sudo_pass= True,不然程序将一直卡在询问sudo密钥那里/
    handlers
    notiy : restart httpd
    handlers :
  • name : restart httpd
  • service: name=nginx state=restarted enable=yes
    tags:
    tags: service
    tags:conf
    ansible-playbook -t service,conf httpd.yml

什么是ansible 的playbooks、
playbooks 是ansible的配置、 部署和编排语言,它是基于yaml语言编写的

描述ansbile如何工作的
ansible 由节点控制机器组成,控制机器是安装ansibles的地方,节点由这些机器通过SSH管理,借助SSH协议,控制机器可以部署临时存储在远程节点上的模块。
控制机器使用ansible 或者ansible-playbooks 在服务器终端输入的ansble命令集(Ad-Hoc)或者playbook后,ansible会遵守预先编排的规则将playbook逐条拆解为play,再将play组织成ansible可以标识的任务tasks,随后调用任务涉及到的所有modules 及 plugins ,根据主机清单 inventory 中定义的主机列表,通过ssh协议将任务集以临时文件或者命令的形式传输到远程节点并返回结果,如果是临时文件则执行完自动删除。
什么是ansible inventory
ansible在/etc/ansible/hosts 上有一个默认文件,其中包含目标系统的ip地址或主机名,

简述Ansible ad-hoc和playbook的区别

  1. Ad-Hoc命令可以作为一次性命令对一组目标主机运行单个,简单的任务。
  2. Ad-Hoc不适合复杂配置管理或编配场景,Ad-Hoc一次性只能调用一个模块和一组参数,如需多个操作则需多个Ad-Hoc来执行。
  3. playbook可以实现以一种简易重复的方式对一组目标足迹运行多个复杂的任务,playbook为配置管理和部署提供了强大而灵活的解决方案
  4. playbook可以将冗长而复杂的管理任务变为可轻松重复的过程。playbook是一个文本文件,其中包含一个或多个顺序运行的play列表。
  5. playbook中,可以将playbook中的tashs保存为可读且立即运行的形式。

ansible roles 目录编排:

  • hosts: webserver
    remote_user: root
    roles:
  • mysql
  • {role: nginx, username: nginx}
  • nginx

练习题,
ansible使用copy模块来将/opt/aa.txt 复制到/home/jack中:
ansible node1 -m copy -a ‘src=/opt/aa.txt dest=/home/jack/’
使用file模块,来定义/home/jack/aa.txt的权限为777 ,归属为所有者是jack,所属组是jack
ansible node1 -m file -a ‘path=/home/jack/aa.txt owner=jack group=jack mode=0777’
使用yum模块,安装httpd服务
ansible node1 -m yum -a ‘name=httpd state=present’
使用cron模块,定义一个任务,每周的14点30分执行备份/var
ansible node1 -m cron -a ‘name=“crontab test” weekday=5 hour=14 minute=30 job=“/usr/bin/tar -czf /opt/var.tar.gz /var”’
使用user模块,常见用户student ,让其是系统用户,属组为root,uid为2000
ansible node1 -m user -a 'name=student system=yes group=root uid=2000 ’

面试题
nginx 一般做什么
处理静态文件
负载均衡和容错,(反向代理加速,无缓存)
什么是动静分离
动态文件和静态文件分开处理,一般是nginx处理静态,tomcat处理动态
有些请求是需要后台处理(如:.jsp , .do ),有些请求是不需要经过后台处理的(css、html、jpg、js文件),这些不需要经过后台处理的文件称为静态文件
减轻后端服务器压力,提高静态资源访问速度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值