Ansible简单介绍及基本使用

Ansible简单介绍及基本使用

Ansible

随着运维自动化经历了从本地部署到基础设施即服务(IaaS)、平台即服务(PaaS)在到软件即服务(SaaS)的发展阶段,掌握多种自动化运维工具就成了运维人员必备技能之一,ansible就是目前国内使用比较广泛的自动化运维工具之一。

工具介绍

简介

ansible是基于SSH协议的自动化运维工具,使用Python开发的,使用起来灵活、简单。

可以非常方便的实现批量系统配置、批量程序部署、批量运行命令等操作。

特性

模块化:

调用特定的模块,完成特定任务
有Paramiko,PyYAML,Jinja2(模板语言)三个关机模块
支持自定义模块
基于Python语言实现
部署简单,基于python和SSH(默认已安装),agentless
安全,基于OpenSSH
支持playbook编排任务

幂等性

一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
无需代理不依赖PKI(无需ssl)
可使用任何编程语言写模块
YAML格式,编排任务,支持丰富的数据结构
较强大的多层解决方案

主要组成部分

  • API:供第三方程序调用的应用程序编程接口
  • Inventory:Ansible管理主机清单,存放在/etc/ansible/hosts
  • Modules:模块,Ansible执行命令的功能的模块,多个命令的组合
  • Playbook:剧本,多个模块的组合,编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件
  • Plugins:模块功能的补充,如连接类型的插件、循环插件、变量插件、过滤插件等,该功能不常用
  • Ansible:组合Inventory、API、Modules、Plugins的绿框,可以理解为是ansible命令工具,其为核心执行工具

相关文件

/etc/ansible/ansible.cfg    主配置文件,配置ansible工作特性
/etc/ansible/hosts          主机清单文件
/etc/ansible/rules          角色目录

程序:

/usr/bin/ansible            主程序,临时命令执行工具
/usr/bin/ansible-doc        查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy     下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook   定制自动化任务,编排剧本工具/usr/bin/ansible-pull 

远程执行命令的工具:

/usr/bin/ansible-vault      文件加密工具
/usr/bin/ansible-console    基于Console界面与用户交互的执行工具

/etc/ansible/ansible.cfg ansible

配置文件(一般保持默认)

[defaults]
#forks               = 5        并发执行数量,默认5
#poll_interval = 15             拉取数据间隔时间,默认15秒
#sudo_user     = root           sudo命令默认用户
#remote_port = 22               连接远程端口号
#host_key_checking = False      检查对应服务器的host_key,##建议取消注释
#log_path=/var/log/ansible.log  日志文件,##建议取消注释

ansible 命令介绍

功能:通过ssh实现配置管理、应用部署、任务执行等功能

建议:配置ansible端能基于密钥认证的方式联系各被管理节点

格式:ansible <host-pattern> [-m module_name] [-a args]

常用选项:
–version                  显示版本
-m module              指定模块,默认为command
-v 详细过程                   –vv -vvv更详细
–list-hosts              显示主机列表,可简写—list
-k, –ask-pass                  提示连接密码,默认Key验证
-K, –ask-become-pass 提示输入sudo
-C, –check              检查,并不执行
-T, –timeout=TIMEOUT        执行命令的超时时间,默认10s
-u, –user=REMOTE_USER    执行远程执行的用户
-b, –become                   代替旧版的sudo 切换
<host-pattern>                         匹配主机的列表
ALL                    表示列表中的所有主机

示例:
ansible all -m  ping

* 支持通配符

示例:
ansible “*” -m ping
ansible 192.168.1.* -m ping
ansible “*srvs” -m ping

或关系

示例:
ansible “websrvs:appsrvs”  -m ping
ansible “192.168.1.10:192.168.1.20” -m ping

逻辑与

ansible “websrvs:&dbsrvs”  -m ping
在websrvs组,但不在dbsrvs组中的主机

逻辑非

ansible ‘websrvs:!dbsrvs’  -m ping

综合逻辑

ansible ‘websrvs:dbsrvs:&appsrvs:!ftpsrvs’ -m -ping

正则表达式

ansible “websrvs:&dbsrvs”  -m ping
ansible “~(web|db).*\.magedu\.com” -m ping

常用模块

