Ansible批量自动化管理工具入门

一、虚拟机版本

1、需要利用7.5版本虚拟机 
2、7.5版注意事项:

【2.1】、网卡名叫ens32同样配置文件也是ens32
【2.2】、命令:systemctl 统一管理命令,
例,systemctl stop iptables.service 关闭防火墙
【2.3】、设置开机自启动防火墙:systemctl  enable firewalld
【2.4】、设置开机关闭防火墙(必须关闭)   :systemctl disable firewalld
【2.5】、必    须     关     闭      :systemctl disable  NetworkManager
【2.6】、yum得配置文件全部可以用
【2.7】、重启虚拟机,ifup ens32 启动网卡来获取ip

二、常见的批量管理工具

生产环境Ansible管理服务器ssh登陆安全策略 
1、ansible (非常简单,很多企业都在用) 适用于管理500台以下的服务器,特点是一台虚拟机管理多台虚拟机,不需要安装任何客户端。利用得是ssh通道,操控要用免密钥。

1.1、安装ansible软件同时会自动安装sshpass
yum -y install epel-release
yum -y install ansible
1.2、修改ssh登录
1.2.1、vim /etc/ssh/ssh_config 修改第35行 StrictHostKeyChecking ask改为no
1.2.2、vim /etc/ssh/sshd_config
第17行  #Port 22   #修改ssh连接端口 (工作中改成一万以上)
第38行  #PermitRootLogin yes    #是否允许root账号远程登陆 (工作中必须关闭)
第43行  #PubkeyAuthentication yes   #是否开启公钥连接认证 (工作中开启)
第47行  AuthorizedKeysFile  .ssh/authorized_keys    #公钥文件的放置位置
第65行  PasswordAuthentication yes  #是否开启密码验证登陆
第79行  GSSAPIAuthentication yes    #是否关闭GSSAPI认证 (工作中关闭)提高ssh解析速度
第115行  #UseDNS yes                 #是否关闭DNS反向解析 (关闭) 加快ssh得连接速度
1.2.3、ansible配置文件 /etc/ansible/hosts
/etc/ansible/hosts
vim /etc/ansible/hosts
[nginx]
WebA ansible_ssh_host=IP地址
WebB ansible_ssh-host=IP地址

三、模块使用

一、ansible <被操控的主机或主机组或all> [-m 模块名] [-a 具体命令]

二、/etc/ansible/hosts文件中可以定义被管理主机,Ansible通过读取/etc/ansible/hosts文件内定义的主机清单批量做一些操作。比如定义一个nginx组,包含一台主机Web01,再定义一个apache组,包含另一台主机Web02.

[[email protected] ~]# cat /etc/ansible/hosts
[nginx]
Web01 ansible_ssh_host=192.168.200.184
Web02 ansible_ssh_host=192.168.200.185

说明: 
ansible_ssh_host:被管理主机IP 
ansible_ssh_user:被管理主机用户名 
ansible_ssh_pass:被管理主机用户的登陆密码 
ansible_sudo_pass:被管理主机用户sudo时的密码

三、设置SSH免密码登陆

为了避免Ansible下发指令时需要输入被管理主机的密码,可以通过证书签名达到SSH无密码登陆。使用ssh-keygen产生一对密钥,并通过ssh-copy-id命令来发送生成的公钥。

[[email protected] ~]# ls ~/.ssh/
authorized_keys  id_rsa  id_rsa.pub
[[email protected] ~]# ssh-copy-id 192.168.200.184
[[email protected] ~]# ssh-copy-id 192.168.200.185

四、ansible查看帮助

[[email protected] ~]# /usr/local/python/bin/ansible-doc -l 查看总帮助 
[[email protected] ~]# /usr/local/python/bin/ansible-doc -s shell 查看shell模块的帮助

1、ping模块:Ansible中使用ping模块来检测指定主机的连通性

【1】、Ansible中使用ping模块来检测指定主机的连通性
ansible Web01 -m ping
绿色表示连通的,红色表示不通
只要做了免密钥就可以直接登录用户。ansible 被管理范围 -m 模块名  -a 具体命令
【2】、saltstack (复杂)适用于管理1000-40000台服务器
【3】、puppet(超级复杂)

2、command模块:在远程主机执行命令,不支持管道符和重定向等复杂命令,可完全被shell模块替代

例:ansible Web01 -m command -a ‘hostname -I‘
查看Web01服务器的ip地址

3、shell模块:Ansible中的shell模块可以在被管理主机上运行命令,并支持像管道符重定向这样的复杂命令。

例1:ansible Web01 -m shell -a ‘useradd yunjisuan‘
在Web01上创建用户yunjisuan
例2:ansible Web01 -m shell -a ‘echo 123123 | passwd --stdin yunjisuan‘
给Web01上yunjisuan用户非交互方式设定密码

4、cron模块:Ansible中的cron模块用于定义任务计划。主要包括两种状态(state);

