Ansible是当下比较流行的自动化运维工具,可通过SSH协议对远程服务器进行集中化的配置管理、应用部署等,常结合Jenkins来实现自动化部署。

除了Ansible,还有像SaltStack、Fabric(曾经管理100多台服务器上的应用时也曾受益于它)、Puppet等自动化工具。相比之下,Ansible最大的优势就是无需在被管理主机端部署任何客户端代理程序,通过SSH通道就可以进行远程命令的执行或配置的下发,足够轻量级,但同时功能非常强大,且各项功能通过模块来实现,具备良好的扩展性。不足之处是Ansible只支持在Linux系统上安装,不支持Windows。

如果你需要在多于一台服务器上做相同的操作,那么建议你使用Ansible之类的自动化工具,这将极大提高你的操作效率。

环境搭建

1.找一台主机用于做管理服务器,在其上安装Ansible

yum -y install ansible

Ansible基于Python实现,一般Linux系统都自带Python,所以可以直接使用yum安装或pip安装。

安装完后,在/etc/ansible/目录下生成三个主要的文件或目录,

[root@tool-server ~]# ll /etc/ansible/
total 24
-rw-r--r--. 1 root root 19179 Jan 30  2018 ansible.cfg
-rw-r--r--. 1 root root  1136 Apr 17 15:17 hosts
drwxr-xr-x. 2 root root     6 Jan 30  2018 roles
  • ansible.cfg: Ansible的配置文件
  • hosts:登记被管理的主机
  • roles:角色项目定义目录,主要用于代码复用

2.在/etc/ansible/hosts文件中添加需要被管理的服务器节点

[root@tool-server ~]# vim /etc/ansible/hosts
[k8s]
192.168.40.201
192.168.40.202
192.168.40.205
192.168.40.206

[k8s]表示将下面的服务器节点分到k8s的组中,后面执行命令时可指定针对某个组执行。

3.生成SSH KEY,并copy到被管理节点上,实现免密SSH访问

在管理节点执行 ssh-keygen 生成SSH KEY,然后copy到各被管理节点上

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.40.201

上面命令将~/.ssh/id_rsa.pub文件内容添加到被管理节点的/root/.ssh/authorized_keys文件中,实现管理节点到被管理节点的免密SSH访问。

4.调试Ansible

针对k8s服务器组执行ping,验证Ansible到各被管理节点的连通性

[root@tool-server ~]# ansible k8s -m ping
192.168.40.201 | SUCCESS => {"changed": false,"ping": "pong"
}
192.168.40.205 | SUCCESS => {"changed": false,"ping": "pong"
}
192.168.40.202 | SUCCESS => {"changed": false,"ping": "pong"
}
192.168.40.206 | SUCCESS => {"changed": false,"ping": "pong"
}

Ansible只需要在管理主机上安装,然后打通管理主机到各被管理主机的SSH免密访问即可进行集中化的管理控制,不需在被管理主机安装任何代理程序。

Ansible命令

Ansible的命令格式为, ansible 主机群组名 -m 命令模块名 -a "批量执行的操作"

其中-m不是必须的,默认为command模块,-a也不是必须的,表示命令模块的参数,比如前面的ping模块就没有参数。

可以使用 ansible-doc -l 列出所有可用的命令模块, ansible-doc -s 模块名 查看指定模块的参数信息

常用命令模块

1.command
command是Ansible的默认模块,不指定-m参数时默认使用command。command可以运行远程主机权限范围内的所有shell命令,但不支持管道操作

# 查看k8s分组主机内存使用情况
ansible k8s -m command -a "free -g"

2.shell
shell基本与command相同,但shell支持管道操作

#shell支持管道操作 |grep Mem
ansible k8s -m shell -a "free -g|grep Mem"

3.script
script就是在远程主机上执行管理端存储的shell脚本文件,相当于scp+shell

# /root/echo.sh为管理端本地shell脚本
ansible k8s -m script -a "/root/echo.sh"

4.copy
copy实现管理端到远程主机的文件拷贝,相当于scp

#拷贝本地echo.sh文件到k8s组中远程主机的/tmp目录下,所属用户、组为 root ,权限为 0755
ansible k8s -m copy -a "src=/root/echo.sh dest=/tmp/ owner=root group=root mode=0755"

5.yum
软件包安装或删除

ansible k8s -m yum -a "name=wget state=latest"

