Linux——ansible的应用

要让ansible管理业务里的主机

1.得先知道,有哪些主机

用IP地址,用主机名

2.知道了有哪些主机以后,精细、细分管理

主机要用某些办法,分组管理

在ansible里,要用一个东西:清单->inventory

inventory

这个东西的存在形式

ansible是为了人方便使用,为了简单

所以,inventory,就是个文本文件

最简单的写法

每行也一个,写很多行,可以写IP地址,也可以写主机名(需要DNS)

进一步,进行简单的分组

按照人的思路,头上加个"标题",在这个标题下写很多行

组名

列出主机

分组很灵活,并不强制每个主机必须在某一个组里

任意分组之间,没有冲突,完全看需求

比如:可以同时按照多种条件去同时写很多分组

1)按照服务器的类型分:web服务器、db服务器、storage服务器......

2)同时,有可以按照位置:A机房的一组,B机房的一组

再比如,可以分组套分组

在inventory文件,先按照其他条件分好了组

然后,以"组名"为成员,再分组

如果是套着写,通常写在文件末尾

不论是分组,还是成员,写法也可以灵活

按照上面写的,通常是IP或主机名

能不能写范围?

可以写匹配范围,比如字符串的匹配,比如IP地址的网段和范围

servera,serverb......serverf

192.168.1.1......192.168.1.200

上面这种,就可以用范围表示,比如用 [ ]

假设,写好了inventory文件,怎么查看?

1)直接看文件

但是,如果这个文件内容特别多,写的很长......

2)用ansible的命令去看,给你列出,比如某个组有哪些主机

ansible 组名 --list-hosts

举个例子......

比如,有以下主机:

servera 192.168.1.101

serverb 192.168.1.102

serverc 192.168.1.103

可以分组

webserver\] 下面服务器,运行web,作为web服务器 serverb \[dbserver\] 下面这个主机运行了数据库,作为dbserver servera \[storageserver\] 下面这个服务器,是存储服务器 serverc \[servers\] 包含所有的服务器,可以写范围 servera serverb serverc 或写成 server\[a:c

discuz:children\] 按照业务分组套分组 webserver dbserver

以上分组,是为了业务和用途

在对不同目标,做不同操作时,调用不同分组

最后,上面咱知道了inventory怎么写,问题来了,这个文件放哪儿?

说直白点

将来你想用哪个目录作为ansible工作目录,那就把inventory放哪......

比如:建立一个目录,专用于ansible,/var/zidonghua

就可以在/var/dizonghua/目录下,vim编辑一个叫做inventory的文件

可以在不同用途的工作目录下,写不同的inventory,然后各自执行

关于ansible的配置文件

1.并不是像其他服务一样用一个统一的守护进程或服务

于是,这个东西配置文件,可以同时出现在不同位置

2.ansible配置文件

ansible.cfg

位置:

1)/etc全局使用的

2)每个Linux用户的主目录下,都可以放一个

3)在每个ansible的工作目录里,都可以放一个

3.用途以及相关原因

1)"越精确,范围越小,越优先"

每个工作目录,优先使用本目录下的配置文件

2)ansible可以根据不同的任务分类,使用完全不同的工作目录

这些工作目录之间也可以相配合补充

3)还可以想更多办法,优化、组织ansible的工作目录

可以目录套目录

这些目录,还可以分别打包

4.配置文件的内容

1)管理机要写明,连接到客户机时,要用客户机的哪个用户进行ssh登录

以及,登录时候,要不要应答密码

通常,在管理机和客户机之间,提前做好ssh免密登录

需要注意

为了保证服务器安全,通常是使用普通账户进行ssh访问

然后,再想办法切换到root账户,做管理性的操作

2)ansible就是为了自动化做管理性配置,于是,通常要切换到root用户

在客户机上,要切换到root,再进行后续工作

要指明,是否要切换root,是否要密码

用什么办法切换(su?sudo?)

通常使用sudo方法,但是,需要在客户机提前配置好sudo

-m 的运用

接下来

已经有了主机的清单,要管理谁

也有了配置文件,连接以及切换root的方法

可以去让ansible执行"操作"

ansible这个东西,本身,并不一定非得写剧本才能操作

有很多一次性操作,可以像执行命令一样,直接做

于是:运行临时命令

对于临时命令,不一定要保证"幂等性"

通常,会有哪些操作

比如:ping测试,收集客户机当前的信息、状态

举个栗子

#ansible servera -m ping

对servera这台主机,发起一个ansible的临时操作

这个操作,调用了一个模块叫做ping

并不是说,用ansible执行ping命令......

servera,SUCCESS成功,这次操作本身成功了

但是,下面,changed是false,不是说操作失败或者写错东西

而是说,这一次操作,没有造成客户机的状态的变更,和之前没变化

于是,有了一个问题:

我哪知道ansible有啥模块?我上哪知道模块咋用?

怎么解决

看内置的官方文档

查看当前内置有哪些模块

ansible-doc -l

找到目标模块,查看这个模块怎么用

ansible-doc 模块名

相关推荐
tan180°22 分钟前
Boost搜索引擎 网络库与前端(4)
linux·网络·c++·搜索引擎
小小菜鸡ing33 分钟前
pymysql
java·服务器·数据库
Mr. Cao code1 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
抓饼先生1 小时前
Linux control group笔记
linux·笔记·bash
挺6的还2 小时前
25.线程概念和控制(二)
linux
您的通讯录好友2 小时前
conda环境导出
linux·windows·conda
代码AC不AC3 小时前
【Linux】vim工具篇
linux·vim·工具详解
当归10243 小时前
SQL Server死锁排查实战指南
java·服务器·网络
码农hbk3 小时前
Linux signal 图文详解(三)信号处理
linux·信号处理
bug攻城狮4 小时前
Skopeo 工具介绍与 CentOS 7 安装指南
linux·运维·centos