4-23(ansible)

1.ssh-keygen非交互式创建秘钥对

具体命令:ssh-keygen -f ~/.ssh/id_rsa -P '' -q

参数:

-P 密码

-f 输出的密钥文件

-q 不输出信息

-t 指定密钥类型

ssh-keygen -f ~/.ssh/id_rsa -P'' -q

2.ssh0copy-id 不提示yes/no分发密钥

ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 172.16.1.8

-f:强制

-i:指定密钥文件

-o:指定ssh参数

StrictHostKeyChecking=no:严格公钥检查:no

3.sshpass工具:非交互分发密钥

yum -y  install sshpass

sshpass -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.8

参数: -p  password 指定用户密码操作

4.一键配置实践

#!/bin/bash

#yum install sshpass -y

ssh-keygen -f ~/.ssh/id_rsa  -P '' -q

for ip in 7 61

do

sshpass -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$ip

done

#test(测试)

ssh 172.16.1.7  "ip a"

ssh 172.16.1.61 "ip a"

-----------------------------------------------------------------------------

ansible

1.功能介绍

ssh密钥认证+脚本批量管理。

Ansible通过SSH协议实现管理节点与远程节点之间的通信。

涉及管理操作:复制文件、安装服务、服务启动停止管理、配置管理等等。

2.架构介绍

1、连接插件connectior plugins用于连接主机 用来连接被管理端

2、核心模块 core modules 连接主机实现操作, 它依赖于具体的模块来做具体的事情

3、自定义模块 custom modules,根据自己的需求编写具体的模块

4、插件 plugins,完成模块功能的补充

5、剧本 playbooks,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行

6、主机清单 inventor,定义ansible需要操作主机的范围

最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块

3.安装ansible

yum install epel-release -y

yum install ansible      -y(管理机)

---------------------

rpm -qa |grep libselinux-python

yum install libselinux-python -y(查看有没有libselinux-python,有就不下载了)

4.配置文件

/etc/ansible/hosts主机资产清单文件,用于定义被管理主机的认证信息,

/etc/ansible/ansible.cfg(是否严格公钥检查,设置no后可以使用密码登录)

[root@m01 ~]# ansible oldboy -m shell -a "ip a|grep eth1"

5.登录方法

5.1密钥登录

vim /etc/ansible/hosts

[oldboy]

172.16.1.7

ssh-keygen -f ~/.ssh/id_rsa -P '' -q 创建密钥对

sshpasswd -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$i 分发密钥(写于脚本中)

"-o StrictHostKeyChecking=no" 避免首次使用时输入yes/no部分。 不进行公钥确认。

5.2密码登录

vim /etc/ansible/ansible.cfg

host_key_checking = False(取消备注,允许密码登录)

vim /etc/ansible/hosts

[oldboy_pass]

172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=123456

测试 ansible oldboy_pass -m shell -a "ip a"

ansible oldboy -m copy -a "src=/etc/passwd dest=/tmp/oldgirl owner=oldboy group=oldboy mode=600"

6.ansible命令参数

-m MODULE_NAME, 模块名字,默认command

-a MODULE_ARGS, 模块参数

-f FORKS     并发进程数,默认5个。

-i INVENTORY(default=/etc/ansible/hosts)指定主机列表文件

===================

ansible                    批量执行

ansible-doc   

ansible-doc -l        查找模块

ansible-doc -s command 查找具体参数

ansible-playbook          组成多个模块的容器。

ansible-galaxy            从galaxy网站下载角色

===================

你可能感兴趣的:(4-23(ansible))