其中state有如下取值:

  • 针对安装,可取值“present,installed,latest”,present,installed即普通安装,两者无区别,latest是使用yum mirror上最新的版本进行安装
  • 针对删除,可取值“absent,removed”,两者无差别

纽约州长:抗体测试显示纽约或270万人感染新冠病毒

来说一下Ansible的简明教程相关推荐

  1. 简明python教程pdf-python简明教程中文pdf

    python简明教程中文pdf电子书是作者通过自己对计算机语言多年来的研究和学习得出的学习经验,对于python新手来说非常有用,值得大家下载学习. python简明教程中文pdf文章目录 1.介绍 ...

  2. EasyJWeb-Velocity脚本简明教程

    EasyJWeb-Velocity脚本简明教程 (pdf版) 很多人下载了EasyJWeb的开源应用示例,但是对动态页面模板文件中的标签使用不是很熟悉,这里简单介绍一下.EasyJWeb特定把视图限定 ...

  3. UML精粹--标准对象建模语言简明教程

    今天借了一本<UML精粹--标准对象建模语言简明教程>(Uml Distilled: A Brief Guide to the Standard Object Modeling Langu ...

  4. python多态_Python 简明教程 21,Python 继承与多态

    程序不是年轻的专利,但是,它属于年轻. 目录 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封 ...

  5. Kafka—简明教程

    目录 学习目标: 一.Kafka发展历程 1.Kafka一代 - 消息队列 2.Kafka二代 - Partition 3.Kafka三代 - Broker集群 二.Kafka的消息结构? 三.Zoo ...

  6. 现代 CMake 简明教程(一)- CMake 基础

    系列文章目录 现代 CMake 简明教程(一)- CMake 基础 现代 CMake 简明教程(二)- 设计理念与使用 文章目录 系列文章目录 前言 CMake 基础 1. Modern CMake ...

  7. ArcGIS Pro 简明教程(3)数据编辑

    ArcGIS Pro 简明教程(3)数据编辑 by 李远祥 数据编辑是GIS中最常用的功能之一,ArcGIS Pro在GIS数据编辑上使用习惯有一定的改变,因此,本章可以重点看看一些编辑工具的使用和使 ...

  8. ArcGIS Pro 简明教程(2)基础操作和简单制图

    ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...

  9. linux系统sql语句报错_linux之SQL语句简明教程---CREATE VIEW

    视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...

最新文章

  1. 一位老码农的分享:一线程序员该如何面对「中年危机」?
  2. leetcode 1143. 最长公共子序列
  3. 无监督分类:聚类分析(K均值)
  4. 前端切换视图_前端架构 101(五):从 Flux 进化到 Model-View-Presenter
  5. php 文件指定位置添加内容,C++_VC++在TXT文件指定位置追加内容的方法,本文实例讲述了VC++操作文本文 - phpStudy...
  6. java se是不是java_Java SE和java EE究竟有什么实质上的区别
  7. 十一. Python基础(11)—补充: 作用域 装饰器
  8. 抖音否认封杀腾讯;程序员拒绝带电脑回家被开除,获赔 19.4 万;Excel 具备图灵完备性 | 极客头条...
  9. JSP(九大内置对象)
  10. 欧盟网络安全局发布《供应链攻击威胁全景图》报告(上)
  11. 天视通ipc地址修改工具_远程运行小工具PsExec
  12. java gc什么意思_对Java GC的简单理解
  13. 三维立体地图开发项目书
  14. SIM900A GPRS GSM 基础知识
  15. C语言之“输出100~200之间的素数”
  16. 考研公式大全-提问版-数学二
  17. C/C++数组初始化
  18. solr 关于 carrot2聚类参数配置测试
  19. python识别图像中绿色的部分_[OpenCV-Python] OpenCV 中的图像处理 部分 IV (四)
  20. 服务器主板最多能装几个cpu,主板装两颗CPU:性能会更强吗?

热门文章

  1. 20180625笔记
  2. 人工智能项目正在起飞:这对未来的工作意味着什么?
  3. 每天一个linux命令(9):touch命令
  4. java mp3播放器 ×××面
  5. 周立波贼经典的话1-10
  6. ASP.NET编程中常用到的27个函数集
  7. VB.NET模块的总结(一)精简版
  8. Oracle游标学习笔记
  9. (转)Windows7 “上帝模式”的原理
  10. 集美大学1511,1512软件工程课程作业总结