【4.1】crontab时间周期: 如果不指定周期,默认是*号
minute:分钟
hour:小时
day:日期
month:月份
weekday:周期
【4.2】crontab任务:
job:指明运行的命令是什么
【4.3】crontab任务描述: 必须写
name:定时任务描述(定时任务清除的依据)
【4.4】state状态: 添加或删除定时任务,不写默认是添加
present:表示添加(省略状态时默认使用);
absent:表示移除;
【4.5】crontab任务的用户身份:
user:指定定时任务以哪个用户身份执行,如果不指定默认是root用户

例1、添加定时任务计划,在所有被管理的主机里每十分钟输出hello字符串,定时任务描述为test cron job
ansible all -m cron -a ‘minute="*/10" job="/bin/echo hello" name="test cron job"‘

例2、删除描述为test cron job的定时任务
ansible all -m cron -a ‘minute="*/10" job="/bin/echo hello" name="test cron job" state=absent‘

例3、给Web01服务器上的普通用户yunjisuan添加一个定时任务
ansible all -m cron -a ‘minute="*/10" job="/bin/echo hello" name="test cron job"   user="yunjisuan"‘

5、copy模块:Ansible中的copy模块用于实现文件复制和批量下发文件。其中使用src来定义本地源文件路径;使用dest定义被管理主机文件路径;backup=yes表示备份以下对方的文件。使用content则是使用指定信息内容来生成目标文件。

例1、把WebB服务器上的/tmp/test目录复制到/root/下
ansible WebB -m copy -a ‘src=/tmp/test  dest=/root’

例2、把WebB服务器上的/tmp/test目录备份一下在复制到/root/下
ansible WebB -m copy -a ‘src=/tmp/test  dest=/root  backup=yes’

6、script模块:Ansible中的script模块可以将本地脚本复制到被管理主机的内存中并运行,不会在被管理主机中留下脚本文件。

例1、编写一个脚本,然后通过ansible的script模块远程向被管理主机执行此脚本
echo ‘echo "1111" >> /tmp/test‘ >> /tmp/test.sh
ansible WebA -m script -a ‘/tmp/test.sh‘

7、 yum模块:利用yum模块安装软件包,虽然能被shell模块替代 
但是用yum模块更显专业一些

【7.1】软件包名:
name:指定软件包的名字
state状态:
present:安装软件包(默认就是这个)
absent:卸载软件包

例1、安装nmap软件包
ansible all -m yum -a ‘name=nmap‘

例2、卸载nmap软件包
ansible all -m yum -a ‘name=nmap state=absent‘

8、service模块:利用service模块管理服务程序,虽然能被shell模块替代 
但是用service模块更显专业一些

【8.1】服务名称:
name:指定服务的名字
【8.2】state状态:
started:启动服务
stopped:停止服务
restarted:重启服务
reloaded:平滑重载
【8.3】enabled开机自启动:
true:设置开机自启动
false:设置开启不启动
例1、启动firewalld并设置开机自启动
ansible Web01 -m service -a ‘name=firewalld state=started enabled=true‘

例2、关闭firewalld并设置开机不启动
ansible Web01 -m service -a ‘name=firewalld state=stopped enabled=false‘

9、user模块:用户管理模块。管理用户账号,批量创建用户

【9.1】指定用户名
name:指定操作的用户的名字
【9.2】用户描述
comment:指定用户的描述信息
【9.3】createhome:是否创建家目录
【9.4】uid:指定用户的uid号
【9.5】groups:指定用户的附加组(默认创建和用户名相同的组)
【9.6】password:指定用户的密码
【9.7】update_password:更新用户的密码
【9.8】shell指定用户的登陆方式
/bin/bash:能登录系统
/sbin/nologin:不能登录系统
【9.9】home:指定用户的家目录路径
【9.10】state状态:
present:创建用户(默认就是这个)
absent:删除用户
【9.11】remove:当指定state=absent时,确认是否删除用户家目录
true
false

例1、在Web02上创建一个普通用户yunjisuan,并设置用户的密码为123123
ansible Web02 -m user -a ‘name=yunjisuan comment="welcom to yunjisuan" uid=1066  password=123123 shell=/bin/bash home=/home/yunjisuan‘

注:利用ansible的user模块状态用户时要注意在password参数的后边添加密文,否则不能登陆用户
通过Python的pip程序安装passlib即可为密码加密
例2、安装Python2的pip工具,并通过pip工具安装Python的加密模块来给密码加密
yum -y install epel-release
yum -y install python2-pip
pip install passlib (python装一个支持程序passlib)

生成密文密码
python -c "from passlib.hash import sha512_crypt;import getpass;print sha512_crypt.encrypt(getpass.getpass())"

Password:       #输入你想要加密的密码
$6$rounds=656000$Tw15COd8DLh/VS94$Mcmz/8CcjBKiEl0mYHcOQQCxEA5mz66EcGH2qXVk6o.Sm7FsRS.DsDVy6ET8iI6jDa045I94slZqWFwyYnRSW1          #加密后的密码

把加密的暗文复制到刚才password=暗文

例2、删除之前创建的yunjisuan用户,并删除它的家目录
ansible Web02 -m user -a ‘name=yunjisuan state=absent remove=true‘

