ansible學習筆記

一、ansible的基本簡介:

  1. ansible式什麼?

    Ansible 是一個適用於成百上千規模的受控節點的配置管理、應用程序部署、內部服務編排等諸多功能於一身的極爲簡單的IT運維自動化工具引擎,基於Python開 發。她無需代理,很容易部署,除SSH外沒有其他安全基礎設施/配置要求。她使用了一個非常簡單的語言(YAML),讓你可以編寫自己的自動化作業腳本。

  2. ansible式怎樣工作的?

    Ansible連接到受控機,並推送一個稱爲“Modules”的應用程序到受控機上,Ansible然後在受控機上執行這些模塊(默認情況下通過SSH),並在完成時刪除她們。

  3. ansible的優點:

    1、Playbooks基於YAML,簡單易學

    2、基於推送,無需在受控機上安裝任何程序

    3、受控機可以成百上千,管理範圍越大成本效能越好

    4、內建大量Modules,並可使用“任何語言”開發自定義模塊

  4. ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppetcfenginecheffuncfabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。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

wKioL1fVXZbCLwF2AADw67hkDfw052.png

查看某一個模塊:ansible-doc -s copy

wKiom1fVXenA720PAADk5KcVDhM071.png


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'

wKiom1fVXtyioiOvAABtQd_rNPY797.png

查看passwd文件:

wKiom1fVXzfh6TC5AACmi4NeghY510.png

cron模塊:

讓被管理節點生成定期自動運維計劃:

讓兩臺主機每十分鐘運行一次echo hello world

wKiom1fVYCLAv28QAAB69WdtWNY579.png

通過命令 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

wKioL1fVYfjA4_T_AADMR3bZVkw761.png

刪除用戶:ansible all -m user -a 'name="user1" state=absent'

組管理: group

創建mysql組賬戶:

wKioL1fVYrvAK9o4AACPA0QIkrs749.png

創建mysql用戶並且加進mysql組裏:

wKioL1fVY0GSEcaPAADsxnb3TYs501.png

copy:

src=: 定義本地源文件路徑

dest=: 定義遠程目標文件路徑

content=: 取代src=,表示直接用此處指定的信息生成爲目標文件

複製/etc/passwd文件到/mnt/下:

wKioL1fVY9OyjiM0AAD1LwCUTTY193.png

content直接生成文件內容:

wKiom1fVZEji_SFxAAD4dwuujWo758.png

file:

將複製的文件的屬主,屬組改爲mysql:

wKiom1fVZUuTF-lPAADidYFTPqY733.png

ping模塊:

wKiom1fVZYOwt2knAABpkbz6f8w117.png

service:

管理節點服務和啓動狀態

wKioL1fVZirTqizfAAB60981DjY299.png

如果服務沒開啓的話,執行以下命令會開啓:

wKioL1fVaBvhlKtOAABrwLkspW4788.png

shell:

用到管道複雜命令功能時建議用shell

wKiom1fVZrKzWjahAAClIpuqhvI275.png

yum:

安裝程序包,卸載的話在後面加上state=absent

wKiom1fVZ1XzJtNwAAH5h1q3so0524.png

卸載的話就是: ansible all -m yum -a "name=bind state=absent"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章