Ansible 一


Ansible是一個配置管理系統configuration management system

 

你只須要可使用ssh訪問你的服務器或設備就行。html

1.安裝軟件
2.配置服務python

Ansible能作什麼

ansible能夠幫助咱們完成一些批量任務,或者完成一些須要常常重複的工做。
好比:同時在100臺服務器上安裝nfs服務,並在安裝後啓動服務。
好比:將某個文件一次性拷貝到100臺服務器上。
好比:每當有新服務器加入工做環境時,你都要爲新服務器部署某個服務,也就是說你須要常常重複的完成相同的工做。
這些場景中咱們均可以使用到ansible。
Cobbler
Ansible

 

 

1.購買機器->2.配置環境->3.部署代碼->4測試->5.加入集羣linux

 

Ansible/Saltstack(master->minion)web

 

 

Ansible軟件特色

1.ansible不須要單獨安裝客戶端,SSH至關於ansible客戶端。
2.ansible不須要啓動任何服務,僅需安裝對應工具便可。
3.ansible依賴大量的python模塊來實現批量管理。
4.ansible配置文件/etc/ansible/ansible.cfg

 



 

 

 

 

 

 

 

 

實現從管理機m01到其餘機器的密鑰認證


0.ansible藉助公鑰批量管理
#利用非交換式工具實現批量分發公鑰與批量管理服務器shell

[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7

 

1.安裝ansiblevim

[root@m01 ~]# yum install ansible -y

 

2.配置ansible服務器

[root@m01 ~]# vim /etc/ansible/hosts
[oldboy]
172.16.1.31
172.16.1.41

 

3.驗證ansible
# ansible是經過ssh端口探測通訊ssh

[root@m01 ~]# ansible oldboy -m ping
172.16.1.7 | SUCCESS => {
"changed": false, 
"ping": "pong"
}
172.16.1.31 | SUCCESS => {
"changed": false, 
"ping": "pong"
}
172.16.1.41 | SUCCESS => {
"changed": false, 
"ping": "pong"
}

 

 


#批量執行命令工具

[root@m01 ~]# ansible oldboy -m command -a "df -h"

 



2.若是沒有給對應的主機下發公鑰,可使用密碼的方式進行添加測試

172.16.1.41 ansible_ssh_user='root' ansible_ssh_pass='1' ansible_ssh_port='22'

 

 

 

 

 

 

 

 

 

 

 

3.定義主機清單

[web]
172.16.1.7

[nfs]
172.16.1.31

[backup]
172.16.1.41

[oldboy:children]
web
nfs
backup

 

[root@m01 ~]# ansible web --list-hosts #web
hosts (1):
172.16.1.7
[root@m01 ~]# ansible nfs --list-hosts #nfs
hosts (1):
172.16.1.31
[root@m01 ~]# ansible backup --list-hosts #rsync
hosts (1):
172.16.1.41
[root@m01 ~]# ansible oldboy --list-hosts #集中全部的小組,用於執行一些基礎的配置
hosts (3):
172.16.1.31
172.16.1.41
172.16.1.7

 




一、命令 -> 文件 = 腳本
二、模塊 -> 文件 = 劇本

安裝 配置 啓動

1.command 執行命令
2.shell 執行命令

 


3.yum 安裝軟件模塊
4.copy 配置模塊
5.service 啓動服務模塊
6.user 用戶管理
7.file 建立目錄,建立文件,往文件寫內容
8.cron 定時任務
9.mount 掛載

 

 

 

1.command命令模塊

# 默認模塊, 執行命令

[root@m01 ~]# ansible oldboy -a "hostname"

 


# 若是須要一些管道操做,則使用shell

[root@m01 ~]# ansible oldboy -m shell -a "ifconfig|grep eth0" -f 50 

 

  

//後面的50定義一次性顯示多少個主機內容
# -f =forks /etc/ansible/ansible.cfg #結果返回的數量   

這個文件參數能夠更改一次性出現幾個輸出內容

 

2.yum安裝模塊
#推送腳本文件至遠程,遠程執行腳本文件

[root@m01 ~]# ansible oldboy -m yum -a "name=httpd state=installed"

 


name ---指定要安裝的軟件包名稱
state ---指定使用yum的方法
installed,present ---安裝軟件包
removed,absent ---移除軟件包
latest ---安裝最新軟件包

3.copy模塊

查看幫助命令,copy

 


# 推送文件模塊

[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt owner=www group=www mode=0600"

 

# 在推送覆蓋遠程端文件前,對遠端已有文件進行備份,按照時間信息備份

[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes"  要備份

 

 

# 直接向遠端文件內寫入數據信息,而且會覆蓋遠端文件內原有數據信息

[root@m01 ~]# ansible oldboy -m copy -a "content='bgx' dest=/tmp/oldboy"

 

src --- 推送數據的源文件信息
dest --- 推送數據的目標路徑
backup --- 對推送傳輸過去的文件,進行備份
content --- 直接批量在被管理端文件中添加內容
group --- 將本地文件推送到遠端,指定文件屬組信息
owner --- 將本地文件推送到遠端,指定文件屬主信息
mode --- 將本地文件推送到遠端,指定文件權限信息

 

 

 

4.service服務模塊

[root@m01 ~]# ansible oldboy -m service -a "name=crond state=stopped enabled=yes"
name --- 定義要啓動服務的名稱
state --- 指定服務狀態是中止或是運行
started --- 啓動
stopped --- 中止
restarted --- 重啓
reloaded --- 重載
enabled --- 是否讓服務開啓自啓動

 

 

 三部曲

1.安裝
[root@m01 ~]# ansible web -m yum -a "name=httpd state=installed"
2.配置
[root@m01 ~]# ansible web -m copy -a "content='This is Ansible' dest=/var/www/html/index.html"
3.啓動
[root@m01 ~]# ansible web -m service -a "name=httpd state=started"

 

yum copy service mount cron user file 1.機器還原快照(firewalld、selinux、配置好倉庫)2.推送你的公鑰3.指定backup安裝rsync、配置、啓動、建立目錄、建立用戶、準備密碼文件、權限4.指定nfs安裝nfs、配置、啓動5.web掛載nfs6.web執行腳本推送數據至bakcup,加入定時任務

相關文章
相關標籤/搜索