Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,在不安全的网络中为网络服务提供安全的传输

Ansible是python 中的一套模块,一套自动化工具,只需要使用ssh协议连接及可用来系统管理、自动化执行命令等任务。

如何配置免密登录

免密登录,只需三步。

  • 首先在SSH服务端配置允许公钥私钥配对认证,
  • 然后在客户端生成公钥,
  • 最后将客户端的公钥上传到服务端。

这样就可以从客户端免密登录服务端特定的用户了。

在服务端上(提供ssh服务,就是你登录的那台机器)进行如下操作

以root用户登录,更改ssh配置文件 /etc/ssh/sshd_config,去除以下配置的注释,然后重启sshd服务

RSAAuthentication yes #启用rsa认证 
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
systemctl restart sshd  //重启ssh服务

在客户端上执行

[root@client /]#ssh-keygen -t rsa

一路默认回车,系统在当前目录下,也就是/root/.ssh下生成id_rsa、id_rsa.pub

把id_rsa.pub发送到服务端机器上

[root@client /]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.11.20 

这条命令是将刚才生成的公钥发送到你要登录的服务端保存

验证

ssh root@192.168.11.20

如果当前用户和你要登录到的机器的用户都是root,那么你可以直接

ssh 192.168.11.20

ansible基础知识

1.什么是Ansible

Ansible是python 中的一套模块,系统中的一套自动化工具,只需要使用ssh协议连接及可用来系统管理、自动化执行命令等任务。

2.Ansible优势

1、ansible不需要单独安装客户端,也不需要启动任何服务 2、ansible是python中的一套完整的自动化执行任务模块 3、 ansible playbook,采用yaml配置,对于自动化任务执行一目了然 4、 ansible 模块较多,对于自动化的场景支持较丰富

image.png

Ansible Playbook

任务剧本(又称任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式。

Inventory

Ansible管理主机的清单,默认是/etc/ansible/hosts文件。

Modules

Ansible执行命令的功能模块,Ansible2.3版本为止,共有1039个模块。还可以自定义模块。 Plugins

插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少。 /etc/ansible/hosts文件,用于定义被管理主机的认证信息,例如ssh登录用户名、密码以及key相关信息。 1.主机支持主机名通配以及正则表达式,例如web[1:3].test.com代表三台主机 2.主机支持基于非标准的ssh端口,例如web1.test.com:6666 3.主机支持指定变量,可对个别主机的特殊配置,如登陆用户,密码

image.png

Ansible执行返回->颜色信息说明

  • 黄色:对远程节点进行相应修改
  • 绿色:对远程节点不进行相应修改,或者只是对远程节点信息进行查看
  • 红色:操作执行命令有异常
  • 紫色:表示对命令执行发出警告信息(可能存在的问题,给你一下建议)

script脚本模块

ansible test -m script -a "/server/scripts/yum. sh"
#在本地运行模块,等同于在远程执行,不需要将脚本文件进行推送目标主机执行

yum安装软件模块

ansible test -m yum -a 'name=httpd state=installed"

copy文件拷贝模块

 ansible test -m copy -Q "'src=/etc/hosts dest-/tmp/test.txt"
ansible test -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes"
# 在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份
ansible test -m copy -a "content='bgx' dest=/tmp/test"
#  直接向远端文件内写入数据信息,并且会覆盖远端文件内原有数据信息
src #推送数据的源文件信息
dest #推送数据的目标路径
backup #对推送传输过去的文件,进行备份
content #直接批量在被管理端文件中添加内容
group #将本地文件推送到远端,指定文件属组信息
owner #将本地文件推送到远端,指定文件属主信息
mode #将本地文件推送到远端,指定文件权限信息

service服务模块

[root@m01 ~]# ansible test -m service -a "name=crond state=stopped enabled=yes"

name        # 定义要启动服务的名称
state       # 指定服务状态
    started     #启动服务
    stopped     #停止服务
    restarted   #重启服务
    reloaded    #重载服务
enabled         #开机自启

资料:https://halysl.github.io/2020/03/11/ansible%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C%E5%8F%8A%E5%BA%94%E7%94%A8/#%E6%A0%B8%E5%BF%83%E6%A8%A1%E5%9D%97-playbook

raw 模块

raw 模块的功能与 shell 和 command 类似。但 raw 模块运行时不需要在远程主机上配置 python 环境

command 模块

command 模块用于运行系统命令。不支持管道符和变量等(”<”, “>”, “”, and “&”等),如果要使用这些,那么可以使用 shell 模块。在使用 ansible 中的时候,默认的模块是 -m command,从而模块的参数不需要填写,直接使用即可。

shell 模块

它负责在被 ansible 控制的节点(服务器)执行命令行。shell 模块是通过 /bin/sh 进行执行,所以 shell 模块可以执行任何命令,就像在本机执行一样。

script 模块

script 模块将控制节点的脚本执行在被控节点上。