10、setup模块:Ansible中使用setup模块收集,查看被管理主机的facts(facts是Ansible采集被管理主机设备信息的一个功能)。每个被管理主机在接收并运行管理命令之前,都会将自己的相关信息(操作系统版本,IP地址等)发送给控制主机

例1、查看所有远程主机的facts信息
ansible all -m setup | head     (all表示所有)

原文地址:https://www.cnblogs.com/mendermi/p/9904719.html

时间: 2024-10-27 07:11:50

Ansible批量自动化管理工具入门的相关文章

Ansible批量自动化管理工具

批量管理服务器的工具,无需部署代理,通过ssh进行管理,是python写的 ansible 常用模块 : (1)shell命令模块执行命令 (2)copy模块批量下发文件或文件夹 (3)script模块批量运行脚本  Python3与ansible的安装 使用源码安装Python3.5 #安装支持包 yum -y install lrzsz vim net-tools gcc gcc-c++ ncurses ncurses-devel unzip zlib-devel zlib openssl-

自动化管理工具puppet

Linux之puppet puppet简介 puppet是一套IT基础设施自动化管理工具,可以管理其整个生命周期,其官方网站:www.puppetlabs.org.其作者Luke Kanies成立了puppetLabs,于2005年发布0.2版本.puppet基于ruby语言研发,puppet有声明性.基于模型的配置语言,其也有自己的配置编程言. puppet的优势 基于master/agent的认证机制 不依赖于客户端系统的管理权限 可实现配置自动推送给客户端 puppet的版本 0.2 0.

Python学习笔记——进阶篇【第八周】———FTP断点续传作业&amp;批量主机管理工具

主机管理之paramiko模块学习 http://www.cnblogs.com/wupeiqi/articles/5095821.html 作业1:用socketserver继续完善FTP作业 作业2:开发一个批量主机管理工具 需求: 可以对机器进行分组 可以对指定的一组或多组机器执行批量命令,分发文件(发送\接收) 纪录操作日志 作业参考链接http://www.cnblogs.com/alex3714/articles/5227251.html

TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具

怀着鸡动的心情跟大家介绍一款国产开源运维软件TriAquae,轻松帮你搞定大部分运维工作!TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具,可以允许用户通过一台控制端管理上千台远程Linux服务器,开发者根据多年运维经验以及运维工程师日常工作的需求开发了很多实用的功能,该工具非常实用,并且使用简单,分分钟即可完成安装并开始利用TriAquae管理你的网络,此软件还在不断的开发和更新,目前已实现以下功能: •        支持WEB界面,所有以以下功能均以在WEB界面上

做一个合格的前端,gulp自动化构建工具入门教程

我的新作观点网http://www.guandn.com (观点网是一个猎获新奇.收获知识.重在独立思考的网站),它前端js.css的压缩.合并.md5命名等就使用了gulp自动化构建技术,gulp很小巧使用起来很舒服.ps:接下来我会逐一开源观点网开发过程中的前后端技术,如:lucene全文索引.自定义富文本编辑器.图片上传压缩水印等等. 一.什么是gulp gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.例如:css.js的合并与压缩(减少http请求,缩小文

云服务器批量连接管理工具

一款可以批量连接管理云服务器的工具! IIS7远程桌面管理工具功能简介: 1.批量管理WIN系列服务器,VPS,电脑. 2.批量导入服务器的IP,端口,账号和密码 3.批量打开N个服务器的远程桌面 4.远程桌面后,远程窗口右上角会出现 服务器备注的信息,如郑州xxx号服务器 5.远程桌面后,不影响任务栏显示.可以及时看其他窗口. 6.自定义远程桌面窗口分辨率 7.定时监测服务器是否正常 8.服务器到期提醒 9.可选择是否加载本地硬盘.硬盘映射 10.可选择是否加载服务器的声音,远程声卡读取 11

JavaScript自动化构建工具入门----grunt、gulp、webpack

蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动 自动化时代的程序员: 希望一切都可以自动完成 安装 常用插件.压缩插件.合并插件等.  用插件实现 功能无限扩展 简单介绍三种工具 grunt 是js任务管理工具(自动化构建工具)    -- Grunt官网 戳这里 优势:出来早 社区成熟  插件全 缺点:配置复杂   效率低 (cpu占用率高) -------------------------

运维自动化之 - ansible 批量主机管理

2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一台主控机上完成代码分发.远程服务起停.服务验证验证 2016年开始使用 pssh ,后改用 ansible ,ansible 配置如下 一.配置ssh免密码登录 #cd /root/.ssh 免交互生成密钥 #echo -e "\n" |ssh-keygen -t rsa -N "

Chocolatey 简介(软件自动化管理工具)

一.Chocolatey 管理Windows软件的明智方法 1.建立在技术的无人值守安装和PowerShell.建立在技术的无人值守安装和PowerShell. 2.轻松管理Windows软件的所有方面(安装.配置.升级.卸载).Chocolatey是最可靠的,软件是包含在包中,但也可以很容易的下载资源. 3.利用PowerShell提供自动化软件管理指令和Chocolatey的内置模块将复杂的任务分解成一系列的函数调用! 4.官网地址&下载地址:https://chocolatey.org/