Ansible安裝配置和基本使用

http://www.tuicool.com/wx/vUfYVfA

一、ansible 安裝

ansible 依賴于python2.6或更高的版本兑燥、paramiko、PyYAML及Jinja2降瞳。

https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

tar xvzf Python-2.7.8.tgz

cd Python-2.7.8

./configure --prefix=/usr/local

make --jobs=grep processor/proc/cpuinfo | wc -l

make install

將python頭文件拷貝到標(biāo)準(zhǔn)目錄,以避免編譯ansible時挣饥,找不到所需的頭文件

cd /usr/local/include/python2.7

cp -a ./* /usr/local/include/

備份舊版本的python,并符號鏈接新版本的python

cd /usr/bin

mv python python2.6

ln -s /usr/local/bin/python

修改yum腳本扔枫,使其指向舊版本的python汛聚,已避免其無法運(yùn)行

vim /usr/bin/yum

!/usr/bin/python --> #!/usr/bin/python2.6

1.1 編譯安裝

解決依賴關(guān)系

yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto

解壓安裝包

https://github.com/ansible/ansible/archive/v1.7.2.tar.gz

tar xf ansible-1.5.4.tar.gz # cd ansible-1.5.4

編譯安裝

python setup.py build # python setup.py install

拷貝配置文件

mkdir /etc/ansible # cp -r examples/* /etc/ansible

1.2 rpm包安裝

使用阿里云鏡像源即可,這里為了方便使用茧吊,就直接使用yum安裝了贞岭。

Fedora 用戶可直接安裝Ansible, 但RHEL或CentOS用戶,需要 配置 EPEL # yum install -y epel-release # yum install -y ansible

注意:不同版本的ansible的功能差異可能較大。

二搓侄、配置

配置文件:/etc/ansible/ansible.cfg

hostfile=/etc/ansible/hosts #指定默認(rèn)hosts配置的位置 host_key_checking = False #不進(jìn)行host_key檢查,省去目標(biāo)key發(fā)生變化時輸入(yes/no)的步驟 ask_pass=True # 每次執(zhí)行ansible命令是否詢問ssh密碼 ask_sudo_pass=True # 每次執(zhí)行ansible命令時是否詢問sudo密碼

主機(jī)清單:/etc/ansible/hosts

主程序:ansible、ansible paly-book话速、ansible-doc

1讶踪、將要管理的主機(jī)納入 /etc/ansible/hosts配置文件中,可以填寫IP或是主機(jī)名

[WebServers] 10.10.10.3 10.10.10.4

2泊交、.基于ssh的方式與被管理的主機(jī)進(jìn)行通信乳讥,在管理的主機(jī)上(部署ansible的主機(jī)上)生成一對非對稱密鑰,將公鑰發(fā)給被管理的主機(jī)廓俭。

a云石,生成密鑰對:ssh-keygen -t rsa

b,將密鑰發(fā)放到要管理的主機(jī):ssh-copy-id -i 10.10.10.3 或 ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.3

3研乒、使用ansible命令測試

ansible all -m ping

[root@wlm yum.repos.d]# ansible all -m ping 10.10.10.4 | SUCCESS => { "changed": false, "ping": "pong" }

三汹忠、基本使用

1、常用命令

ansible-doc 命令:獲取模塊列表雹熬、模塊使用格式宽菜。

ansible-doc -l :獲取列表

ansible-doc -s module_name:獲取指定模塊信息

2、ansible 命令格式

ansible <host-pattern> [-f forks] [-m module_name] [-a args]

<host-pattern> 指明管控主機(jī)竿报,以模式表示或者直接指定ip铅乡,必須事先指定在文件中;all所有

[-f forks] 指明每批管控多少主機(jī)烈菌,默認(rèn)是5個主機(jī)一批次

[-m module_name] 使用何種模塊操作阵幸,所有操作都需要通過模塊指定

[-a args] 指明模塊專用參數(shù)花履;args 一般是 key=value格式。注:command模塊的參數(shù)不是kv模式挚赊,而是直接給出要執(zhí)行的命令诡壁。

注意:<host-pattern> 默認(rèn)讀取/etc/ansible/hosts,也可以指明自定義文件路徑 -iPATH咬腕,--inventory=PATH:指明使用的 host inventory文件路徑欢峰;

3、常用模塊介紹

1涨共、command模塊:遠(yuǎn)程主機(jī)上運(yùn)行命令

例:ansible hosts -m command -a "ls /tmp" 注:command模塊也可以省略纽帖。

給遠(yuǎn)程主機(jī)添加用戶、設(shè)置密碼:

ansible hosts -a 'useradd user1'

ansible hosts -a 'echo abc | passwd --stdin user1'

直接這樣使用不會成功举反,只會添加用戶密碼不會設(shè)置成功懊直,不支持管道符,下面介紹shell模塊

2室囊、shell模塊:遠(yuǎn)程主機(jī)在shell進(jìn)程下運(yùn)行命令魁索,支持shell特性粗蔚,也支持管道符鹏控。

ansible hosts -m shell -a 'echo abc | passwd --stdin user1'

10.10.10.4 | SUCCESS | rc=0 >>

3、copy模塊:把當(dāng)前主機(jī)文件復(fù)制到遠(yuǎn)程主機(jī)位置抖僵,可以指定mode耍群、own、group

ansible hosts -m copy -a 'src=/tmp/abc.txt dest=/root/ mode=644 owner=ansible group=root'

10.10.10.4 | SUCCESS => { "changed": true, "checksum": "325287cee456533bf76025312e5d05e842cb43a9", "dest": "/root/abc.txt", "gid": 0, "group": "root", "md5sum": "1c6d47c6e4d59c630751b47fff140b89", "mode": "0644", "owner": "ansible", "size": 15, "src": "/root/.ansible/tmp/ansible-tmp-1484639082.19-114656107854348/source", "state": "file", "uid": 0 }

4柠座、cron模塊:在遠(yuǎn)程主機(jī)指定crontab周期性計劃任務(wù)

minute= hour= day= month= weekday= job= name= (必須填寫) state=

ansible all -m cron -a "minute=*/10 job='/sbin/ntpdate 10.10.10.10 & >/dev/null' name=synctime" 可使用crontab -l查看

