SSH与ansible 部署方法

部署环境

管理服务器 172.16.1.61

NFS服务器 172.16.1.31

备份服务器 172.16.1.41

1检查SSH服务是否运行并开启服务

netstat -lntup |grep ssh       检查当前服务是否运行

/etc/init.d/sshd status          启动SSH服务

2创建SSH服务的DSA密钥认证(三确认:确认私钥路径、确认是否设置私钥密码、再确认)

[root@Manager- ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 默认存放私钥与公钥位置
Enter passphrase (empty for no passphrase): 是否设置密码
Enter same passphrase again: 再次确认
Your identification has been saved in /root/.ssh/id_dsa. 存放私钥所在位置
Your public key has been saved in /root/.ssh/id_dsa.pub. 存放公钥所在位置
The key fingerprint is:
de::6d:ae:2c::e3:6a::4a:a3:be:8b:be:4b:eb root@Manager-
The key's randomart image is:
+--[ DSA ]----+
| |
| . |
| . o |
| + |
| . S . . |
| o . .. . o . |
| + o .. = + |
|+ o .. = |
|=E= .... |
+-----------------+

3将公钥信息下发给nfs服务器(172.16.1.31)

[root@Manager- ~]# ssh-copy-id -i /root/.ssh/id_dsa 172.16.1.31
root@172.16.1.31's password: 需要确认nfs服务器密码
Now try logging into the machine, with "ssh '172.16.1.31'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
免交互创建密钥对
[root@Manager- ~]ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""

4通过免交互实现公钥分发(选需要安装依赖包yum install sshpass)

 [root@Manager- ~]# sshpass ssh-copy-id -i /root/.ssh/id_dsa.pub  172.16.1.31
免交互分发
[root@Manager-~]#sshpass -p123123 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.31"

5使用脚本实现批量创建密钥与分发公钥实现方法

 [root@Manager- scripts]# cat piliang.sh
#!bin/bash
rm -f /root/.ssh/id_dsa*
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
for ip in
do
sshpass ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.$ip"
done

执行脚本测试

[root@Manager- scripts]# sh piliang.sh
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
:8d::e4:c5:2e:d3:8a::5f:0b:1e:e6:d6:de:f0 root@Manager-
The key's randomart image is:
+--[ DSA ]----+
| ... |
| o .. |
| . oo |
| oooo |
| .S+o |
| o = oo |
| . * =.. |
| = o+ |
| . .. E |
+-----------------+
Now try logging into the machine, with "ssh '-o StrictHostKeyChecking=no 172.16.1.31'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. Now try logging into the machine, with "ssh '-o StrictHostKeyChecking=no 172.16.1.41'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting

6批量检查测试脚本情况

[root@Manager- scripts]# cat piliang_chack.sh
#!bin/bash
if [ $# -ne ]
then
echo "pleash input one agrs"
exit
fi
for ip in
do
echo =====info 172.16..$ip======
ssh 172.16..$ip $
echo ""
done
[root@Manager- scripts]# sh piliang_chack.sh ls
=====info 172.16.1.31======
anaconda-ks.cfg
install.log
install.log.syslog =====info 172.16.1.41======
anaconda-ks.cfg
install.log
install.log.syslog

7安装Ansible软件

yum install -y ansible (基于epor源)

客户端可安装软件

yum inistall -y libselinux-python

8添加被管理主机地址与组名实现批量管理(hosts文件为ansible软件内的hosts)

[root@Manager-61 ansible]# cat hosts

[server1]    ---> 设置管理组名

172.16.1.31  --->要管理的主机地址

172.16.1.41  ansible_user=root  ansible_password=123123  --->设置登录密码无公钥也可远程

9 Ansible常用批量管理模块命令介绍

ansible软件文档官方地址docs.ansible.com

语法格式:

ansible 管理主机/远程主机组/all所有主机 -m 模块名称 -a “相关模块参数”

     -m   指定相应模块

     -a    模块中的参数功能

     -k    使用密码进行管理(交互模式)

     -doc  查看模块信息  帮助命令

     -s    查找指定命令参数

颜色表示

   绿色:查看远程信息,不会对远程主机做任何修改

   红色:执行操作出现异常报错

   黄色:对远程主机进行修改操作

   粉色:警告提示信息

a)      command 命令模块

chdir  执行命令前切换目录

creates  判断一个文件是否存在,存在跳过,不存在后执行

removes  判断一个文件是否存在,存在则执行,不存在跳过

[root@m01 ansible]# ansible 172.16.1.31 -m command -a "chdir=/tmp/ pwd"
172.16.1.31 | SUCCESS | rc= >>
/tmp [root@Manager- ~]# ansible 172.16.1.31 -m command -a "creates=/etc/rsyncd.conf hostname"
172.16.1.31 | SUCCESS | rc= >>
NFS- [root@Manager- ~]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.conf hostname"
172.16.1.41 | SUCCESS | rc= >>
skipped, since /etc/rsyncd.conf exists

b)      shell 模块(万能模块)

