当前位置: 首页 > news >正文

ansible批量管理工具

一,常见的管理工具

  (1)ansible     so easy  500台以下的服务器

  (2)saltstack   比较复杂

  (3)puppet     超级复杂

2,   ansible介绍

ansible利用ssh通道。这样一来就需要免秘钥的脚本

(1)做一个实验

       vim /etc/ssh/ssh_config  先把这里边的

sshd_config是 ssh服务器的配置文件

StrictHostKeyChecKing (ask 换成no) (秘钥时弹出来yes和no关了)

(2)vim /etc/ssh/sshd_config 在看它的配置文件

       17行   Port 端口要改成10000以上                                       先不改

       38行  root(超级用户)远程登录  改成no拒绝     工作中一定要这样  (但我现在做实验先选yes)    

                       (所有远程方式是不能登录超级用户的)

       43行  开启公钥  默认是开的  工作中也是开的。

        47行  这行是验证文件放的位置,这行不变工作中也是这样(.ssh/authorized_keys)

        65行   密码验证 这要是NO了 所有密码登录就失效了,只能秘钥登录, 要不然就是密码登录要不就是秘钥登录,

         79行 改成NO 这是为提高ssh解析速度。

         115行 改成no  禁止DNS反向解析。为了加快ssh的连接速度。

 改好后:从启下;     systemctl reload sshd     (但我现在都没改为了做实验)

(3)现在我先建一个超级用户的秘钥登录(工作中是不允许的,实验用)

         [root@ctw]#  我现在是超户的密码登录  (就是直接用shell用密码连的虚拟机)

      1, 首先#cd .ssh  进入.ssh目录

#ssh-keygen            创建秘钥对

         #cd .ssh               进入秘钥对目录

    2,  把私钥  id_rsa 拿出来 放到桌面上  (这私钥是给shell拿的, shell去连虚拟机就是服务器所以虚拟机拿的是公钥)   

    3, 之后得把公钥改名字#cat id_rsa.pub > authorized_keys

          在改公钥的权限#chmod 600 authorized_keys

   4, 之后再新启一个shell            这新启的shell所登录的虚拟机就是我现在登录的虚拟机,  我现在登录的是用密码方式,  现在我要改为shell方式。

          新启的shell窗口需要设置  新建后左上角“身份验证”进去后第一行方法选第二个公钥。用户名选你要登录的用户(现在选root超户)

          第四行添加上 刚才放在桌面的私钥  确定,连接  这就是秘钥对的登录方式。

5,登录进去后,vim /etc/ssh/sshd_config 就可以更改它的配置文件

65行   密码验证 这要是NO了 所有密码登录就失效了,只能秘钥登录, 要不就密码登录要不就是秘钥登录,    现在这行就可以选择no了   因为我现在是秘钥登录。(就算普通用户也不能密码登陆了)

 

(4)  接下来我创建一个普通用户

       1,#useradd yunjisuan

        不用设密码 因为一会我要用秘钥登录。

而且上一步我已近把密码登录关闭了

2,我把/root/.ssh 里的公钥复制到/home/yunjisuan

    #cp authorized_keys /home/yunjisuan

3,#cd /home/yunjisuan

           创建.ssh  #mkdir .ssh

4,把/home/yunjisuan下的公钥给.ssh移过去

         #mv authorized_keys .ssh

 

      5,在改.ssh目录的权限# chmod 700 .ssh

   改.ssh 目录的属主属组都为yunjisuan  #chmod –R yunjisuan.yunjisuan .ssh

   -R 递归 就是把.ssh目录下的公钥authorized_keys  属主属组也改成yunjisuan.yunjisuan

6, 现在shell登录就可以了,  私钥还是刚才那个私钥,因为公钥是复制过来的。

现在状态是我shell连接的普通用户

   (5)

现在我用秘钥登陆的是普通用户yunjisuan,我要切换到超级用户    这时得需要密码但是这样不行,我需要改变些配置,在超级用户# visudo 做一下添加:

 root             ALL=(ALL)                ALL

yunjisuan      ALL=            NOPASSWD:ALL(免秘钥)

  之后在普通用户sudo –l        显示出自己(执行 sudo 的使用者)的权限   

