【Ansible學(xué)習(xí)】- Ansible初探

安裝

yum -y install epel-release
yum -y install ansible

Ansible基礎(chǔ)

Ansible架構(gòu)圖

Ansible架構(gòu)圖
Ansible架構(gòu)圖

Ansible核心組件說(shuō)明

  • Ansible:Ansible的核心程序
  • Host Lnventory:記錄了每一個(gè)由Ansible管理的主機(jī)信息龟劲,信息包括ssh端口昌跌,root帳號(hào)密碼,ip地址等等答恶∑加眨可以通過(guò)file來(lái)加載裕坊,可以通過(guò)CMDB加載
  • Playbooks:YAML格式文件籍凝,多個(gè)任務(wù)定義在一個(gè)文件中,使用時(shí)可以統(tǒng)一調(diào)用声诸,劇本用來(lái)定義那些主機(jī)需要調(diào)用那些模塊來(lái)完成的功能
  • Core Modules:Ansible執(zhí)行任何管理任務(wù)都不是由Ansible自己完成退盯,而是由核心模塊完成得问;Ansible管理主機(jī)之前,先調(diào)用core Modules中的模塊焚挠,然后指明管理Host Lnventory中的主機(jī)蝌衔,就可以完成管理主機(jī)蝌蹂。
  • Custom Modules:自定義模塊孤个,完成Ansible核心模塊無(wú)法完成的功能,此模塊支持任何語(yǔ)言編寫斥废。
  • Connection Plugins:連接插件,Ansible和Host通信使用

Ansible執(zhí)行過(guò)程

暖色調(diào)的代表已經(jīng)模塊化


Ansible執(zhí)行過(guò)程
Ansible執(zhí)行過(guò)程

清單文件

[servers]
172.20.21.120
172.20.21.121
172.20.21.123

默認(rèn)清單文件是/etc/ansible/hosts

同時(shí)也可以在運(yùn)行時(shí)通過(guò)-i參數(shù)來(lái)指定清單文件统锤。

測(cè)試主機(jī)連通性

ansible www.baidu.com -m ping

發(fā)現(xiàn)執(zhí)行結(jié)果異常饲窿,這是因?yàn)?code>ansible只納管定義在清單文件中的主機(jī)免绿。

需要清單文件
需要清單文件
ansible servers -m ping
ansible servers -m ping -o

通過(guò)-o參數(shù),可以讓結(jié)果在一行中進(jìn)行顯示嘲驾。

測(cè)試主機(jī)連通性
測(cè)試主機(jī)連通性

執(zhí)行遠(yuǎn)程指令

ansible servers -m shell -a 'uptime'
ansible servers -m command -a 'uptime'
執(zhí)行遠(yuǎn)程指令
執(zhí)行遠(yuǎn)程指令

遠(yuǎn)程主機(jī)的yum管理

確認(rèn)軟件是否安裝

[root@centos7 ~]# ansible servers -m shell -a 'rpm -qa|grep httpd'
 [WARNING]: Consider using yum, dnf or zypper module rather than running rpm

172.20.21.121 | FAILED | rc=1 >>
non-zero return code

安裝httpd

[root@centos7 ~]# ansible servers -m yum -a 'name=httpd state=latest'
172.20.21.121 | SUCCESS => {
    "changed": true, 
    "msg": "Repository base is listed more than once in the configuration\nRepository updates is listed more than once in the configuration\nRepository extras is listed more than once in the configuration\nRepository centosplus is listed more than once in the configuration\nThere are unfinished transactions remaining. You might consider running yum-complete-transaction, or \"yum-complete-transaction --cleanup-only\" and \"yum history redo last\", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).\nThe program yum-complete-transaction is found in the yum-utils package.\n", 
    "rc": 0, 
    "results": [
        ..."
    ]
}

再次安裝

再次安裝時(shí)徒仓,就會(huì)檢查客戶端已安裝的組件是否是最新的誊垢,若是最新的就不會(huì)再次安裝掉弛。changed字段會(huì)返回false

[root@centos7 ~]# ansible servers -m yum -a 'name=httpd state=latest'
172.20.21.121 | SUCCESS => {
    "changed": false, 
    "msg": "", 
    "rc": 0, 
    "results": [
        "All packages providing httpd are up to date", 
        ""
    ]
}