chdir  执行命令前切换目录

creates  判断文件是否存在,存在跳过,不存在则执行后续命令

removes  判断文件是否存在,存在则执行后续命令,不存在跳过

free_form  执行模块信息时必须有linux合法命令信息

c)       script 脚本模块

chdir  执行命令前切换目录

creates  判断文件是否存在,存在跳过,不存在则执行后续命令

removes  判断文件是否存在,存在则执行后续命令,不存在跳过

free_form  执行模块信息时必须有linux合法命令信息

ansible 172.16.1.41 -m script -a "/server/script/yum.sh"

文件类型模块

d)      copy 推送模块

backup   对数据信息进行备份

owner    设置复制后的文件属主权限

grop     设置复制后的文件属组权限

mode     设置复制后的文件权限(600 755)

src        源地址-推送的数据信息

dest     远程目标目录

 ansible 172.16.1.41 -m copy -a "src=/tmp/file01.txt dest=/tmp"
ansible 172.16.1.41 -m copy -a "src=/tmp/file01.txt dest=/tmp backup=yes"

e)      file 文件属性模块(修改/创建)

owner   设置复制后的文件属主权限

grop    设置复制后的文件属组权限

mode   设置复制后的文件权限(600 755)

state    指定创建文件或目录  =touch 创建文件  =directory 创建目录

[root@Manager- ~]# ansible 172.16.1.41 -m file -a "dest=/tmp/fil01.txt owner=oldboy group=oldboy mode=600"
[root@Manager- ~]# ansible 172.16.1.41 -m file -a "dest=/tmp/fil01.txt state=touch"
172.16.1.41 | SUCCESS => {
"changed": true,
"dest": "/tmp/fil01.txt",
"gid": ,
"group": "root",
"mode": "",
"owner": "root",
"size": ,
"state": "file",
"uid":
}

f)       yum 包管理模块

name   执行要安装的软件名称

state    =installed/latest(安装)  =abset/removed(卸载)

list     指定软件名称,查看软件是否安装

  ansible 172.16.1.41 -m yum -a "name=iftop state=installed"
ansible 172.16.1.41 -m yum -a "name=iftop state=removed"
ansible 172.16.1.41 -m yum -a "list=iftop"

系统模块类型

g)      service 管理服务状态模块

name   指定管理服务的名称(一定在chkconfig中可看到的)

state    =stopped(停止)  =started(启动)  =restarted(重启) =reloaded(从新加载/平滑重启)

enable   开机是否自启动 (yes/on)

 ansible 172.16.1.41 -m service -a "name=crond state=stopped enabled=no"   
定时任务停止并不开机自启动

h)      cron 定时任务模块

name     设置定时任务名称

minute    设置分钟

hour      设置小时

day        设置天

month    设置月

weekday  设置周

job       设置任务

absent    删除定时任务

disable   =yes (添加注释) =no (取消注释)

 ansible 172.16.1.41 -m cron -a "name=oldboy minute=0 hour=0 job='/bin/sh /service/scripts/test.sh &>/dev/null'"
