Ansible概念

Ansible基本概述

ansible简述

  • Ansible是一个自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。

自动化运维

  • 应用一:批量命令执行
  • 应用二:批量安装服务
  • 应用三:批量配置同步
  • 应用四:批量任务执行
  • 应用五:批量代码部署
自动化运维工具优势

1.提高工作效率
2.提高工作准确度
3.减少维护成本
4.减少重复性工作

ansible的功能及优点

1.远程执行
批量执行远程命令,可以对多台主机进行远程操作
2.配置管理
批量配置软件服务,可以进行自动化方式配置,服务的统一配置管理和启停
3.事件驱动
通过Ansible的模块,对服务进行不同的事件驱动
比如:
1)修改配置后重启
2)只修改配置文件,不重启
3)修改配置文件后,重新加载
4)远程启停服务管理
4.管理公有云
通过API接口的方式管理公有云,不过这方面做的不如saltstack.
saltstack本身可以通过saltcloud管理各大云厂商的云平台
5.二次开发
因为语法是python,所以便于运维进行二次开发
6.任务编排
可以通过playbook的方式来统一管理服务,并且可以使用一条命令,实现一套架构的部署
7.跨平台,跨系统
几乎不受到平台和系统的限制,比如安装apache和启动服务
在ubuntu上安装apache服务名字叫apache2
在Centos上安装apache服务名字叫httpd
在Centos6上启动服务器使用命令:/etc/init.d/nginx start
在Centos7上启动服务器使用命令:systemctl start nginx

Ansible的架构

1.连接插件(connection plugins)用户连接主机,用来连接被管理端
2.核心模块(core modules)连接主机实现操作,它依赖于具体的模块来做具体的事情
3.自定义模块(custom modules) 根据自己的需求编写具体的模块
4.插件(plugins)完成模块功能的补充
5.剧本(playbook)ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6.主机清单(inventory)定义ansible需要操作主机的范围
*ansible是模块化的,它所有的操作都依赖于模块
在这里插入图片描述

ansible的执行流程

1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务
2.首先Ansible通过主机清单找到要执行的主机,然后调用具体的模块。
3.其次Ansible会通过连接插件来连接对用的主机并推送对应的任务列表
4.最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行

Ansible lnventory

/etc/ansible/hosts是ansible默认主机资产清单文件,用于定义被管理主机的认证信息,如:ssh登录用户名,密码以及key相关信息。lnventory文件中填写需要被管理的主机与主机组信息,还可以自定义lnventory主机清单的位置。
ansible --help:查看一些参数用法
如:
在这里插入图片描述
在这里插入图片描述

  • 配置SSH免密秘钥登录
    ssh-keygen
    ssh-copy-id 172.16.1.31
    ssh-copy-id 172.16.1.41

  • 配置ansible主机清单
    [root@m01 ~]# cat /etc/ansible/hosts
    [web]
    172.16.1.7
    172.16.1.8

  • 测试所有主机
    方法1:执行命令组名写all代表执行所有主机
    方法2:一个IP可以属于多个组
    [root@m01 ~]# cat /etc/ansible/hosts
    [web]
    172.16.1.7
    [nfs]
    172.16.1.31
    [backup]
    172.16.1.41
    [zabbix]
    172.16.1.7
    172.16.1.31
    172.16.1.41

  • SSH使用密码连接并且端口号不是22
    [nfs:vars]
    ansible_ssh_port=9999
    ansible_ssh_user=root
    ansible_ssh_pass=‘123456’
    [all:vars]
    ansible_ssh_port=9999
    ansible_ssh_user=root
    ansible_ssh_pass=‘123456’

  • 同组主机SSH端口不一样,账号密码一样
    [zabbix]
    172.16.1.31 ansible_ssh_port=8888
    172.16.1.41 ansible_ssh_port=9999
    [zabbix:vars]
    ansible_ssh_user=root
    ansible_ssh_pass=‘123456’

[lb02]
172.16.1.6 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass='123456'

  • 同一组连续的IP
    [nfs]
    172.16.1.[30:45]
  • 主机组使用方式
    [root@m01 ~]# vim hosts
    [db_group]
    db01 ansible_ssh_host=10.0.0.51
    db02 ansible_ssh_host=10.0.0.52
    [web_group]
    web01 ansible_ssh_host=10.0.0.7
    web02 ansible_ssh_host=10.0.0.8
    #查看指定组内主机数量
    [root@m01 ~]# ansible web_group -m ping -i ./hosts --list-host
    hosts (2):
    web01
    web02
    [root@m01 ~]# ansible db_group -m ping -i ./hosts --list-host
    hosts (2):
    db01
    db02
    #方式一、主机组变量+主机+密码 主机组支持指定变量[group_name:vars],同时支持嵌套组[game:children]
    [db_group]
    db01 ansible_ssh_host=10.0.0.51
    db02 ansible_ssh_host=10.0.0.52
    [db_group:vars]
    ansible_ssh_pass=‘1’
    #方式二、主机组变量+主机+密钥
    [web_group]
    web01 ansible_ssh_host=10.0.0.7
    web02 ansible_ssh_host=10.0.0.8
    #定义多组,多组汇总整合
    lnmp组包括两个子组[db,web]
    [lnmp:children]
    db_group
    web_group
    #最终配置文件
    [root@m01 ~]# cat hosts
    [db_group]
    db01 ansible_ssh_host=10.0.0.51
    db02 ansible_ssh_host=10.0.0.52
    [web_group]
    web01 ansible_ssh_host=10.0.0.7
    web02 ansible_ssh_host=10.0.0.8
    [lnmp:children]
    db_group
    web_group
    #查看多组
    [root@m01 ~]# ansible all -m ping -i ./hosts --list-host
    hosts (4):
    db01
    db02
    web01
    web02
    [root@m01 ~]# ansible lnmp -m ping -i ./hosts --list-host
    hosts (4):
    db01
    db02
    web01
    web02

案例

  • 如果控制端和被控制端第一次通讯,需要确认指纹信息,如果机器特别多少的情况下怎么办?

将 Ansible 配置文件中的 host_key_checking = False 参数注释打开即可。 但要注意ansible.cfg文件的读取顺序。

[root@m01 project1]# vim /etc/ansible/ansible.cfg
将 Ansible 配置文件中的 host_key_checking = False 参数注释打开

man ansible:查看帮助手册
在这里插入图片描述

要查看完整列表,请访问https://docs.ansibe.com/或使用ansibe-config命令。
/etc/ansible/ansible.cfg 配置文件,如果存在则使用
~/.ansible.cfg 用户配置文件,覆盖默认配置(如果存在)
&/ansible.cfg 本地配置文件(在当前工作目录中)假定为(aqproject-specific)(aq,如果存在,则重写其余文件)。
如上所述,ANSIBLE_CONFIG环境变量将覆盖所有其他环境变量。
顺序:
1)$ANSIBLE_CONFIG
2)./ansible.cfg
3)~/.ansible.cfg
4)/etc/ansible/ansible.cfg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值