Ansible組件 - Inventory

Inventory主機(jī)清單

inventory文件通常用于定義要管理主機(jī)的認(rèn)證信息喂走,例如ssh登錄所需的用戶名殃饿、密碼以及key相關(guān)信息。
/etc/ansible/hosts文件配置:

[apache]
172.20.21.121
172.20.21.123

[nginx]
172.20.21.[120:121]

# 把一個(gè)組作為另一個(gè)組的子成員
[servers:children]
apache
nginx

# 定義組變量
[servers:vars]
ansible_ssh_user='root'
ansible_ssh_pass='123456'
[root@centos7 ~]# ansible apache --list-hosts
  hosts (2):
    172.20.21.121
    172.20.21.123
[root@centos7 ~]# ansible nginx --list-hosts
  hosts (2):
    172.20.21.120
    172.20.21.121
[root@centos7 ~]# ansible servers --list-hosts
  hosts (3):
    172.20.21.121
    172.20.21.123
    172.20.21.120
[root@centos7 ~]# ansible all -m shell -a 'hostname' -o
172.20.21.123 | SUCCESS | rc=0 | (stdout) centos7
172.20.21.121 | SUCCESS | rc=0 | (stdout) centos7
172.20.21.120 | SUCCESS | rc=0 | (stdout) centos7

Ansible Inventory 內(nèi)置參數(shù)

參數(shù) 用途 例子
ansible_ssh_host 將要連接的遠(yuǎn)程主機(jī)名ssh地址 ansible_ssh_host=192.168.1.100
ansible_ssh_port ssh端口 ansible_ssh_port=3000
ansible_ssh_user ssh 用戶名 ansible_ssh_user=user
ansible_ssh_pass ssh 密碼 ansible_ssh_pass=pass
ansible_sudo sudo 用戶
ansible_sudo_pass sudo 密碼
ansible_sudo_exe sudo 執(zhí)行路徑 ansible_sudo_exe=/usr/bin/sudo
ansible_connection hosts 連接方式 ansible_connection=local
ansible_ssh_private_key_file hosts 私鑰 ansible_ssh_private_key_file=/root/key

Ansible組件 - Ad-Hoc

ad hoc芋肠,臨時(shí)的乎芳,在ansible中是指需要快速執(zhí)行,并且不需要報(bào)錯(cuò)的命令帖池。對(duì)于復(fù)雜的命令則需要playbook。

執(zhí)行命令 -m shell

[root@centos7 ~]# ansible servers -m shell -a 'hostname' -o
172.20.21.121 | SUCCESS | rc=0 | (stdout) centos7
172.20.21.123 | SUCCESS | rc=0 | (stdout) centos7
172.20.21.120 | SUCCESS | rc=0 | (stdout) centos7
[root@centos7 ~]# ansible servers -m shell -a 'uname -r' -o
172.20.21.121 | SUCCESS | rc=0 | (stdout) 3.10.0-514.26.2.el7.x86_64
172.20.21.123 | SUCCESS | rc=0 | (stdout) 3.10.0-514.26.2.el7.x86_64
172.20.21.120 | SUCCESS | rc=0 | (stdout) 3.10.0-514.26.2.el7.x86_64

復(fù)制文件 -m copy

ansible all -m copy -a "src=test.sh dest=/tmp"
復(fù)制文件
復(fù)制文件

軟件包管理 -m yum

ansible apache -m yum -a "name=vim state=present"
軟件包安裝
軟件包安裝
ansible apache -m yum -a 'name=httpd state=absent'
軟件包卸載
軟件包卸載

服務(wù)管理 -m service

ansible apache -m service -a "name=httpd state=restarted enabled=yes"
服務(wù)管理
服務(wù)管理

Ansible組件 - Facts

facts組件是Ansible用于采集被管理主機(jī)信息的功能睡汹,可以使用setup模塊查看主機(jī)所有的facts信息肴甸。可以使用filter參數(shù)對(duì)結(jié)果進(jìn)行過(guò)濾囚巴。

ansible apache -m setup
ansible apache -m setup -a "filter=ansible_default_ipv4"
setup模塊
setup模塊

Ansible組件 - playbook