添加定时任务
ansible 172.16.1.41 -m cron -a "name=oldboy minute=0 hour=0 job='/bin/sh /service/scripts/test.sh &>/dev/null' state=absent"
ansible 172.16.1.41 -m cron -a "name=oldboy state=absent"
删除指定定时任务

ansible 命令

-k    使用密码进行管理(交互模式)

-doc  查看模块信息  帮助命令

-s    查找指定命令参数

颜色总结

绿色:查看远程信息,不会对远程主机做任何修改

红色:执行操作出现异常报错

黄色:对远程主机进行修改操作

粉色:警告提示信息

SSH与ansible 部署方法与核心模块简介的更多相关文章

  1. Mybatis核心模块简介

    Configuration 主要字段 Environment:配置DataSource和TransactionFactory ObjectFactory:bean工厂 MapperRegistry:M ...

  2. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  3. ansible核心模块playbook介绍

    ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...

  4. 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令

    1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...

  5. CentOS7.5 -- Ansible部署与应用

    第1章 Ansible概述 Ansible是一个配置管理系统configuration management system python 语言是运维人员必须会的语言 ansible 是一个基于pyth ...

  6. ansible学习基础知识和模块(一)

    基础知识补充: 常用自动化运维工具 Ansible:使用python来开发的,无需设置Agentless(代理),一般管理几百台.与ssh的方式也不一样,ssh是基于c/s模式(客户端+服务器)来使用 ...

  7. 使用ansible部署CDH 5.15.1大数据集群

    使用ansible离线部署CDH 5.15.1大数据集群 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在此之前,我之前分享过使用shell自定义脚本部署大数据集群,不管是部署CD ...

  8. hadoop入门(3)——hadoop2.0理论基础:安装部署方法

    一.hadoop2.0安装部署流程         1.自动安装部署:Ambari.Minos(小米).Cloudera Manager(收费)         2.使用RPM包安装部署:Apache ...

  9. CentOS6.7下Ansible部署

    Ansible是一种集成IT系统的配置管理, 应用部署, 执行特定任务的开源平台. 它基于Python语言实现, 部署只需在主控端部署Ansible环境, 被控端无需安装代理工具, 只需打开SSH, ...

随机推荐

  1. Nginx负载均衡-如何自定义URL中的hash key

    "例如请求的url为http://www.a.com/{path_var1}/{path_var2}path_var1和path_var2是两个path variable如果现在只想根据pa ...

  2. 常见问题:MySQL/B+树

    平衡二叉树 此前讲红黑树时也提到了平衡二叉树,红黑树和AVL树都是能保证树不退化的平衡二叉树,平衡二叉树采用二分思想组织数据,能大大提高单点查找数据的效率,其组装过程略. 作为对比,此处也列出平衡二叉 ...

  3. 为nologin用户开一个terminal

    昨天,我在设置zabbix-agent的时候,发现agent机器上的zabbix用户并不能读取某文件信息.我就想跳到zabbix用户,后来失败,发现在/etc/passwd中,zabbix被设置为 z ...

  4. Ribbon学习笔记

    微服务的概念: Ribbon默认的是轮询的算法:   @LoadBalanced @EnableEurekaClient Irule是根据 Ribbon默认(轮询)的7中负载均衡的算法: 修改默认的R ...

  5. PyTorch 常用代码段整理

    基础配置 检查 PyTorch 版本 torch.__version__               # PyTorch version torch.version.cuda              ...

  6. [转帖]LINUX下使用rinetd端口转发

    LINUX下使用rinetd端口转发 https://www.iteye.com/blog/lvinie-1167701 . 本来想自己写一下 发现没必要. 并且原作者提供了pan.baidu.com ...

  7. 【转帖】linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York

    linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York 2015-02-10 10:58:22 youcha ...

  8. golang使用一个二叉树来实现一个插入排序

    思路不太好理解,请用断点 package main import "fmt" type tree struct { value int left, right *tree } fu ...

  9. flannel overlay网络浅析

    Flannel基于UDP的网络实现 container-1的route表信息如下(b1): default via 100.96.1.1 dev eth0 100.96.1.0/24 dev eth0 ...

  10. 【HC89S003F4开发板】9ASM写定时器1

    HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...