其他分享
首页 > 其他分享> > 自动化运维小工具-Ansible简单介绍

自动化运维小工具-Ansible简单介绍

作者:互联网

​这个小工具是我之前工作中搭建大数据平台使用到的。在多服务器场景下挺方便的。挺好用。

一、介绍

ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,可以在集群多机器之间进行交互。比如执行相同的shell命令、拷贝文件到各个服务器、ping测试、服务器相关主机信息(包括主机名,内存,cpu,磁盘等)、定时执行模块等。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

模块是Ansible执行的最小单位,可以是由Python编写,也可以是Shell编写,也可以是由其他语言编写。

简单的说,在一台主机上安装 Ansible,将其他服务器ip添加到配置文件中,通过密钥免密码登录。可以批量执行命令,批量上传下载文件、文件夹等。

 

二、安装

1.在服务器隔离外网的情况下可以使用离线rpm进行安装。Rpm -Uvh *.rpm

 如何获取完整的rpm包。这里有个简单的方法,就是在一台能使用yum的服务器,虚拟机也可,直接使用yum download的方式就可以下载rpm包。

2.直接使用yum -install ansible进行安装即可

安装完成后检查是否存在 /etc/ansible文件夹。   

 

三、使用

1. 配置主机信息

安装好Ansible后,就可以配置ansible的hosts地址了,文件如下。

其中[]内的就是ip的分组名,在ansible中可以针对分组进行操作。这里我使用的是我本地自己搭建的两个虚拟机地址,现实生产中可以根据业务需求进行规划配置。

vim /etc/ansible/hosts

[whoami]

192.168.125.9 ansible_ssh_user=root ansible_ssh_pass=xxxx

192.168.125.9 ansible_ssh_user=root ansible_ssh_pass=xxxx

    

 

2.取消ssh know-hosts主机验证

到安装目录下/etc/ansible/修改ansible.cfg将 host_key_checking = False注释取消掉。这样在使用过程中不会出现找不到主机名或者主机信息的ssh相关错误。

3. 常用模块

Ø Ping

对集群内的所有主机进行ping测试,检查主机是否能正常通信。在搭建集群前基本上都会检测服务器配置、状态等信息。

ansible test -m ping

Ø shell模块

使用shell模块,可以对集群内的各个主机执行相同的命令。

ansible test -m shell -a "date"

Ø 复制文件、脚本到各个服务器

ansible test -m copy -a "src=/home/zhangyong/ansible_rpm.zip dest=/home/ mode=0755"

Src指的是源服务器文件地址,dest指的是目的服务器地址。Mode指的是,目的主机的权限为755

        这里需要说明下,有一台服务器文件复制失败了,主要是ansible的底层是python。该台服务器的python版本被我改成了3.x的版本,导致的传输失败,不要被误导了

 

Ø 获取主机相关信息

以查看主机cpu数量为例

ansible test -m setup -a 'filter=ansible_processor_cores' --tree /tmp/

 

关键字

说明

返回值例子

ansible_nodename

节点名

"6-dns-1.hunk.tech"

ansible_fqdn

FQDN名

"6-dns-1.hunk.tech"

ansible_hostname

主机名称

"6-dns-1"

ansible_domain

主机域名后缀

"hunk.teh"

ansible_memtotal_mb

总物理内存

"ansible_memtotal_mb": 222

ansible_swaptotal_mb

SWAP总大小

"1023"

ansible_processor

CPU信息

Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz

ansible_processor_cores

CPU核心数量

4

ansible_processor_vcpus

CPU逻辑核心数量

2

ansible_all_ipv4_addresses

IPV4地址

192.168.0.200

ansible_all_ipv6_addresses

所有IPV6地址

 

ansible_default_ipv4

默认网关的网卡配置信息

 

ansible_eth2

具体某张网卡信息

不同系统名称需要变化

ansible_dns

DNS设置信

 

ansible_architecture

系统架构

x86_64

ansible_machine

主机类型

x86_64

ansible_kernel

内核版本

"2.6.32-696.el6.x86_64"

ansible_distribution

发行版本

"CentOS"

ansible_distribution_major_version

操作系统主版本号

"6"

ansible_distribution_release

发行版名称

"Final"

ansible_distribution_version

完整版本号

"7.4.1708"

ansible_pkg_mgr

软件包管理方式

"yum"

ansible_service_mgr

进行服务方式

"systemd"

ansible_os_family

家族系列

"RedHat"

ansible_cmdline

内核启动参数

 

ansible_selinux

SElinux状态

"disabled"

ansible_env

当前环境变量参数

 

ansible_date_time

时间相关

 

ansible_python_version

python版本

"2.6.6"

ansible_lvm

LVM卷相关信息

 

ansible_mounts

所有挂载点

 

ansible_device_links

所有挂载的设备的UUID和卷标名

 

ansible_devices

所有/dev/下的正在使用的设备的信息

 

ansible_user_dir

执行用户的家目录

"/root"

ansible_user_gecos

执行用户的描述信息

"The root "

ansible_user_gid

执行用户的的GID

0

ansible_user_id

执行用户的的用户名

"root"

ansible_user_shell

执行用户的shell类型

"/bin/bash"

ansible_user_uid

执行用户的UID

0

 

Ø 脚本执行

ansible db -m script -a '/tmp/script.sh'

 

Ø 执行yum安装

           ansible whoami -m yum -a 'name=ansible state=present'

  state还有其他的状态,present是安装,还有卸载,更新等

以上模块已经基本满足日常需要了,针对集群多服务器的情况。脚本的执行、命令执行、文件分发以及服务器主机状态获取。

如果还想体验ansible的其他功能,可以参考ansible的手册。

更多文章请关注公众号:

标签:运维小,主机,ansible,Ansible,yum,user,自动化,服务器,执行
来源: https://blog.csdn.net/whoami_zy/article/details/118072301