自动化运维小工具-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