playbook是有一個(gè)或者多個(gè)play組成的列表原在。play的主要功能在于將實(shí)現(xiàn)歸并為一組的主機(jī)裝扮成實(shí)現(xiàn)通過(guò)ansible中的task定義好的角色role友扰。

根本上來(lái)講,所謂的task無(wú)非是調(diào)用ansible的一個(gè)module晤斩。將多個(gè)play組織在一個(gè)playbook中焕檬,即可以讓他們聯(lián)合起來(lái)按事先編排的機(jī)制完成某一任務(wù)。

playbook結(jié)構(gòu)
playbook結(jié)構(gòu)

playbook示例

yaml劇本

- hosts: apache
  tasks:
  - name: Install httpd
    yum: name=httpd state=present

  - name: copy httpd conf
    template: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
              owner=root group=root mode=0644
    notify:
    - Restart Apache Service

  - name: enable httpd is runing
    service: name=httpd state=started enabled=yes

  handlers:
  - name: Restart Apache Service
    service: name=httpd state=restarted

檢查

ansible-playbook apapche.yaml --syntax-check
ansible-playbook apapche.yaml --list-task
ansible-playbook apapche.yaml --list-hosts

執(zhí)行playbook

ansible-playbook apapche.yaml
執(zhí)行playbook
執(zhí)行playbook

如果覺得有用澳泵,歡迎關(guān)注我的微信,有問(wèn)題可以直接交流:

你的關(guān)注是對(duì)我最大的鼓勵(lì)兼呵!
你的關(guān)注是對(duì)我最大的鼓勵(lì)兔辅!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市击喂,隨后出現(xiàn)的幾起案子维苔,更是在濱河造成了極大的恐慌,老刑警劉巖懂昂,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件介时,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凌彬,警方通過(guò)查閱死者的電腦和手機(jī)沸柔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铲敛,“玉大人褐澎,你說(shuō)我怎么就攤上這事》ソ” “怎么了工三?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)先鱼。 經(jīng)常有香客問(wèn)我俭正,道長(zhǎng),這世上最難降的妖魔是什么焙畔? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任掸读,我火速辦了婚禮,結(jié)果婚禮上闹蒜,老公的妹妹穿的比我還像新娘寺枉。我一直安慰自己,他們只是感情好绷落,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布姥闪。 她就那樣靜靜地躺著,像睡著了一般砌烁。 火紅的嫁衣襯著肌膚如雪筐喳。 梳的紋絲不亂的頭發(fā)上催式,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音避归,去河邊找鬼荣月。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梳毙,可吹牛的內(nèi)容都是我干的哺窄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼账锹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼萌业!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奸柬,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤生年,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后廓奕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抱婉,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年桌粉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒸绩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡番甩,死狀恐怖侵贵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缘薛,我是刑警寧澤窍育,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站宴胧,受9級(jí)特大地震影響漱抓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恕齐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一乞娄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧显歧,春花似錦仪或、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拷肌,卻和暖如春到旦,著一層夾襖步出監(jiān)牢的瞬間旨巷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工添忘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留采呐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓搁骑,卻偏偏與公主長(zhǎng)得像斧吐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子仲器,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • ansible-playbook playbook簡(jiǎn)介 playbook是ansible用于配置会通,部署,和管理被控...
    bdslinux閱讀 10,853評(píng)論 1 12
  • ansible 系統(tǒng)架構(gòu) ansible簡(jiǎn)介ansible是新出現(xiàn)的自動(dòng)化運(yùn)維工具娄周,ansible是一個(gè)配置管理和...
    運(yùn)維阿文閱讀 9,568評(píng)論 1 52
  • 作為背鍋俠運(yùn)維工作的基本流程 運(yùn)維工具的分類 : ansible的模塊化: ansible密鑰登陸 ansible...
    二郎5閱讀 4,146評(píng)論 0 10
  • 一、簡(jiǎn)介 Ansible is a radically simple configuration-manageme...
    Michael_林閱讀 483評(píng)論 0 0
  • 安裝ansible 1.yum安裝:RHEL(Centos)7版本: 2.Apt(Ubuntu)安裝方式: 3.h...
    愛吃土豆的程序猿閱讀 11,130評(píng)論 0 12