ansible

Ansible是一种基于Python的自动化运维工具,通过ssh连接管理多台主机,无需客户端。主要工作模式包括adhoc命令模式和playbook剧本模式。安装完成后,可通过ssh免密设置简化管理。文章介绍了Ansible的配置文件、模块(如ping、command、shell、copy、file、cron、apt和yum)以及剧本模式的应用。
摘要由CSDN通过智能技术生成

一、ansible简介


ansible是一种基于python开发的自动化运维工具,它只需要在服务端安装ansible,无需在每个客户端安装客户端程序,通过ssh的方式来进行客户端服务器的管理,基于模块来实现批量数据配置、批量设备部署以及批量命令执行。

ansible大致模块工作原理见下图:

 大致工作原理就是ansible程序调用读取/etc/ansible/ansible.cfg配置文件获取主机列表清单/etc/ansible/hosts文件,获取所要处理的主机列表,然后查看剧本任务,在根据剧本中一系列任务生成一个临时的脚本文件,然后将该脚本文件发送给所管理的主机,脚本文件在远程主机上执行完成后返回结果,然后删除本地临时文件

二、ansible的安装部署及免密设置

安装

apt install ansible

安装完成后,为了方便管理可以配置ssh免密,命令如下

ssh-keygen -t rsa     //在/root/.ssh/目录下生产公钥(id_rsa.pub)和私钥(id_rsa)两个文件

ssh-copy-id root@<ip>         //分发秘钥至需要免密登录的目标设备

三、ansible工作模式

ansible分为两种工作模式:

一是adhoc(点对点模式):此模式相当于对管理主机执行单个的shell命令

二是playbook(剧本模式):该模式应用较多,该模式是指将一系列任务整合形成一个剧本,以此来达成某种功能(譬如部署某个服务,数据库备份等)的目的。

上述两种模式可类比于一个是执行单个shell命令,一个是shell脚本。

四、ansible配置文件关键配置介绍

ansible.cfg配置文件

inventory :管理的主机清单文件路径

library:ansible的模块存放的目录

remote_tmp:上述工作原理中提到的将脚本发送至对端的临时目录

local_tmp:上述工作原理中提到本地生成脚本存放的临时目录

forks:并发连接数,默认为5

sudo_user :命令执行用户

remote_port :访问管理主机的端口        

host_key_checking:设置是否检查SSH主机的密钥,默认为false

timeout :ssh连接被管理主机的超时时间

log_path:ansilbe日志文件路径

ansible的配置,配置主目录/etc/ansible
ansible.cfg为主配置文件。hosts定义了主机组相关的内容。

vi /etc/ansible/ansible.cfg

private_key_file = /root/.ssh/id_rsa  #定义ssh信任的文件目录

 定义inventory文件(定义主机组)

vi /etc/ansible/hosts

[web]
192.168.163.145
192.168.163.100

4.1 ping模块连通性测试

root@ubuntu:~# ansible web -m ping
192.168.163.145 | FAILED! => {
    "changed": false, 
    "failed": true, 
    "module_stderr": "", 
    "module_stdout": "bash: /usr/bin/python: No such file or directory\r\n", 
    "msg": "MODULE FAILURE", 
    "parsed": false
}

提示这个目标机器没有安装python环境

4.2 command模块 

4.3 shell模块

4.4 copy模块

支持的参数:

src    被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径
content  用于替换"src",可以直接指定文件的内容
dest     将源文件复制到的远程主机的绝对路径
backup    当文件内容发生改变后,在覆盖之前把源文件备份
force   当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设                                  为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes" 

查看发送过来的文件 

4.5 file模块 

支持的参数:
group  定义文件/目录的所属组
owner  定义文件/目录的所属用户。后面必须跟上path:定义文件/目录的路径
dest    被链接到的路径,只应用于state=link的情况

state  状态,有以下选项:

  - directory:如果目录不存在,就创建目录
  - file:即使文件不存在,也不会被创建
  - link:创建软链接
  - hard:创建硬链接
  - touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其               最后修改时间
  - absent:删除目录、文件或者取消链接文件

 4.6 fetch模块

dest:用来存放文件的目录
src:在远程拉取的文件,并且必须是一个file,不能是目录

 

4.7 cron模块 

day:  每天应该运行的工作( 1-31)
hour: 每小时 ( 0-23 )
minute:每分钟( 0-59 )
month:每月( 1-12 )
weekday:每周 ( 0-6 for Sunda y-Saturday,, )
job:指明运行的命令
name:定时任务描述
reboot :任务在重启时运行,不建议使用,建议使用special_time
special_time :特殊的时间范围,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)
state:指定状态,present表示添加定时任务,也是默认设置,absent表示删除定时任务user :以哪个用户的身份执行

4.8 script模块

该模块用于将本地的一个脚本文件在管理设备上执行,脚本文件需有可执行权限

4.9 apt 和 yum 模块

支持的参数:

name:安装包名称
state:

present:安装

latest:安装最新的

absent: 卸载软件

 4.10  setup模块

ansible_all_ipv4_addresses:仅显示ipv4的信息。
ansible_devices:仅显示磁盘设备信息。
ansible_distribution:显示是什么系统,例:centos,suse等。
ansible_distribution_major_version:显示是系统主版本。
ansible_distribution_version:仅显示系统版本。
ansible_machine:显示系统类型,例:32位,还是64位。
ansible_eth0:仅显示eth0的信息。
ansible_hostname:仅显示主机名。
ansible_kernel:仅显示内核版本。
ansible_lvm:显示lvm相关信息。
ansible_memtotal_mb:显示系统总内存。
ansible_memfree_mb:显示可用系统内存。
ansible_memory_mb:详细显示内存情况。
ansible_swaptotal_mb:显示总的swap内存。
ansible_swapfree_mb:显示swap内存的可用内存。
ansible_mounts:显示系统磁盘挂载情况。
ansible_processor:显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus:显示cpu个数(只显示总的个数)。

五、ansible的剧本模式(playbook) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值