在管理的主機(jī)上可以刪除制定的計劃任務(wù)

ansible all -m cron -a 'state=absent name=synctome'

10.10.10.4 | SUCCESS => { "changed": true, "envs": [], "jobs": [] }

5嚷闭、fetch模塊:和copy相反赖临,從遠(yuǎn)程主機(jī)拷貝文件到本地主機(jī)

ansible all -m fetch -a "src=/root/abc.txt dest=/root/kel/ flat=yes"

可以不要flat=yes參數(shù)兢榨,但作用:

當(dāng)dest=/root/kel/ ,abc.txt會保存在/root/kel/目錄下

當(dāng)dest=/root/kel ,會拷貝abc.txt文件吵聪,并命名成kel

6、file模塊:file模塊包含了文件帽蝶、文件夾励稳、超級鏈接類的創(chuàng)建驹尼、拷貝庞呕、移動千扶、刪除

ansible all -m file -a

修改文件的所有組澎羞、人妆绞、權(quán)限

path=/etc/foo.conf owner=foo group=foo mode=0644

操作連接的案例

src=/file/to/link/to dest=/path/ro/symlink owner=foo group=foo state=link

參數(shù)化案例

src=/tmp/{{item.path}} dest={{item.dest}} state=link with_items:

  • { path: 'x',dest: 'y' } - { path: 'z',dest: 'k' }

使用touch創(chuàng)建一個空文件并定義權(quán)限

path=/etc/foo.conf state=touch mode="u=rw,g=w,o=r"

touch一個空文件枫攀,并修改權(quán)限

path=/etc/foo.conf state=touch mode="u+w,g-w,o-rw"

7、yum模塊:用于yum安裝安裝和卸載

ansible all -m yum -a "name=httpd"

8图焰、service模塊:服務(wù)管理

ansible all -m service -a "name=httpd state=started/stopped enabled=yes"

9技羔、user/group模塊:user模塊管理用戶;group模塊管理group

ansible all -m user -a 'name=user1 group=root' 添加用戶藤滥,更改屬組

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

