• 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代替,  他是支持管道符和重定向的。

    未完

  • 相关阅读:
    牛顿迭代法
    C语言补遗
    Manjaro添加开机启动脚本
    tensorboard查看pytorch模型
    Kindle最佳排版记录
    01背包问题详解
    差分法介绍
    BFS详解
    UVA11732 "strcmp()" Anyone?
    LA3942 Remember the Word
  • 原文地址:https://www.cnblogs.com/changtianwei/p/9944100.html
Copyright © 2020-2023  润新知