Ansible安裝配置及基礎(chǔ)模塊介紹

一浦箱、Ansible概念介紹

1吸耿、Ansible概念

ansible就是一款運(yùn)用==Python語言開發(fā)==的自動(dòng)化運(yùn)維工具祠锣,==基于SSH協(xié)議==實(shí)現(xiàn)批量系統(tǒng)配置、批量程序部署咽安、批量運(yùn)行命令等功能 伴网。ansible不用配置配置文件,無需啟動(dòng)任何服務(wù)妆棒,不需要單獨(dú)安裝客戶端澡腾。

Ansible組成結(jié)構(gòu):

  • Ansible

    Ansible的命令工具,核心執(zhí)行工具糕珊;一次性或臨時(shí)執(zhí)行的操作都是通過該命令執(zhí)行动分。

  • Ansible Playbook

是任務(wù)劇本(又稱任務(wù)集),編排定義Ansible任務(wù)集的配置文件红选,由Ansible順序依次執(zhí)行澜公,==yaml格式==。

  • Inventory

    Ansible管理主機(jī)的清單喇肋,默認(rèn)是==/etc/ansible/hosts==文件玛瘸。

  • Modules

    Ansible執(zhí)行命令的功能模塊,截止現(xiàn)在2.9版本共有3387個(gè)模塊苟蹈,==還可以自定義模塊==糊渊。

  • Plugins

    插件,模塊功能的補(bǔ)充慧脱,常有連接類型插件渺绒、循環(huán)插件、變量插件菱鸥、過濾插件宗兼、插件功能用的較少。

  • API

    提供給第三方程序調(diào)用的應(yīng)用程序編程接口氮采。

2殷绍、學(xué)習(xí)使用Ansible方法

==官方文檔==(推薦)、系統(tǒng)幫助文檔(ansible-doc 模塊名稱)鹊漠、網(wǎng)上博客文檔等三種方式

二主到、Ansible安裝流程

1、安裝軟件

yum -y install ansible

2躯概、編寫Inventory文件(管理主機(jī)清單)

(1)基于密碼口令連接

vim /etc/ansible/hosts
#方法一:主機(jī)+端口+用戶密碼
[web]
172.16.1.7 ansible_port=22 ansible_user=root ansible_password='123456'
172.16.1.8 ansible_port=22 ansible_user=root ansible_password='123456'
172.16.1.9 ansible_port=22 ansible_user=root ansible_password=123456'

#方法二:主機(jī)+用戶密碼
[web]
172.16.1.[7:9] ansible_user=root ansible_password='123456'

#方法三:主機(jī)+用戶密碼
[web]
172.16.1.[7:9]
[web:vars]                          #主機(jī)組變量
ansible_password='123456'

(2)基于密鑰連接

ssh-keygen      #ansible主機(jī)創(chuàng)建密鑰
for i in {7..9}; do ssh-copy-id -i 172.16.1.$1; done        #批量分發(fā)公鑰

vim /etc/ansible/hosts
[web]
172.16.1.[7:9]

3登钥、測(cè)試SSH連接是否正常

ssh 172.16.1.7

三、Ansible命令介紹

1娶靡、Ansible命令格式說明

2牧牢、示例

ansible web -m ping         #指定主機(jī)組執(zhí)行命令
ansible 172.16.1.7,172.16.1.9 -m ping       #指定多臺(tái)主機(jī)執(zhí)行命令
ansible all -m ping         #指定所有主機(jī)執(zhí)行命令

四、Ansible常用模塊介紹

1、查看模塊幫助命令A(yù)nsible-doc

# ansible-doc -h
Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-j  以json格式顯示所有模塊信息
-l  列出所有的模塊
-s  查看模塊常用參數(shù)
#命令后直接跟模塊名塔鳍,顯示模塊所有信息

2伯铣、command模塊

ansible默認(rèn)的模塊,注意:shell中的=="<", ">", "|", ";", "&","$"==等特殊字符不能在command模塊中使用轮纫,如果需要使用腔寡,則用shell模塊 。==command模塊中命令別名失效蜡感。==

[root@m01 ~ 11:35:43]# ansible web -m command -a "ls -ld /etc"
172.16.1.7 | CHANGED | rc=0 >>
drwxr-xr-x. 89 root root 8192 Jul 23 20:27 /etc

[root@m01 ~ 11:35:51]# ansible web -a "ls -ld /etc"
172.16.1.7 | CHANGED | rc=0 >>
drwxr-xr-x. 89 root root 8192 Jul 23 20:27 /etc
[root@m01 ~ 11:40:09]# ansible web -a "ifconfig eth0|grep '10.0.0.7'"
172.16.1.7 | FAILED | rc=255 >>
SIOCSIFADDR: No such device
eth0|grep: ERROR while getting interface flags: No such devicenon-zero return code

