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 模块较多,对于自动化的场景支持较丰富
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.主机支持指定变量,可对个别主机的特殊配置,如登陆用户,密码
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 #开机自启
raw 模块
raw 模块的功能与 shell 和 command 类似。但 raw 模块运行时不需要在远程主机上配置 python 环境
command 模块
command 模块用于运行系统命令。不支持管道符和变量等(”<”, “>”, “”, and “&”等),如果要使用这些,那么可以使用 shell 模块。在使用 ansible 中的时候,默认的模块是 -m command
,从而模块的参数不需要填写,直接使用即可。
shell 模块
它负责在被 ansible 控制的节点(服务器)执行命令行。shell 模块是通过 /bin/sh 进行执行,所以 shell 模块可以执行任何命令,就像在本机执行一样。
script 模块
script 模块将控制节点的脚本执行在被控节点上。