自动化运维工具——ansible

一、简要

ansbile是一款简单的自动化运维工具
ansible是由主机清单(配置),playbook(配置),以及各模块插件组成;简单的说就是,用户(管理员)通过ansible的主机清单配置或Playbook配置(一组任务),调用ansible的各种模块及参数来对清单中的主机进行统一管理。
在这里插入图片描述

ansible的安装
# 首先要安装epel源
yum install epel-release -y
yum install ansible -y

二、配置及获取帮助说明

1、配置与执行文件说明

ansible的主配置文件

###### /etc/ansible/ansible.cfg
这个文件主要定义了roles_path路径,主机清单路径,连接清单中的主机方式等配置,这些大部的默认配置已经足够我们平时使用,如需要特别配置可以自行去修改;

###### /etc/ansible/hosts
这个配置文件就是默认主机清单配置文件,可通过ansible.cfg重新定义的

2、ansible 使用格式
ansible
HOST-PATTERN      #匹配主机模式,如all表示所有主机
-m MOD_NAME       #模块名   如:ping
-a MOD_ARGS        #模块执行的参数
-f FORKS                  #生成几个子进行程执行
-C                               #(不执行,模拟跑)
-u Username             #某主机的用户名
-c  CONNection        #连接方式(default smart)    

完整示例:

[root@ansible ~]# ansible all -m shell -a "ifconfig|grep enp0s3"
172.16.3.152 | SUCCESS | rc=0 >>
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

172.16.3.216 | SUCCESS | rc=0 >>
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
3、ansible-doc 获取帮助信息
ansible模块比较多,可以通过ansible-doc --help 显示帮助信息
ansible doc -l 获取所有当前版本下的可用模块及简要信息
ansible-doc -s 模块名 获取指定模块帮助信息说明``

三、ansible常用模块

1、copy模块

从本地copy文件分发到目录主机路径
参数说明:
src= 源文件路径
dest= 目标路径
注意src= 路径后面带/ 表示带里面的所有内容复制到目标目录下,不带/是目录递归复制过去
content= 自行填充的文件内容
owner 属主
group 属组
mode 权限
在这里插入图片描述

2、fetch模块

从远程主机拉取文件到本地在这里插入图片描述
说明:fetch使用很简单,src和dest,dest只要指定一个接收目录,默认会在后面加上远程主机及src的路径

3、command模块

在远程主机上执行命令,属于裸执行,非键值对显示;不进行shell解析;
在这里插入图片描述
在这里插入图片描述
这就是因为command模块不是shell解析属于裸执行导致的,为了能达成以上类似shell中的解析,ansible有一个shell模块;

4、shell模块

由于commnad只能执行裸命令(即系统环境中有支持的命令),至于管道之类的功能不支持,
shell模块可以做到
在这里插入图片描述

5、file模块

设置文件属性(创建文件)
常用参数:
path目标路径
state directory为目录,link为软件链接
group 目录属组
owner 属主
等,其他参数通过ansible-doc -s file 获取
在这里插入图片描述
创建软链接在这里插入图片描述

6、cron模块

通过cron模块对目标主机生成计划任务
常用参数:
除了分(minute)时(hour)日(day)月(month)周(week)外
name: 本次计划任务的名称
state: present 生成(默认) |absent 删除 (基于name)

ansible all -m cron -a 'name="a job for reboot" special_time=reboot job="/some/job.sh"'

ansible all -m cron -a 'name="yum autoupdate" weekday="2" minute=0 hour=12 user="root

ansible all -m cron  -a 'backup="True" name="test" minute="0" hour="5,2" job="ls -alh > /dev/null"'

ansilbe all -m cron -a 'cron_file=ansible_yum-autoupdate state=absent'
7、yum模块

故名思义就是yum安装软件包的模块;
常用参数说明:
enablerepo,disablerepo表示启用与禁用某repo库
name 安装包名
state (present’ orinstalled’, latest’)表示安装, (absent’ or `removed’) 表示删除在这里插入图片描述

8、service模块

服务管理模块
常用参数:
name:服务名
state:服务状态
enabled: 是否开机启动 true|false
runlevel: 启动级别 (systemed方式忽略)在这里插入图片描述

9、script模块

把本地的脚本传到远端执行;前提是到远端可以执行,不要把Linux下的脚本同步到windows下执行;
在这里插入图片描述

四、Playbook实战

playbook是Ansible的配置,部署和编排的语言。他们可以描述你所希望的远程系统强制执行的政策,或者在一般的IT流程的一组步骤;形象点的说就是:如果ansible的各模块(能实现各种功能)是车间里的各工具;playbook就是指导手册,目标远程主机就是库存和原料对象.

1、playbook的核心元素

hosts : playbook配置文件作用的主机
tasks: 任务列表 variables: 变量
templates:包含模板语法的文本文件
handlers :由特定条件触发的任务
roles:用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等

2、playbook运行方式
ansible-playbook --check 	# 只检测可能会发生的改变,但不真执行操作
ansible-playbook --list-hosts	# 列出运行任务的主机
ansible-playbook --syntax-check playbook.yaml 	#语法检测
ansible-playbook -t TAGS_NAME playbook.yaml 	# 只执行TAGS_NAME任务
ansible-playbook playbook.yaml 	# 运行
3、通过playbook安装管理redis服务

第一步:在家目录下创建playbooks

[root@ansible ~]# mkidr playbooks  
[root@ansible ~]# cd playbooks 
[root@ansible playbooks]# cat redis_first.yaml
- hosts: all    remote_user: root   tasks:
  - name: install redis
    yum: name=redis state=latest

  - name: start redis
    service: name=redis state=started

第二步:语法检测

[root@ansible playbooks]# ansible-playbook --syntax-check redis_first.yaml 

playbook: redis_first.yaml

将要执行的主机:
[root@ansible playbooks]# ansible-playbook --list-hosts redis_first.yaml
playbook: redis_first.yaml
  play #1 (all): all    TAGS: []
    pattern: [u'all']
    hosts (2):
      192.168.0.88
      192.168.0.99

第三步:执行

[root@ansible playbooks]# ansible-playbook redis_first.yaml
PLAY [all] ***********************************
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值