3蹬蚁、shell模塊

Ansible萬能模塊恃泪,專門用來執(zhí)行shell命令的模塊郑兴,和command模塊參數(shù)基本一樣,都有chdir贝乎、creates情连、removes等參數(shù)。==shell模塊不具備狀態(tài)監(jiān)測(cè)功能览效,會(huì)重復(fù)執(zhí)行==

[root@m01 ~ 11:40:30]# ansible web -m shell -a "ifconfig eth0|grep '10.0.0.7'"
172.16.1.7 | CHANGED | rc=0 >>
        inet 10.0.0.7  netmask 255.255.255.0  broadcast 10.0.0.255

4却舀、copy模塊

用于管理端復(fù)制文件到遠(yuǎn)程主機(jī),并可以設(shè)置權(quán)限锤灿、屬組挽拔、屬主等

(1)示例

1)推送文件到遠(yuǎn)程主機(jī),并修改權(quán)限但校、屬組螃诅、屬主

[root@m01 ~ 12:09:21]# ansible web -m copy -a "src=/tmp/1.txt dest=/tmp mode=0600 owner=www group=www" 
172.16.1.7 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/tmp/1.txt", 
    "gid": 1001, 
    "group": "www", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0600", 
    "owner": "www", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1595650245.49-7981-38715120566747/source", 
    "state": "file", 
    "uid": 1001
}

2)添加內(nèi)容到遠(yuǎn)程主機(jī)文件,并提前生成備份文件

[root@m01 ~ 12:10:46]# ansible web -m copy -a "content='zhenhao' dest=/tmp/1.txt backup=yes"

(2)模塊參數(shù)

src     #指定管理端被推送的文件
dest    #指定推送到客戶端哪兒
mode    #指定推送到客戶端文件的權(quán)限設(shè)置
owner   #指定推送到客戶端文件的屬主設(shè)置
group   #指定推送到客戶端文件的屬組設(shè)置
backup  #對(duì)推送到客戶端的文件進(jìn)行備份
content #添加內(nèi)容到客戶端文件里

5状囱、file模塊

用于對(duì)遠(yuǎn)程主機(jī)文件的處理术裸,創(chuàng)建,刪除亭枷,權(quán)限控制等

(1)示例

1)遠(yuǎn)程主機(jī)創(chuàng)建目錄并修改權(quán)限

[root@m01 ~ 16:49:19]# ansible web -m file -a "path=/tmp/oldboy state=directory mode=0744 owner=www group=www"

2)遠(yuǎn)程主機(jī)創(chuàng)建文件

[root@m01 ~ 16:54:24]# ansible web -m file -a "path=/tmp/2.txt state=touch"

3)遠(yuǎn)程主機(jī)創(chuàng)建軟鏈接文件

[root@m01 ~ 16:55:10]# ansible web -m file -a "src=/tmp/2.txt path=/tmp/hh state=link"

4)遠(yuǎn)程主機(jī)刪除文件

[root@m01 ~ 16:56:45]# ansible web -m file -a "path=/tmp/1.txt state=absent"

5)遞歸修改目錄及子目錄權(quán)限

[root@m01 ~ 17:00:38]# ansible web -m file -a "path=/tmp/oldboy state=directory recurse=yes mode=0600"

(2)模塊參數(shù)

src                 #指定鏈接的文件路徑
path                #要管理設(shè)置的文件路徑
mode                #指定遠(yuǎn)程主機(jī)文件的權(quán)限
owner               #指定遠(yuǎn)程主機(jī)文件的屬主
group               #指定遠(yuǎn)程主機(jī)文件的屬組
recurse             #遞歸修改目錄及子目錄權(quán)限
state:
    absent          #刪除文件及目錄
    directory       #遞歸創(chuàng)建或修改目錄
    file            #默認(rèn)為文件袭艺,但如果文件不存在,不會(huì)創(chuàng)建文件
    hard            #創(chuàng)建或修改硬鏈接
    link            #創(chuàng)建或修改軟鏈接
    touch           #創(chuàng)建文件

6叨粘、script模塊

用于在遠(yuǎn)程主機(jī)上執(zhí)行腳本的模塊猾编,且遠(yuǎn)程主機(jī)上無需腳本

(1)示例

[root@m01 ~ 17:15:31]# cat >/tmp/hostname.sh <<'EOF'
> #!/bin/bash
> echo $(hostname)
> EOF
[root@m01 ~ 17:29:49]# ansible web -m script -a "/tmp/hostname.sh"

7、cron模塊

用于在遠(yuǎn)程主機(jī)上設(shè)置定時(shí)任務(wù)

(1)示例

1)創(chuàng)建定時(shí)任務(wù)