简单介绍常用模块如何使用,模块的参数仅是常用的参数,完整具体的参数,请参考ansible文档,或者使用ansible-doc命令查看模块的帮助文档。

command 执行命令

ansible的默认模块,因此可以省略-m参数。

ansible lanyulei -m command -a "hostname"
ansible lanyulei -a "hostname"

shell 执行shell命令

与上面的command基本相同,但shell模块兼容性更好。

例如:当命令中需要管道操作的时候,则不能使用command模块,需要使用shell模块来执行命令。

ansible lanyulei -m shell -a "ps -ef |grep ansible" -f 1
-f 参数表示每次返回多少条结果

yum 安装软件

推送脚本文件到远程主机,并远程执行脚本文件

ansible lanyulei -m yum -a "name=httpd state=installed"

参数介绍

name    指定要安装的软件包的名称
state   指定使用yum的方式
    installed, present    安装软件包
    removed, adsent       移除软件包
    latest                安装目前最新的软件包

copy 推送文件

将本地文件推送到客户端

ansible lanyulei -m copy -a "src=/etc/hosts dest=/tmp/test.txt"

在推送覆盖远程主机文件时,对远程主机已有的文件进行备份,按照时间备份

ansible lanyulei -m copy -a "src=/etc/hosts desc=/tmp/test.txt backup=yes"

直接想远程机器文件内写入数据,并且直接覆盖远程文件内原有的数据

ansible lanyulei -m copy -a "content='bgx' dest=/tmp/test.txt"

参数介绍

src       要推送数据的源文件信息
dest      要推送到目标机器的啥路径
backup    对推送过去的文件,进行备份
content   直接在远程主机上对文件进行原地修改
group     推送文件的时候,指定文件属组
owner     推送文件的时候,指定文件属主
mode     推送文件的时候,指定文件权限

fetch 拉取文件

文件拉取模块主要是将远程主机中的文件拷贝到本机中,和copy模块的作用刚刚相反,并且在保存的时候使用hostname来进行保存,当文件不存在的时候,会出现错误,除非设置了选项fail_on_missing为yes

ansible lanyulei -m fetch -a "dest=/opt src=/tmp/cron.txt"

详细参数可参考

ansible-doc -s fetch

service 启停服务

启动或者停止服务

ansible lanyulei -m service -a "name=httpd state=stopped enabled=yes"

参数介绍

name     定义要启停的服务名称
state    指定服务状态,停止或者启动
    started    启动
    stopped    停止
    restarted  重启
    reloaded   重载
enabled  是否让服务开机自启动

script 执行脚本文件

在本地运行模块,等同于在远程执行,不需要将脚本文件进行文件推送,就可以执行

ansible lanyule -m script -a "/tmp/test.sh"

user 用户管理

操作系统的用户

创建用户,并配置对应的用户密码(-1 表示使用MD5进行加密)
passwd=`echo "lanyulei" | openssl passwd -1 -stdin`
ansible lanyulei -m user -a "name=lanyulei password='$passwd'"
创建用户,设置uid为888, 并加入gid为888的组
ansible lanyulei -m user -a "name=lanyulei uid=888 group=888 shell=/sbin/nologin create_home=no"

参数介绍

uid          指定用户的uid
group        指定用户组名称
groups       指定附加组名称
password     设置用户密码
shell        指定用户登陆的shell
create_home  是否创建家目录

group 组管理

操作系统的用户组

创建组
ansible lanyulei -m group -a "name=lanyulei gid=888"

参数介绍

name      指定创建的组名
gid       指定组的gid
state
    absent     移除远程主机的组
    present    创建远程主机的组

file 目录及文件操作

对目录及文件进行操作

创建目录
ansible lanyulei -m file -a "path=/tmp/lanyulei state=diretory"
创建文件
ansible lanyulei -m file -a "path=/tmp/lanyulei state=touch mode=555 owner=root group=root"
创建链接文件
ansible lanyulei -m file -a "src=/tmp/lanyulei path=/tmp/lanyulei_link state=link"

参数介绍

