ansible批量管理工具

时间:2023-01-31 22:24:31

一,常见的管理工具

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

未完