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