ansible all -m group -a "name=test1 state=absent" 刪除用戶組

四拙绊、Playbook劇本

playbook 是ansible更強(qiáng)大的配置管理組件标沪,實(shí)現(xiàn)基于文本文件編排執(zhí)行的多個任務(wù),且多次重復(fù)執(zhí)行航攒。playbook組織格式為使用YAML語言來編寫的趴梢。

playbook 是由一個或多個“play”組成的列表坞靶。play的主要功能在于將事先歸為一組的主機(jī)裝扮成事先通過ansible中的task定義好的角色。從根本上講瘾敢,所謂的task無非是調(diào)用ansible的一個module簇抵。將多個play組織在一個playbook中射众,即可以讓他們聯(lián)通起來按事先編排的機(jī)制生效。

1典蜕、例子:

在ansible主機(jī)上的root目錄下創(chuàng)建httpd目錄愉舔,將本機(jī)的httpd.conf文件拷貝到該目錄下伙菜,修改配置文件里的監(jiān)聽端口是8081

vim web.yaml

  • hosts: webservers

remote_user:root #root前不能有空格

tasks: #任務(wù)列表

  • name:install httpd package #設(shè)置任務(wù)名稱非必要

yum name=httpd state=present #yum后的: 刪除掉

  • name:install configure file

copy src=/root/httpd/httpd.conf dest=/etc/httpd/conf

  • name:start httpd service

service name=httpd state=started

注意:yaml文件中支持#;下面的操作要跟上面的name對齊躺翻。

測試:

ansible-playbook --check playbook :只檢測可能會發(fā)生的改變公你,但不真正執(zhí)行操作

ansible-playbook playbook :直接執(zhí)行

ansible-playbook --list-hosts :列出運(yùn)行任務(wù)的主機(jī)

image.png

2陕靠、playbook介紹

設(shè)置在特定條件下觸發(fā):

a脱茉,某任務(wù)的狀態(tài)在運(yùn)行后為changed時琴许,可通過“notify”通知給相應(yīng)的handles榜田;

handles:任務(wù)在特定條件下觸發(fā);接收到其他任務(wù)的通知是被觸發(fā)净捅;

b辩块,任務(wù)可以通過“tags”打標(biāo)簽废亭,而后可在ansible-playbook命令上使用-t指定進(jìn)行調(diào)用;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捉腥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子坏匪,更是在濱河造成了極大的恐慌撬统,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凭迹,死亡現(xiàn)場離奇詭異,居然都是意外死亡脾猛,警方通過查閱死者的電腦和手機(jī)猛拴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門愉昆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來麻蹋,“玉大人扮授,你說我怎么就攤上這事糙箍。” “怎么了抖格?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵雹拄,是天一觀的道長滓玖。 經(jīng)常有香客問我势篡,道長禁悠,這世上最難降的妖魔是什么碍侦? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任瓷产,我火速辦了婚禮,結(jié)果婚禮上株旷,老公的妹妹穿的比我還像新娘灾常。我一直安慰自己铃拇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布雕什。 她就那樣靜靜地躺著贷岸,像睡著了一般偿警。 火紅的嫁衣襯著肌膚如雪螟蒸。 梳的紋絲不亂的頭發(fā)上七嫌,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音挽放,去河邊找鬼辑畦。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潦刃。 我是一名探鬼主播分扎,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼畏吓,長吁一口氣:“原來是場噩夢啊……” “哼菲饼!你這毒婦竟也來了宏悦?” 一聲冷哼從身側(cè)響起饼煞,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诗越,沒想到半個月后砖瞧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚷狞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年块促,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片感耙。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡褂乍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出即硼,到底是詐尸還是另有隱情逃片,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布只酥,位于F島的核電站,受9級特大地震影響损离,放射性物質(zhì)發(fā)生泄漏貌踏。R本人自食惡果不足惜秉氧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一攘滩、第九天 我趴在偏房一處隱蔽的房頂上張望厚掷。 院中可真熱鬧,春花似錦、人聲如沸冬竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至立莉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奇适,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工贷祈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呜达,地道東北人挤忙。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓矮冬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親恢筝。 傳聞我的和親對象是個殘疾皇子趾撵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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