自动化运维工具Ansible

微信扫一扫,分享到朋友圈

自动化运维工具Ansible

介绍

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

基于python开发,

安装简单,centos上直接yum,

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

Ansible常用命令参数

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

-i:文件路径

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

-h:帮助信息

-v:详细信息

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

1、Ansible安装部署

(1)安装ansible

直接yum安装

yum install ansible -y

版本信息


2

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


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”

1

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

//
进入到
41

home
目录下查看

2

creates
:判断文件是否存在,如果存在不执行(先在
41

home
下创建
1.txt

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

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

3

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

//
判断到
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
的主机名

2

ping
:测试连接可通性

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

3
、文件模块

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

常用参数


1)

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

//

test1
复制到
41

data




2)

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

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



查看
41

data
生成了
test1
的备份

3

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

//

test1
中加入
123
内容

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

//

41
上查看
test1

4

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

owner
:文件数据复制到远程主机,设置文件
/
目录的属主

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

//
创建
test2
,复制
test2

41
上它的组为
www
,用户为
qqq
,权限为
755

查看

5

dest

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

4
、管理任务计划

cron
:定时任务模块

常用参数

1

Weekday/mouth/day/hour/minute
(周
/

/

/
小时
/
分钟)

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

2

Job
:设置定时执行任务

3

Name
:设定定时任务注释描述

//每五分钟同步一次(ntpdate 同步更新时间)

查看
41

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

4

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

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

5

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

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

查看
41
(内容被注释)

取消注释
disabled=no

再次查看

5
、用户模块

group
:批量创建组

常用参数

1

gid
:创建的组
ID

2

Name
:创建组的名称

3

State
:删除
/
创建组

创建组
abc

gid

1055

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

删除指定组
abc

gid

1055

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

user
:批量创建用户

常用参数

1

Groups
:指定用户的属组

2

Uid
:指定用户的
uid

3

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

4

Name
:指定用户名

5

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

6

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

7

System
:是否为系统用户

8

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

9

State
:创建
/
删除
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”

6

Rsynchronize
:使用
rsync
同步文件

常用参数

1

archive
:归档,相当于同时开启
recursive(

递归 )
links
perms
times
owner

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

3

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

4

compress:
是否开启压缩

5

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

6

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

7

dest
:目录路径

8

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

9

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

10

rsync_opts

rsync
参数部分

11

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

12

mode: push

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

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


ansible

hosts
同步到
41

tmp
目录下



查看
41

tmp/hosts

Get_url


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

sha256sum
:下载完成后进行
sha256 check

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

url
:下载的
URL

url_password

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

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

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

查看是否下载成功

Yum
:软件包管理

Stat
:获取远程文件信息

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

Sysctl
:远程主机
sysctl
配置

微信扫一扫,分享到朋友圈

自动化运维工具Ansible

envoy filter 开发实践系列 2:官网 http filter 示例编译测试

上一篇

传承计划执行完毕!马云即日起不再担任阿里巴巴董事

下一篇

你也可能喜欢

自动化运维工具Ansible

长按储存图像,分享给朋友