1、什麼樣的情形須要批量部署mysql
一、操做系統的安裝web
常見的有collber,red hat satelite(redhat)系統專用。sql
二、操做系統的配置shell
常見的有cfengine,puppet,chef,func。其中puppet最受歡迎服務器
三、批量程序的部署架構
四、批量命令的運行查看狀態信息框架
2、ansible介紹less
ansible的架構大體以下運維
ansible是新出現的運維工具是基於Python研發的糅合了衆多老牌運維工具的優勢實現了批量操做系統配置、批量程序的部署、批量運行命令等功能。ssh
運維工具常見的工做模式
一、agent模式: 基於ssl實現。代理工做在被監控端。像puppet。
二、agentless模式: 基於ssh服務實現工做在被監控端。監控端是ssh的客戶端。
ansible是工做在agentless模式下具備冪等性。ansible在控制端只須要告訴監控端的指望狀態就能夠實現批量部署。名詞解釋
冪等性不會重複執行相同的指令。例如不會重複安裝軟件
指望狀態只須要告訴被監控端的指望狀態
ansible是基於模塊工做的ansible自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊ansible只是提供一種框架。架構包括
鏈接插件connection plugins負責和被監控端實現通訊。
Host Inventory:指定操做的主機,是一個配置文件裏面定義監控的主機
各類模塊核心模塊command模塊自定義模塊
藉助於插件完成記錄日誌郵件等功能
PlayBooks:劇本執行多個任務時。並不是必需可讓節點一次性運行多個任務
3、ansible的基本使用
安裝軟件yum install ansible -y # 對應的軟件在 epel 倉庫中也可本身手動編譯
查看模塊
ansible-doc -l
ansible-doc -s 模塊名
ansible <Host-partten> [-f forks][-m module_name][-a args]
-f forks: 啓動時併線程
-m module_name 要使用的模塊
-a args:模塊參 常見模塊:command:默認模塊,用來執行遠程命令
# ansible all -m command -a 'cat /etc/passwd
# ansible all -a 'date'
# ansible 192.168.2.35 -m command -a 'yum remove mysql -y'
查看模塊參數
# ansible-doc -s 模塊名
cron:計劃模塊
ansible 192.168.2.35 -m cron -a 'minute="*/10" job="/bin/echo fcuk you" name="test cron job"'
present:安裝
absent:移出
user模塊,用來添加刪除用戶
# ansible all -m user -a 'name=test1'
# ansible all -m user -a 'name=test1 state=absent' 移除user
group 組模塊,添加刪除組
# ansible all -m group -a 'name=mysql gid=306 system=yes'
copy 模塊,拷貝文件
sec:本地源文件路徑
dest:遠程存取路徑
content:取代src=,直接用來生成目標文件內容。
# ansible all -m copy -a 'src=/etc/fstab dest=/tmp/'
# ansible all -m copy -a 'content="Hello\nHi test.com" dest=/tmp/test.txt'
file 模塊,主要用來改權限,作鏈接,
範例:把文件fstab 屬主改爲mysql 組改成mysql 權限是600
ansible 192.168.2.35 -m file -a 'owner=mysql mode=600 group=mysql path=/tmp/fstab'
給fstab建立一個鏈接fstab.link
src=:源文件
path=:產成符號鏈接的路徑
# ansible 192.168.2.35 -m file -a 'path=/tmp/fstab.link src=/tmp/fstab state=link'
ping模塊遠程主機在線否
# ansible all -m ping
service模塊指定運行的程序:
enabled=:是否開機自啓動,取值爲ture或者false;
name=:服務器名
state=狀態,取值有started,stoped,restarted
# ansible-doc -m service
# ansible all -a 'service httpd status'
# ansible all -a 'chkconfig --list httpd'
# ansible-doc -s shell
shell 模塊:在遠程主機上運行模塊,尤爲用到管道有等功能時
範例:建立user1用戶並添加密碼
# ansible web1 -m user -a 'user=user1'
# ansible web1 -m shell -a 'echo 123456 | passwd --stdin user1'
script模塊
# ansible-doc -s script
將本地腳本複製到遠程並運行
# ansible web1 -m script -a '/root/test.sh'
yum模塊:
# ansible-doc -s yum
name=:指明安裝的軟件名,能夠帶上版本號
state=absent:卸載
# ansible all -m yum -a ’name=mysql-server‘
# ansible all -m yum -a ‘name=mysql-server state=absent’
setup:收集遠程的facts
facts:每一個被管理主機在被管理前,會把本身主機相關信息報告給ansible主機