1. 程式人生 > >ansible批量管理工具

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)現在我先建一個超級使用者的祕鑰登入(工作中是不允許的,實驗用)

         [[email protected]]#  我現在是超戶的密碼登入  (就是直接用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代替,  他是支援管道符和重定向的。

未完