自动化运维工具Ansible

时间:2024-01-27 11:43:25

介绍

更加简洁的自动化运维工具,不需要再客户端上安装,

基于python开发,

安装简单,centos上直接yum,

可以实现批量操作系统配置、批量程序的部署、批量运行命令。

 

Ansible常用命令参数

-a:制定模块所需的参数

-i:文件路径

-m:要使用的模块的名称

-h:帮助信息

-v:详细信息

all:针对hosts定义的所有主机执行

1、Ansible安装部署

(1)安装ansible

直接yum安装

yum install ansible -y

版本信息

 

2ssh免密钥登录设置(只在主控制端使用)

 

ansible服务器上生成公钥和私钥

 

[root@mycat ansible]# ssh-keygen -t rsa-t rsa:表示使用rsa算法进行加密)

 

 

 //会让你设置密钥生成路径和密钥(可以不设置默认路径和自动生成密钥)

3)将公钥发送给客户端

 

[root@mycat ansible]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.200.41

 

//将公钥发送到客户端41上(提示输入是否连接yes,和客户端登陆密码)

 

 

 

4)测试登录客户端

使用scp命令也可以

[root@mycat ansible]# scp /root/.ssh/id_rsa.pub root@192.168.200.42:/root/.ssh

//将公钥复制到客户端42

如果出现报错可能是

 

1)检查selinux是否关闭

2)公钥文件的权限是否为600

3)Python的版本是否一致

 

5)测试登陆到客户端42

 

 

 

2、编辑hosts文件(/etc/anside/hosts

添加组名(服务)组内可以有多个ip

 

[webservers]

192.168.200.41

[dbservers]

192.168.200.42

1)测试主机连通性

 

只测试web

全部测试

 

常用模块

 

1.     查看所有模块:ansible-doc -l

2.     查看具体某个模块:ansible-doc -s (模块的名)

 

格式

1、远程命令模块

 

commond:默认模块(可省略)用于远程执行命令(不能使用变量)

 

示例:查看远程主机名

 

[root@mycat ansible]# ansible all -m command -a "hostname"

1chdir:执行命令前,进入到指定目录

//进入到41home目录下查看

 

 

2creates:判断文件是否存在,如果存在不执行(先在41home下创建1.txt

 

//判断1.txt存在,就不执行后面的内容,skip跳过

//判断3.txt不存在就执行后面的,在41上创建2.txt

 

 

3removes:判断文件是否存在,如果存在就执行

//判断到2.txt就创建4.txt

//判断没有6.txt就不创建

 

 

 

shell:执行远程主机上的脚本(在远程主机上调用shell解释器运行命令,支持shell的各种功能)

 

示例:执行41主机上的3.sh

[root@mycat ansible]# ansible 192.168.200.41 -m shell -a "/home/3.sh"

 

 

scripts:远程主机执行主控服务器ansible上的脚本(把本地脚本复制到远程主机,并执行)

 

示例:执行ansible上的test1,输出41的主机名

 

 

2ping:测试连接可通性

 

[root@mycat ansible]# ansible webservers -m ping

 

 

3、文件模块

 

copy:复制文件(主要用于将管理主机上的数据信息传送给多台主机)

 

常用参数

 

1)Src:指定将本地管理主机的什么数据信息进行远程复制

//test1复制到41data

 

 

 

2)backup:默认数据复制到远程主机,会覆盖原有文件(选项yes/no是否将原文件进行备份)

//修改一下test1的内容,然后执行backup=yes覆盖原文件,并且备份原文件

查看41data生成了test1的备份

 

 

3content:(可以代替src)在文件中添加信息,直接设定文件的值

//test1中加入123内容

//content添加的内容不会添加回车符

//41上查看test1

 

 

4group:文件数据复制到远程主机,设置文件/目录的属组
owner:文件数据复制到远程主机,设置文件/目录的属主
mode:文件数据复制到远程主机,设置文件/目录的权限

//创建test2,复制test241上它的组为www,用户为qqq,权限为755

查看

5destrequired):为必须使用的参数,必选项。将数据复制到远程节点的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

 

4、管理任务计划

 

cron:定时任务模块

 

常用参数

 

1Weekday/mouth/day/hour/minute(周///小时/分钟)

//*代表一周都执行,*/2一周执行两次

 

2Job:设置定时执行任务

 

3Name:设定定时任务注释描述
//每五分钟同步一次(ntpdate 同步更新时间)

查看41crontab -l查看定时任务的列表

 

 

4state:删除/创建指定的定时任务absent/present

再查看41上的定时任务就没有了

 

5disabled:将指定定时任务进行注释

//注释和取消注释时必须填写job和时间参数

查看41(内容被注释)

取消注释disabled=no

再次查看

 

 

5、用户模块

 

group:批量创建组

 

常用参数

 

1gid:创建的组ID

2Name:创建组的名称

3State:删除/创建组

创建组abcgid1055

[root@mycat ~]# ansible 192.168.200.41 -m group -a "name=abc gid=1055"

删除指定组abcgid1055

[root@mycat ~]# ansible 192.168.200.41 -m group -a "name=abc gid=1055 state=absent"

 

user:批量创建用户

 

常用参数

 

1Groups:指定用户的属组

2Uid:指定用户的uid

3Passwd:指定用户的密码(不能使用明文,只能使用密文方式)

4Name:指定用户名

5Home:指定用户的家目录()

6Createhome:是否创建家目录yes/no

7System:是否为系统用户

8Remove:是否连同家目录一起删掉yes/no

9State:创建/删除absent/present

 

示例:创建www1

[root@mycat ~]# ansible 192.168.200.41 -m user -a "name=www1 comment=lqb uid=1001 group=root"

删除www1用户(及其家目录)

[root@mycat ~]# ansible 192.168.200.41 -m user -a "name=www1 state=absent remove=yes"

 

6Rsynchronize:使用rsync同步文件

 

常用参数

1archive:归档,相当于同时开启recursive(递归)linkspermstimesowner

2group-D选项都为yes ,默认该项为开启

3checksum: 跳过检测sum值,默认关闭

4compress:是否开启压缩

5copy_links:复制链接文件,默认为no ,注意后面还有一个links参数

6delete: 删除不存在的文件,默认no

7dest:目录路径

8dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议

9dirs:传速目录不进行递归,默认为no,即进行目录递归

10rsync_optsrsync参数部分

11set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况

12mode: pushpull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件,pull 模式用于从远程主机上取文件

 

//首先需要在远程客户端下载rsync

ansiblehosts同步到41tmp目录下

查看41tmp/hosts

Get_url该模块主要用于从httpftp ,https等服务器上下载文件类似于wget

 sha256sum:下载完成后进行sha256 check

 timeout:下载超时时间,默认10s

 url:下载的URL

 url_passwordurl_username:主要用于需要用户名密码进行验证的情况

 use_proxy:是事使用代理,代理需事先在环境变更中定义

//从网站下载页面到data/1

查看是否下载成功

Yum:软件包管理

 Stat:获取远程文件信息

 Service:远程主机系统服务管理

 Sysctl:远程主机sysctl配置