自動化運維工具之ansible

1、什麼樣的情形須要批量部署mysql

一、操做系統的安裝web

常見的有collber,red hat satelite(redhat)系統專用。sql

二、操做系統的配置shell

常見的有cfengine,puppet,chef,func。其中puppet最受歡迎服務器

三、批量程序的部署架構

四、批量命令的運行查看狀態信息框架

2、ansible介紹less

ansible的架構大體以下運維

wKiom1cNHvbQi9C5AABpqTFIsoM324.pngansible是新出現的運維工具是基於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 倉庫中也可本身手動編譯

wKioL1cNIFKAVw01AAA1PhcMadI893.png

查看模塊

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'

 wKioL1cN0xGSwDhzAACX7lVsX9I204.png

# 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主機

相關文章
相關標籤/搜索