ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。在講ansible之前,我們先來說一說基於ssh的密匙建立遠端連線。
一般情況下,我們在一台主機上使用ssh命令連線另一台主機都需要輸入密碼。但是今天給大家帶來一種用密匙的方式,免去每次遠端連線都需要使用密碼的繁瑣。
首先我們要建立一對密匙(類似於一把鎖和一把鑰匙)
ssh-keygen -t dsa
-t 表示密匙型別。有兩種,一種是dsa,另一種是rsa。隨便選哪種都可以。
在使用該命令建立密匙時會要確認密匙存放路徑和密匙是否要加密。
此時我們可以加上兩個引數來避免這種情況。-f 引數可以指定存放位置,-n引數可以指定密碼內容。(雙引號內沒有空格!)
ssh-keygen -t dsa -f /root/.ssh/id_dsa -n ""
這樣我們就可以完成,免互動建立密匙了。接下來是分發密匙。當我們用一下命令分發密匙的時候。會讓我們確認我們是否要連線172.16.1.8主機。確認之後還要輸入密碼。
此時我們又可以增加兩個引數避免互動
sshpass -p123456 和 -o stricthostkeychecking=no (sshpass需要用yum安裝一下。)
使用一下命令即可完成面互動分發密匙。
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o stricthostkeychecking=no 172.16.1.7"
下面是批量分發(利用sh指令碼和for迴圈。)
#!/bin/bash
rm /root/.ssh/id_dsa
ssh-keygen -t dsa -f /root/.ssh/id_dsa -n ""
for ip in 31 41 7
dosshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o stricthostkeychecking=no 172.16.1.$ip"
done
完成以上內容後,我們可以正式開始使用ansible了。
想要使用ansible一鍵化部署,首先要對ansible進行安裝。安裝ansible主要分為兩種:
控制主機的安裝:
yum install -y ansible
受控主機的安裝(可選):
yum install -y libselinux-python
vim /etc/ansible/hosts
[oldboy]
172.16.1.7
172.16.1.31
172.16.1.41
注意:[oldboy]是將下面三個ip位址包含在oldboy組內。在進行批量化管理的時候直接使用oldboy即可同時對以上三個主機同時管理。
此時ansible已經部署完成。可以使用了。
注意:如果不進行上面的ssh免密互動,則需要在ansible配置檔案中加入每台主機的使用者名稱和密碼。
172.16.1.31 ansible_user=root ansible_password=123456
#command play-book
- hosts: 172.16.1.41
tasks:
- name: step01:install rsync
yum: name=rsync state=installed
- name: step02:edit rsync conf file
copy: src=/etc/ansible/conf/rsync_conf/rsyncd.conf dest=/etc/
- name: step03:create rsync user
user: name=rsync state=present createhome=no shell=/sbin/nologin
- name: step04:create rsync auth file
copy: src=/etc/ansible/conf/rsync_conf/rsync.password dest=/etc/ mode=600
- name: step05:create rsync dir
file: dest=/backup/ state=directory owner=rsync group=rsync
- name: step06:boot rsync server
shell: creates=/var/run/rsyncd.pid rsync --daemon
- hosts: 172.16.1.31
tasks:
- name: step01:create auth file
copy: src=/etc/ansible/conf/rsync_conf/rsync_client.password dest=/etc/rsync.password mode=600
執行指令碼的方法:
ansible-playbook /etc/ansible/ansible-playbook/test.yaml
可以在命令裡加入-c引數,進行模擬執行。進行指令碼驗證。
ansible-playbook -c /etc/ansible/ansible-playbook/test.yaml
2020 4 20 ansible一鍵部署nfs
root m01 tools cat nfspeizhi.sh cat etc exports tasks name yum shell yum install y nfs utils rpcbind 安裝nfs name yunm shell yum y install sshpass 安裝金鑰的...
一鍵化部署WordPress指令碼
root qls service scripts day11 cat lnmp.sh bin bash 引用函式 f etc init.d functions source etc init.d functions 選單cat eof 0.check network 1.install nginx ...
nginx一鍵安裝部署指令碼
前言 建立指令碼 bin bash rpm qa grep q wgetif ne 0 then read ep 未發現wget工具,是否嘗試自動安裝 y n install wget if install wget y o install wget y then echo 開始安裝wget.yum...