[root@m01 ~ 17:30:14]# ansible web -m cron -a "job='echo $(hostname)' minute=*/5 name=hostname"

2)注釋定時(shí)任務(wù)(==只能注釋ansible創(chuàng)建的定時(shí)任務(wù)==)

[root@m01 ~ 17:41:28]# ansible web -m cron -a "name=hostname disabled=yes job='echo $(hostname)'"

3)刪除定時(shí)任務(wù)(==只能刪除ansible創(chuàng)建的定時(shí)任務(wù)==)

[root@m01 ~ 17:41:54]# ansible web -m cron -a "name=hostname state=absent"

(2)模塊參數(shù)

minute              #多少分鐘
hour                #多少小時(shí)
day                 #多少日
month               #多少月
weekday             #多少周
job                 #執(zhí)行的定時(shí)任務(wù)命令
name                #設(shè)置的定時(shí)任務(wù)名稱
disabled            #對(duì)設(shè)置的定時(shí)任務(wù)進(jìn)行注釋
state:
    absent          #刪除設(shè)置的定時(shí)任務(wù)

8升敲、user模塊

用于對(duì)遠(yuǎn)程主機(jī)用戶的管理袍镀,用戶的創(chuàng)建、刪除冻晤、家目錄苇羡、屬組等設(shè)置

(1)示例

1)創(chuàng)建系統(tǒng)用戶

[root@m01 ~ 17:43:48]# ansible web -m user -a "uid=2020 group=www shell=/sbin/nologin name=www create_home=no"

2)刪除用戶

[root@m01 ~ 17:43:48]# ansible web -m user -a "name=www state=absent"

3)刪除用戶及家目錄

[root@m01 ~ 18:09:19]# ansible web -m user -a "name=hostname state=absent remove=yes"

(2)模塊參數(shù)

create_home:
    no                  #不創(chuàng)建家目錄
group                   #指定用戶的用戶組名稱
home                    #指定用戶家目錄的路徑
name                    #用戶的名稱
remove:
    yes                 #移除用戶家目錄
shell                   #指定用戶shell解釋器路徑
state:
    absent              #刪除用戶
uid                     #設(shè)置用戶uid

9、group模塊

用于對(duì)遠(yuǎn)程主機(jī)用戶組的管理

(1)示例

1)創(chuàng)建用戶組

[root@m01 ~ 18:10:52]# ansible web -m group -a "gid=2020 name=www"

2)刪除用戶組

[root@m01 ~ 18:10:52]# ansible web -m group -a "name=www state=absent"

(2)模塊參數(shù)

gid         #指定用戶組GID
name        #指定用戶組名稱
state:
    absent  #刪除用戶組

10、yum模塊

用于對(duì)遠(yuǎn)程主機(jī)軟件包的管理设江,下載锦茁、安裝、卸載叉存、升級(jí)等操作

(1)示例

1)安裝軟件

[root@m01 ~ 18:31:01]# ansible web -m yum -a "name=htop state=installed"

2)卸載軟件

[root@m01 ~ 18:31:01]# ansible web -m yum -a "name=htop state=removed"

(2)模塊參數(shù)

name            #指定軟件包的名稱
state:   
    installed, present  #安裝軟件包(兩者任選其一都可以)
    removed, absent     #卸載軟件包
    latest              #安裝最新軟件包
list:
    installed   #列出所有已安裝的軟件包
    updates     #列出所有可以更新的軟件包
    repos       #列出所有的yum倉(cāng)庫

11码俩、systemd模塊

服務(wù)模塊,用于對(duì)遠(yuǎn)程主機(jī)服務(wù)進(jìn)行管理歼捏,服務(wù)的啟動(dòng)稿存、關(guān)閉、開機(jī)自啟等 瞳秽,==和service模塊效果一樣==

(1)示例

1)開啟服務(wù)

[root@m01 ~ 18:31:01]# ansible web -m systemd -a "name=nginx state=started"

2)停止服務(wù)

[root@m01 ~ 18:31:01]# ansible web -m systemd -a "name=nginx state=stopped"

3)關(guān)閉開機(jī)自啟服務(wù)

[root@m01 ~ 18:44:42]# ansible web -m systemd -a "name=nginx enabled=no"

4)開啟開機(jī)自啟服務(wù)

[root@m01 ~ 18:46:34]# ansible web -m systemd -a "name=nginx state=started enabled=yes"

(2)模塊參數(shù)

enabled:
    no              #默認(rèn)瓣履,關(guān)閉開機(jī)自啟
    yes             #開啟開機(jī)自啟
name                #服務(wù)名稱
state:
    reloaded        #重新加載服務(wù)
    restarted       #重啟服務(wù)
    started         #開啟服務(wù)
    stopped         #停止服務(wù)

