自动化运维工具Ansible
source link: http://www.cnblogs.com/Job123/p/13757334.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
介绍
更加简洁的自动化运维工具,不需要再客户端上安装,
基于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 [email protected]
// 将公钥发送到客户端 41 上(提示输入是否连接 yes ,和客户端登陆密码)
( 4 )测试登录客户端
使用 scp 命令也可以
[root@mycat ansible]# scp /root/.ssh/id_rsa.pub [email protected]:/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 配置
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK