一、ansible的基本簡介:
ansible式什麼?
Ansible 是一個適用於成百上千規模的受控節點的配置管理、應用程序部署、內部服務編排等諸多功能於一身的極爲簡單的IT運維自動化工具引擎,基於Python開 發。她無需代理,很容易部署,除SSH外沒有其他安全基礎設施/配置要求。她使用了一個非常簡單的語言(YAML),讓你可以編寫自己的自動化作業腳本。
ansible式怎樣工作的?
Ansible連接到受控機,並推送一個稱爲“Modules”的應用程序到受控機上,Ansible然後在受控機上執行這些模塊(默認情況下通過SSH),並在完成時刪除她們。
ansible的優點:
1、Playbooks基於YAML,簡單易學
2、基於推送,無需在受控機上安裝任何程序
3、受控機可以成百上千,管理範圍越大成本效能越好
4、內建大量Modules,並可使用“任何語言”開發自定義模塊
ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
(1)、連接插件connection plugins:負責和被監控端實現通信;
(2)、host inventory:指定操作的主機,是一個配置文件裏面定義監控的主機;
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、藉助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
二、如何安裝ansible?
其實安裝ansible並不複雜,就一條簡單的命令就搞定了。我之前嘗試了幾種方法,看過幾個版本的absible安裝文檔,卻都失敗了。
下面介紹一下如何安裝ansible。
下載新repo到/etc/yum.repos.d/
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
添加一個epel源就可以了。
然後直接 yum install ansible -y 就可以了!!
三、ansible的一些簡單模塊命令:
主服務器: 172.25.44.250
準備3臺主機來實驗用:172.25.44.1 172.25.44.2 172.25.44.3
vim /etc/ansible/hosts
[xiaoze]
172.25.44.1
172.25.44.2
[lzk]
172.25.44.3
在主服務器上: ssh-keygen 生成密鑰
[root@server44 ansible]# ssh-copy-id -i [email protected] 將密鑰傳給其他3臺實驗主機
查看ansible支持的模塊:ansible-doc -l
查看某一個模塊:ansible-doc -s copy
ansible命令應用基礎:
語法: ansible <host-pattern> [-f forks] [-m module_name] [-a args]
-f forks:啓動的併發線程數;
-m module_name: 要使用的模塊;
-a args: 模塊特有的參數;
基本測試一下:
command模塊:
ansible all -m command -a 'date'
查看passwd文件:
cron模塊:
讓被管理節點生成定期自動運維計劃:
讓兩臺主機每十分鐘運行一次echo hello world
通過命令 ansible xiaoze -a 'crontab -l' 可查看任務是否生成
移除任務:ansible xiaoze -m cron -a 'minute="*/10" job="/bin/echo hello world" name="test cron job" state=absent'
創建用戶:user 刪除用戶後面加上state=absent
刪除用戶:ansible all -m user -a 'name="user1" state=absent'
組管理: group
創建mysql組賬戶:
創建mysql用戶並且加進mysql組裏:
copy:
src=: 定義本地源文件路徑
dest=: 定義遠程目標文件路徑
content=: 取代src=,表示直接用此處指定的信息生成爲目標文件
複製/etc/passwd文件到/mnt/下:
content直接生成文件內容:
file:
將複製的文件的屬主,屬組改爲mysql:
ping模塊:
service:
管理節點服務和啓動狀態
如果服務沒開啓的話,執行以下命令會開啓:
shell:
用到管道複雜命令功能時建議用shell
yum:
安裝程序包,卸載的話在後面加上state=absent
卸載的話就是: ansible all -m yum -a "name=bind state=absent"