ansible

ansible简介

1.什么是ansible

  • ansible是2013年推出的一款I自动化和DevOps软件,2015年被RedHat收购。是基于Python研发, 糅合很多老运维工具的优点,实现了批量操作系统配置,批量程序部署,批量运行命令等功能
  • ansible可以实现
    • 自动化部署APP
    • 一自动化管理配置项
    • 一自动化持续交付
    • 自动化(AWS)云服务管理

2.为什么选择ansible

  • 活跃度(社区)
  • 学习成本
  • 使用成本
  • 编码语言
  • 性能
  • 使用是否广泛

3.ansible优点

  • 只需要SSH和Python即可使用
  • 无客户端
  • ansible功能强大,模块丰富
  • 上手容易,门槛低
  • 基于Python开发,做二次开发更容易-使用公司比较多,社区活跃

4.ansible特性

  • 模块化设计,调用特定的模块完成特定任务
  • 基于 Python语言实现
    • paramiko
    • PyYAML(半结构化语言)
    • Jinja2
  • 其模块支持JSON等标准输出格式,可以采用任何编程语言重写
  • 部署简单
  • 主从模式工作
  • 支持自定义模块
  • 支持playbook
  • 易于使用
  • 支持多层部署
  • 支持异构IT环境

5.工作流程

在这里插入图片描述

ansible安装

  • 对管理主机
    • 要求Python 2.6或Python 2.7
    • ansible使用以下模块,都需要安装
      • Paramiko
      • PyYAML
      • Jinja2
      • httplib2
      • six
  • 对被托管主机
    • ansible默认通过SSH协议管理机器
    • 被管理主机要开启SSH服务,允许 ansible主机登录
    • 在托管节点上也需要安装 Python2.5或以上的版本
    • 如果托管节点上开启了SElinux,需要安装 libselinux-python

环境准备

主机名IP角色
ansible192.168.1.252管理主机
web1192.168.1.41托管主机
web2192.168.1.42托管主机
db1192.168.1.43托管主机
db2192.168.1.44托管主机
cache192.168.1.45托管主机

ad-hoc

1)主机管理

  • 安装 ansible之后可以做一些简单的任务
  • ansible配置文件查找顺序
    • 首先检测 ANSIBLE_CONFIG变量定义的配置文件
    • 其次检查当前目录下的./ansible.cfg文件
    • 再次检查当前用户家目录下~/ansible. cfg文件
    • 最后检查/etc/ansible/ansible.cfg文件
  • /etc/ansible/ansible.cfg是ansible的默认配置文件路径

主机定义与分组

] vim /etc/ansible/ansible.cfg
 14 inventory      = /etc/ansible/hosts   #定义托管主机地址配置和文件名,打开注释即可
 61 host_key_checking = False    #ssh主机验证配置参数,打开注释即可,效果为ssh需要输入yes时自动输入yes

] vim /etc/ansible/hosts   #		主机定义方式
[web]					   # 		[组集合名称]
web[1:2]				   #		HOST1
						   #		HOST2	
[db]					   # 		主机名连续时
db[1:2]					   # 		web[1:10]    #  web1到web10十台主机

[other]
cache

] vim /etc/hosts	#主机名解析,与/etc/ansible/hosts中对应
192.168.1.41    web1
192.168.1.42    web2
192.168.1.43    db1
192.168.1.44    db2
192.168.1.45    cache

2)ansible基础命令

ansible 主机集合 -m 模块名称 -a 模块参数
# 主机集合:主机名或分组名,多个使用逗号分隔
# -m 模块名称,默认command模块
# -a  or --args  模块参数
# 其他参数
# -i   inventory文件路径,或可执行脚本
# -k   使用交互式登录密码
# -e   定义变量
# -v   显示详细信息
ansible --version
ansible all --list-hosts  # 列出所有定义了的主机
ansible all -m ping  # 批量检测主机,ssh,不是ping

3)部署ssh证书文件

ssh-keygen
ssh-copy-id
# 所有主机全部部署

4)inventory扩展参数

  • ansible_ssh_port : 如果ssh没有使用默认端口号,则使用该变量定义,例:
] vim /etc/ansible/hosts
[other]
cache ansible_ssh_port=222   #如果cache主机ssh服务使用了222端口
  • ansible_ssh_user : ssh连接的用户
  • ansible_ssh_pass : ssh密码,不安全,建议使用ssh密钥
  • ansible_ssh_private_key_file : ssh使用的私钥文件,适用于有多个密钥时
  • vars变量定义,例:
] vim /etc/ansible/hosts
[all:vars]     # 为所有主机定义变量
ansible_ssh_private_key_file="/root/.ssh/id_rsa"

[web:vars]    # 为web组定义变量
ntp_server=ntp.aliyun.com
  • children子组定义,用于引用其他组名称,例:
] vim /etc/ansible/hosts
[app:children]
web
db
] ansible app -m ping 
db1 | SUCCESS => {
....
web2 | SUCCESS => {
....
web1 | SUCCESS => {
....
db2 | SUCCESS => {
....
  • 自定义配置文件,根据ansible文件检测规则,当前目录下的配置文件优先于默认配置文件
] mkdir ansible_my
] cd ansible_my
] vim ansible.cfg
[defaults]
inventory   =   myhosts   # 不写路径时为当前路径
host_key_checking = False
] vim myhosts
[app1]
web1
db1
....

5)动态主机

  • ansible Inventory包含静态和动态的 Inventory,静态Inventory指在文件etc/ansible/hosts中指定的主机和组, 动态Inventory指通过外部脚本获取主机列表,按照其要求格式返回给 ansilbe命令
  • json( JavaScript Object Notation, JavaScript对象表示法),一种基于文本独立于语言的轻量级数据交换格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值