虚拟化专栏1_Ansible安装配置、免密登录、ssh加速

文章目录

    • 1. 适用场景:
    • 2. 使用方法:
    • 3. Ansible是什么?
    • 4. Ansible架构体系
    • 5. Ansible的安装
    • 6. 远程主机的配置
    • 7. ssh加速
    • 8.ansible的免密配置
    • 9. ansible的目录结构

1. 适用场景:

运维工程师的日常工作包括,平台架构组建、日常运维构建、性能及效率优化。在这些日常工作中,会遇到很多批量部署的情况,例如当公司新采购了多台服务器,需要在服务器上安装jdk时怎么解决;又例如如何查看100台主机的基本信息,如何部署nginx高可用集群。

2. 使用方法:

在上述场景中,使用Ansible自动化运维工具能够更好的处理,批量部署jdk只需一条简单的Ansible命令即可完成。大大减少了人力物力,节省劳动力,提高运维效率。下面,本文将从3个方面介绍Ansible这款自动化运维工具,Ansible是什么、Ansible的安装及免密配置、Ansible和saltstack以及puppet的区别。

3. Ansible是什么?

Ansible是近年比较火的一款自动化运维工具,帮助运维实现IT工作的自动化,降低人为操作的失误、提高业务自动化率、提升运维工作效率,常用语软件部署自动化,配置自动化、管理自动化、持续集成等。

4. Ansible架构体系

Ansible基于SSH传输,在控制端主机安装Ansible,远程主机上不需要安装agent代理。在Ansible主机上对远程主机发送指令,通过ssh传输控制远程主机。下图为Ansible的架构

虚拟化专栏1_Ansible安装配置、免密登录、ssh加速_第1张图片
Ansible对远程主机的控制不是通过对主机直接操作,而是调用Ansible中的模块,使用模块中的功能对远程主机进行操作,上图中Ansible的架构详解如下
虚拟化专栏1_Ansible安装配置、免密登录、ssh加速_第2张图片

5. Ansible的安装

①Ansible的安装非常简单,只依赖Python(建议2.6以上)环境和ssh,一般系统上都默认安装了这些。
②Ansible 的安装源已经被收录在了epel源中,所以需要先安装epel源
③使用命令yum -y install epel-release
④然后直接安装Ansible即可
使用命令yum -y install ansible
⑤验证安装是否成功ansible --version查看ansible版本

6. 远程主机的配置

在ansible控制端的配置文件中配置主机清单,在/etc/ansible/hosts文件后直接添加远程控制的主机ip,支持主机组的定义,最后使用ansible webservers -m ping -k输入ssh密码连接
虚拟化专栏1_Ansible安装配置、免密登录、ssh加速_第3张图片

7. ssh加速

ssh通过明文或者秘钥连接,ssh配置文件中有DNS解析和GSS认证可以将其关闭以提高ssh的连接速度。

 79 GSSAPIAuthentication no
 115 UseDNS no

8.ansible的免密配置

大家也已经知道了Ansible默认是基于ssh通信的,Ansible认证的方式有密码认证和公钥认证,Ansible默认采用公钥认证,登录远程主机时,需要输入密码,远程主机数量多时,需要一个一个输入或者需要将远程主机的密码设置成一样的,所以我们需要先配置免秘钥登录。
①下面为Ansible的免密登录步骤:
先生成公私钥ssh-keygen -t rsa
再将生成的公钥发送给远程主机
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
其中[email protected]
root为远程主机192.168.xxx.xxx上的用户
②Ansible使用ping模块来连接远程主机
ansible 远程主机ip -m(使用模块)
使用命令连接测试免密登录是否成功ansible all -m ping

9. ansible的目录结构

配置文件目录:/etc/ansible
执行文件目录:/usr/bin
lib库依赖目录:/usr/lib/python2.7/site-packages/ansible
help文档目录:/usr/share/doc/ansible-2.4.2.0/
9.ansible模块介绍:
ping模块:用来检查目标主机是否在线
yum模块:用来在centos系统上使用yum命令安装软件包
选项:name指定安装包名字,state:latest安装最新版,present默认安装,installed安装,absent卸载,removed卸载
command模块:执行系统命令,但是不支持shell下的特殊符号
shell模块:shell模块和command模块使用方法基本一致,可以支持shell特殊符号,如: | && 等

service模块:用来管理centos上的服务的启动、关闭和重载
选项:name服务名字;state:started启动,stopped停止,restarted重启,reloaded重载;enabled:默认是no,将服务设置为开机自启动
file模块:file模块用来创建文件、目录、连链接文件
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:要被链接的源文件的路径,只应用于state=link的情况 u dest:被链接到的路径,只应用于state=link的情况
state:l directory:如果目录不存在,创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
user
user模块用来创建用户
选项:
home: 指定创建的家目录
groups:指定用户组
uid:指定UID
password:设置密码,密码必须是密文
Openssl passwd
name:创建的用户名字
createhome:是否创建家目录(yes/no)
state: 是创建还是删除。(present,absent),默认是创建
shell: 指定用户登录的shell环境
remove:删除用户家目录,默认为no,设置为yes即可(state=absent 并且remove=yes即为删除用户and家目录)
实践
1. 先使用openssl生成一个秘文 openssl passwd
2. 使用生成的秘文在远程主机上创建用户 ansible all -m user -a ‘name=wangw passward=xxxxxx’
3. 验证登录,ssh wangw@远程主机名(别忘记退出wangw用户)
4. 删除用户 ansible all -m user -a ‘name=wangw state=absent’ 但是只删除了这个用户,家目录中还是存在的 登录远程主机查看cd /home ls查看
5. 设置remove=yes即可完全删除

`

你可能感兴趣的:(虚拟化,ansible)