ansible基础 、 ad-hoc 、 批量配置管理 、 总结和答疑

ansible简介

 

什么是ansible

ansible是2013年推出的一款IT自动化和DevOps软件,2015年被RedHat收购。是基于Python研发,糅合很多老运维工具的优点,实现了批量操作系统配置,批量程序部署,批量运行命令等功能

ansible可以实现:

-自动化部署APP

-自动化管理配置项

-自动化持续交付

-自动化(AWS)云服务管理

 

为什么选择ansible

选择一款配置管理软件,无外乎从以下几点来权衡利弊

-活跃度(社区)

-学习成本

-使用成本

-编码语言

-性能

-使用是否广泛

 

ansible优点

-只需要SSH和Python即可使用

-无客户端

-ansible功能强大,模块丰富

-上手容易,门槛底

-基于Python开发,做二次开发更容易

-使用的公司比较多,社区活跃

 

ansible特性

模块化设计,调用特定的模块完成特定任务

基于Python语言实现

-paramiko

-PyYAML(半结构化语言)

-Jinja2

其模块支持JSON等标准输出格式,可以采用任何编程语言重写

 

  • 部署简单
  • 主从模式工作
  • 支持自定义模块
  • 支持playbook
  • 易于使用
  • 支持多层部署
  • 支持异构IT环境

 

工作流程

 

ansible安装

软件依赖关系

对管理主机

-要求Python 2.6或 Python 2.7

ansible使用以下模块,都需要安装

-paramiko

-PyYAML

-Jinja2

-httplib2

-six

 

对被托管主机

-ansible默认通过SSH协议管理机器

-被管理主机要开启ssh服务,允许ansible主机登录

-在托管节点上也需要安装Python2.5或以上的版本

-如果托管节点上开启了SElinux,需要安装libselinux-python

 

 

 

公共变量

子组定义

app:children下写的组名

 

 

 

动态主机

无限可能

-ansible Inventory包含静态和动态的Inventory,静态Inventory指在文件/etc/ansible/hosts中指定的主机和组,动态Inventory指通过外部脚本获取主机列表,安装其要求格式返回给ansilbe命令

Json

-JSON(JaveScript Object Notation  JavaScript对象表示法),一种基于独立于语言的轻量级数据交换格式

 

 

 

模块

ansible-doc

-模块的手册相当于shell的man,很重要

-ansible-doc  -l   列出所有模块

-ansible-doc  模块名  #查看模块帮助

 

ping模块

-测试网络连通性,ping模块没有参数

 

command模块

-默认模块,远程执行命令

 

注意:

-command不能有以下字符 "<",">","|","&"

-command模块不能解析系统变量

-该模块不启动shell直接在ssh进程中执行,所有用到shell命令执行都会失败

 

shell模块

-基本用法和command一样,区别是通过/bin/sh、进行执行命令,可以执行任何命令

-不能执行交互式命令,例如vim top等

 

案例

 

变量解析

-ansible执行命令是二次解析

-第一次在本机解析,第二次在执行机器解析

-需要第二次解析的变量要转义(\)

文件在哪里

-文件在用户目录

-ansible是使用ssh多次连接执行

-连接退出以后之前的状态就全部失效了

-解决办法:使用chdir代替cd命令

 

案例

 

script模块

在本地写脚本,然后使用script模块批量执行

注意:该脚本包含但不限于shell脚本,只要指定Sha-bang解释器的脚本都可运行

 

案例

 

yum模块

使用yum包管理器来管理软件包

name:要进行操作的软件包名字

state:动作(installed,removed)

 

service模块

name:必须选,服务名称

enabled:是否开机启动 yes|no

sleep:执行restarted,会在stop和start之间沉睡几秒

state:对当前服务执行启动,停止,重启加载等操作

 

copy模块

-复制文件到远程主机

-src:复制本地文件到远程主机,绝对路径和相对路径都可以,路径为目录时会递归复制。若路径以“/”结尾,只复制目录里的内容,若不以"/"结尾,则复制包含目录在内的整个内容,类似于rsync

-dest:必须选。远程主机的绝对路径,如果源文件是一个目录,那该路径必须是目录

-复制的文件一般是配置文件,大小在1M左右的文件,大小过大拷贝速度慢

-backup:覆盖前先备份源文件,备份文件包含实践信息。有两个选项:yes|no

-force:若目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,设为no,则只有当目标主机的目标位置不存在改文件时,才复制。默认为yes

 

 

案例

 

lineinfile模块

-类似sed的一种行编辑替换模块

-path  目标文件

-regexp  正则表达式,要修改的行

-line  最终修改的结果

 

replace模块

-类似sed的一种行编辑替换模块

-path  目标文件

-regexp  正则表达式,要修改的行

-replace  最终修改的结果

 

lineinfile与replace的区别

lineinfile替换匹配到的一整行

replace替换匹配到的部分

 

案例

 

setup模块

setup模块

-主要用于获取主机信息,playbooks里经常会用的另一个参数gather_facts与该模块相关,setup模块下经常用的是filter参数

-filter过滤所需信息

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值