12、mount模塊

用于管理遠(yuǎn)程主機(jī)掛載相關(guān)操作

(1)示例

1)掛載NFS目錄练俐,并寫入fstab文件

[root@m01 ~ 19:15:31]# ansible web -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs opts=defaults state=mounted"

2)卸載掛載目錄袖迎,并刪除寫入fstab的配置

[root@m01 ~ 19:16:13]# ansible web -m mount -a "path=/mnt state=unmounted"

(2)模塊參數(shù)

fstype          #指定掛載系統(tǒng)文件類型
opts            #指定掛載其他參數(shù)設(shè)置
path            #掛載點(diǎn)路徑
src             #需要掛載的設(shè)備路徑
state:
    absent      #卸載掛載點(diǎn)并刪除寫入fstab配置
    mounted     #進(jìn)行掛載并寫入fstab配置
    present     #只寫入fstab配置,不掛載
    unmounted   #只卸載掛載點(diǎn)腺晾,不刪除寫入fstab配置
    remounted   #強(qiáng)制重新掛載

13燕锥、unarchive模塊

用于解壓壓縮包到遠(yuǎn)程主機(jī),或在遠(yuǎn)程主機(jī)上解壓壓縮包

(1)示例

[root@m01 ~ 19:19:05]# ansible 172.16.1.31 -m unarchive -a "src=/opt/sys.tar.gz dest=/opt/"

(2)模塊參數(shù)

src     #指定需要解壓的壓縮包路徑
dest    #指定解壓到哪兒
remote_src:
    yes     #指定壓縮包在遠(yuǎn)程主機(jī)上

14悯蝉、archive模塊

用于打包文件到遠(yuǎn)程主機(jī)归形,或在遠(yuǎn)程主機(jī)上進(jìn)行打包文件

(1)示例

[root@m01 ~ 19:16:13]# ansible 172.16.1.31 -m archive -a "path=/var/log/message dest=/tmp/log.tar.gz format=gz force_archive=true"

(2)模塊參數(shù)

force_archive:
    yes             #強(qiáng)制進(jìn)行壓縮存檔
format:         #指定壓縮格式,默認(rèn)gz
    bz2
    gz
    tar
    xz
    zip
path            #需要壓縮的文件
dest            #壓縮包名
remove:         #壓縮存檔后鼻由,刪除壓縮源文件
    no
    yes

15暇榴、fetch模塊

用于從遠(yuǎn)程主機(jī)上面拉取文件,拉取下來的內(nèi)容會(huì)保留目錄結(jié)構(gòu)嗡靡,一般情況用在收集遠(yuǎn)程主機(jī)的日志文件等

(1)示例

[root@m01 ~ 20:00:59]# ansible web -m fetch -a "src=/tmp/2.txt dest=/tmp"

(2)模塊參數(shù)

src         #指定拉取的文件路徑
dest        #拉取到本地哪兒
#默認(rèn)會(huì)已管理節(jié)點(diǎn)地址創(chuàng)建一個(gè)目錄跺撼,并存放在內(nèi)

16、setup模塊

獲取遠(yuǎn)程主機(jī)信息

(1)示例

[root@m01 ~ 20:04:16]# ansible web -m setup
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讨彼,一起剝皮案震驚了整個(gè)濱河市歉井,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哈误,老刑警劉巖哩至,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蜜自,居然都是意外死亡菩貌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門重荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箭阶,“玉大人,你說我怎么就攤上這事〕鸩危” “怎么了嘹叫?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)诈乒。 經(jīng)常有香客問我罩扇,道長(zhǎng),這世上最難降的妖魔是什么怕磨? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任喂饥,我火速辦了婚禮,結(jié)果婚禮上肠鲫,老公的妹妹穿的比我還像新娘员帮。我一直安慰自己,他們只是感情好滩届,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布集侯。 她就那樣靜靜地躺著被啼,像睡著了一般帜消。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浓体,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天泡挺,我揣著相機(jī)與錄音,去河邊找鬼命浴。 笑死娄猫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的生闲。 我是一名探鬼主播媳溺,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼碍讯!你這毒婦竟也來了悬蔽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤捉兴,失蹤者是張志新(化名)和其女友劉穎蝎困,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倍啥,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡禾乘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虽缕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片始藕。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伍派,到底是詐尸還是另有隱情弟塞,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布拙已,位于F島的核電站决记,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏倍踪。R本人自食惡果不足惜系宫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望建车。 院中可真熱鬧扩借,春花似錦、人聲如沸缤至。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽领斥。三九已至嫉到,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間月洛,已是汗流浹背何恶。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嚼黔,地道東北人细层。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唬涧,于是被迫代替她去往敵國(guó)和親疫赎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354