之后su – root 切超级用户这样需要密码

          sudo  su – 免秘钥直接切换到超级用户

(6)切换到超级用户后现在我可以改 配置了

    #vim /etc/ssh/sshd_config

    17行   Port 端口要改成22221

38行  root(超级用户)远程登录  改成no拒绝     工作中一定要这样  (但我现在做实验先选yes)    

65行   密码验证 这要是NO了 所有密码登录就失效了,只能秘钥登录, 要不然就是密码登录要不就是秘钥登录,

             79行 改成NO 这是为提高ssh解析速度。

           115行 改成no  禁止DNS反向解析。为了加快ssh的连接速度。

改好后:从启下;    # systemctl reload sshd

              #ss –antup | grep 22221     回车 看下监听端口

             现在我用秘钥登录普通用户 改下端口22221,就可以登陆了普通用户了

然后用:#sudo  su – 免秘钥直接切换到超级用户这就能办公了。

           现在这个服务器只能用秘钥登陆,而且只能是普通用户。

          3,配置ansible

                   (1)Ansible默认配置文件在#:ll /etc/ansible/hosts 

                   #> /etc/ansible/hosts  直接清除

                   #vim /etc/ansible/hosts

                   [nginx]    模块名

                   WebA    ansible_ssh_host=192.168.29.146

                   Web2    ansible_ssh_host=192.168.29.147 这个用密码登录后边加上密码ansible_ssh_pass=666666 写在ip后边

                   在有秘钥的情况下这就配置完了

                   把公钥给WebA发过去放在他~/.ssh里

                 # ssh 192.168.29.146  看能不能连接上

                  之后#ansible  WebA  -m ping           (-m ping就是看下目标通不通)

                        #ansible 被管理范围 –m 模块 –a 具体命令

(2)如果#ansible nginx –m ping           被管理范围是模块名那么这两个内容一起分发。

                      如果#ansible all –m ping              所有模块全都发。

4,模块

1,command模块   是给对方分发命令。  不支持管道符和重定向

 #ansible all –m command –a ‘uptime’    获取全部对方的平均负载值

                   #ansible all –m command –a ‘hostname -I’   获取对方所有设备的IP地址 

这个模块已经淘汰 完全可以用  shell代替,  他是支持管道符和重定向的。

未完

转载于:https://www.cnblogs.com/changtianwei/p/9944100.html

相关文章:

  • json 序列化和反序列化的3个方法
  • Mac 启动 ssh 服务
  • Logstash 6.4.3 导入 csv 数据到 ElasticSearch 6.4.3
  • 指定spring中bean启动的顺序
  • utp
  • 把图片上的文字转换成word文字?
  • Ajax请求参数到一个URL包含下划线或者v(_、v)
  • Hibernate基础入门
  • Sitecore 9有什么新功能
  • r语言
  • redis入门学习记录(一)
  • Python并发编程之协程
  • A. A Prank
  • 二分搜索-poj2785
  • MyBatis实战之配置
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • HTTP中GET与POST的区别 99%的错误认识
  • java8 Stream Pipelines 浅析
  • leetcode46 Permutation 排列组合
  • rabbitmq延迟消息示例
  • Spring核心 Bean的高级装配
  • 编写高质量JavaScript代码之并发
  • 成为一名优秀的Developer的书单
  • 工作手记之html2canvas使用概述
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • ​马来语翻译中文去哪比较好?
  • # Maven错误Error executing Maven
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #预处理和函数的对比以及条件编译
  • (145)光线追踪距离场柔和阴影
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (补)B+树一些思想
  • (三)uboot源码分析
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)程序员技术练级攻略
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net6使用WebSocket与前端进行通信
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /dev下添加设备节点的方法步骤(通过device_create)
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Autowired和@Resource的区别
  • @JSONField或@JsonProperty注解使用
  • @ModelAttribute使用详解
  • @RequestMapping-占位符映射
  • @软考考生,这份软考高分攻略你须知道
  • [ 蓝桥杯Web真题 ]-布局切换
  • [2023年]-hadoop面试真题(一)
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C++]C++类基本语法