path     指定远程主机目录或者文件信息
recurse  递归授权
state
    directory     在远程主机上创建目录
    touch         在远程主机上创建文件
    link/hard     在远程主机上给文件或者目录创建链接文件
    absent        删除远程主机上的目录或者文件
    mode          设置远程主机上文件或者目录的权限
    owner         设置远程主机上文件或者目录的属主
    group         设置远程主机上文件或者目录的属组

cron 定时任务

操作crontab定时任务

创建一个定时任务
ansible lanyulei -m cron -a "minute=* hour=* day=* month=* weekday=* job='/bin/sh /tmp/test.sh'"
默认全都是*,因此可以写成如下:
ansible lanyulei -m cron -a "job='/bin/sh /tmp/test.sh'"
设置定时任务注释信息,防止重复,name设定
ansible lanyulei -m cron -a "name='cron2' job='/bin/sh /tmp/test.sh'"
删除相应的定时任务
ansible lanyulei -m cron -a "name='ansible cron2' minute=0 hour=0 job='/bin/sh /tmp/test.sh' state=absent"
注释相应的定时任务,使定时任务失效
ansible lanyulei -m cron -a "name='ansible cron2' minute=0 hour=0 job='/bin/sh /tmp/test.sh' disabled=no"

mount 挂载

用于挂载的模块

ansible lanyulei -m mount -a "path=/backup src=192.168.1.131:/data fstype=nfs opts=defautls,noatime state=mounted"

参数介绍

state
    present        开机挂载,仅将挂载配置写入/etc/fstab,但是不会执行挂载的操作
    mounted        挂载设备,并将配置写入/etc/fatab
    unmounted      临时卸载设备,不会清除/etc/fstab写入的配置
    absent         卸载设备,会清理/etc/fstab写入的配置

参考:

http://www.178linux.com/99715

http://edu.51cto.com/course/15617.html

转载于:https://blog.51cto.com/11293981/2351121

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101116.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【PCIe】配置空间

    【PCIe】配置空间介绍PCI/PCIe配置空间。

  • vmware16虚拟机安装教程win10_虚拟机安装ghostwin7

    vmware16虚拟机安装教程win10_虚拟机安装ghostwin7相对于vm15而言,vm16虚拟机它的基础上进行了全方面的改善和优化,如能够从vmx中删除图形渲染并将其作为单独的沙箱进程运行,可以增强虚拟机的安全性,还支持在WorkstationPro顶部运行的KINDkubernetes集群,与虚拟机虚拟XHCI控制器USB3.1,以及支持10Gbps等等,最值得一提的是支持暗模式,主要优势在于弱光环境下具有更高的可读性,且降低了设备屏幕的亮度,改善…

  • git下载安装教程

    git下载安装教程git下载安装教程前言:因为最近突然对使用github搭建一个自己的网站并绑定域名特别着迷,但是前提条件是必须得安装git,于是便把安装过程记录下来,便利自己,帮助他人。1.访问git官网下载最新版本git官方网页:https://git-scm.com/download/win在git官网中,有不同操作系统下的git,选择符合自己电脑版本的进行下载就可以了这里我选择的windows,然后根据自己电脑是32位还是64位,在下面两个选项中选择选择好了静待其下好就好了或许会有下载缓慢或无法下

  • sublime 插件安装 最全版本

    sublime 插件安装 最全版本SublimeText3修改插件安装位置在安装目录下新建个“Data”目录(如安装目录“D:\ProgramFiles\SublimeText3\”下),重启Sublime,BrowserPackages就直接打开这里了。这时候,需要重亲安装“PackageControl”,装完后,貌似插件会自动装好的。第一篇:  首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,…

  • ext.apply ext.applyIf ext.extend的区别[通俗易懂]

    ext.apply ext.applyIf ext.extend的区别[通俗易懂]Ext.apply、Ext.applyIf和Ext.extend:_sunExt.apply、Ext.applyIf和Ext.extend:2008年07月25日星期五10:48Ext.apply、Ext.applyIf和Ext.extend:Ext.apply(obj,config,[defaults])将config对…

  • jdbc fetchsize_jdbc和odbc的关系

    jdbc fetchsize_jdbc和odbc的关系DBUtilscommons-dbutils是Apache组织提供的一个开源JDBC工具类库,封装了针对于数据库的增删改查操作APIQueryRunnerResulSetHandlerDbutils插入举例Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JBBCUtils.getConnections3();

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号