51 ansible

1.什么是Ansible顽频?

Ansible 是一個(gè)配置管理和應(yīng)用部署工具,即在管理主機(jī)上操作一些命令就能在節(jié)點(diǎn)主機(jī)上進(jìn)行相應(yīng)的動(dòng)作衰絮。

2.Ansible的特點(diǎn)?

  • no angents:被管控節(jié)點(diǎn)無(wú)需安裝agent
  • no server:無(wú)服務(wù)端翻伺,使用時(shí)直接調(diào)用命名
  • modules in any languages:基于模塊工作段多,可以使用任意語(yǔ)言開(kāi)發(fā)模式
  • 易讀的語(yǔ)法:基于yaml語(yǔ)法編寫(xiě)playbook
  • 基于推送模式:不同于puppet的拉取模式烧给,直接由調(diào)用者控制變更在服務(wù)器上發(fā)生的時(shí)間
  • 模塊是冪等性的:定義的任務(wù)已存在則不會(huì)做任何事情迈倍,意味著在同一臺(tái)服務(wù)器上多執(zhí)行同一個(gè)playbook是安全的

3.Ansible中ansible.cfg配置文件 優(yōu)先級(jí)

  • ANSIBLE_CFG:首先鞋屈,Ansible命令會(huì)先檢查環(huán)境變量追城,及這個(gè)環(huán)境變量將指向的配置文件刹碾;(export ANSIBLE_CONFIG=xxxx配置文件)
  • ./ansible.cfg:其次,將會(huì)檢查當(dāng)前目錄下的ansible.cfg配置文件座柱;
  • ~/.ansible.cfg:再次迷帜,將會(huì)檢查當(dāng)前用戶home目錄下的.ansible.cfg配置文件;
  • /etc/ansible/ansible.cfg:最后色洞,將會(huì)檢查在安裝Ansible時(shí)自動(dòng)生產(chǎn)的配置文件

ansible配置文件的參數(shù)

    inventory = /etc/ansible/hosts      這個(gè)參數(shù)表示資源清單inventory文件的位置
    library = /usr/share/ansible        指向存放Ansible模塊的目錄戏锹,支持多個(gè)目錄方式,只要用冒號(hào)(:)隔開(kāi)就可以
    forks = 5                           并發(fā)連接數(shù)锋玲,默認(rèn)為5
    sudo_user = root                    設(shè)置默認(rèn)執(zhí)行命令的用戶
    remote_port = 22                    指定連接被管節(jié)點(diǎn)的管理端口景用,默認(rèn)為22端口,建議修改,能夠更加安全
    host_key_checking = False           設(shè)置是否檢查SSH主機(jī)的密鑰伞插,值為T(mén)rue/False割粮。關(guān)閉后第一次連接不會(huì)提示配置實(shí)例
    timeout = 60                        設(shè)置SSH連接的超時(shí)時(shí)間,單位為秒
    log_path = /var/log/ansible.log     指定一個(gè)存儲(chǔ)ansible日志的文件(默認(rèn)不記錄日志)

4.定義ansible inventory(主機(jī)列表)

ansible的主要功用在于批量主機(jī)操作媚污,為了便捷地使用其中的部分主機(jī)舀瓢,可以在inventory file中將其分組命名。默認(rèn)的inventory file為/etc/ansible/hosts耗美。
inventory file可以有多個(gè)京髓。

  • 1.基于IP地址+密碼的方式
[webservers]
172.16.1.7ansible_ssh_user='root'
ansible_ssh_pass='1'
172.16.1.8ansible_ssh_user='root'
ansible_ssh_pass='1'
  • 2.基于密鑰連接,需要先創(chuàng)建公鑰和私鑰商架,并下發(fā)公鑰至被控端
[root@manager ~]ssh-copy-id -I ~/.ssh/id_rsa.pub root@172.16.1.7
[root@manager ~]ssh-copy-id -I ~/.ssh/id_rsa.pub root@172.16.1.8
[root@manager ~]cat hosts
[webservers]
172.16.1.7
172.16.1.8
  • 3.主機(jī)組使用方式
[lbservers] #定義lbservers組
172.16.1.5
172.16.1.6
[webservers] #定義webservers組
172.16.1.7
172.16.1.8
[servers:children] #定義servers組包括兩個(gè)子組
[lbservers,webservers]
lbservers
webserver

5.Ansible任務(wù)執(zhí)行模式

  • ad-hoc模式(點(diǎn)對(duì)點(diǎn)模塊)
    使用單個(gè)模塊,支持批量執(zhí)行單條命令,相當(dāng)與在bash中執(zhí)行一句shell命令
  • playbook模式(劇本模式)
    ansible主要的管理方式,通過(guò)多個(gè)task的集合完成一類功能,可以理解為多個(gè)ad-hoc的配置文件
ansible ad-Hoc 單條命令
image.png
command                            執(zhí)行命令     默認(rèn)   不支持管道
shell                              執(zhí)行命令              支持管道  

yum_reposity                       yum倉(cāng)庫(kù)配置
yum                                yum安裝軟件
copy                               拷貝配置文件
service|systemd                    啟動(dòng)服務(wù)
file                               創(chuàng)建目錄 創(chuàng)建文件 遞歸授權(quán)
mount                              掛載
cron                               定時(shí)任務(wù)
firewalld                          防火墻
selinux                  

1.command
ansible webservers -a "ps axu|grep nginx" -i hosts 不支持管道(簡(jiǎn)單命令)
2.shell
ansible webservers -m shell -a "ps axu|grep nginx" - i hosts 支持管道
3.yum

name 服務(wù)名
state:
        present 安裝
        absent 卸載
        latest 最新
enablerepo 指定使用按個(gè)倉(cāng)庫(kù)
disablerepo 排除使用哪個(gè)倉(cāng)庫(kù)
  • 1.安裝最新的httpd服務(wù)
    [root@manager project1] # ansible webservers -m yum
    -a "name=httpd state=latest disablerepo=webtaticphp" -i hosts
  • 2.移除httpd服務(wù)
    [root@manager project1]# ansible webservers -m yum
    -a "name=httpd state=absent disablerepo=webtaticphp" -i host
  • 3.安裝httpd指定從哪個(gè)倉(cāng)庫(kù)安裝
    [root@manager project1]# ansible webservers -m yum
    -a "name=httpd state=latest enablerepo=testing" -i
    hosts
  • 4.通過(guò)URL方式進(jìn)行安裝
    [root@manager project1]# ansible webservers -m yum
    -a "name=https://mirrors.aliyun.com/zabbix/zabbix/3.0/
    rhel/7/x86_64/zabbix-agent-3.0.0-1.el7.x86_64.rpm
    state=present disablerepo=webtatic-php" -i hosts

4.copy

src 本地路徑,可以是相對(duì),可以是絕對(duì)
dest 目標(biāo)位置
owner 屬主
group 屬組
mode 權(quán)限
backup 備份

[root@manager project1]# ansible webservers -m copy
-a "src=./file/ansible.oldxu.com.conf
dest=/etc/nginx/conf.d/ansible.oldxu.com.conf
owner=root group=root mode=644" -i hosts

[root@manager project1]# ansible webservers -m copy
-a "src=./file/ansible.oldxu.com.conf
dest=/etc/nginx/conf.d/ansible.oldxu.com.conf
owner=root group=root mode=644 backup=yes" -i hosts

5.service|systemd

state
      started:?jiǎn)?dòng)
      stopped:停止
      restarted:重啟
      reloaded:重載

enabled          是否開(kāi)機(jī)自啟
        yes            是
        no              否

[root@manager project1]# ansible webservers -m
systemd -a "name=nginx state=restarted enabled=yes"
-i hosts

6.file
創(chuàng)建/code/ansible

path       路徑
state   
    touch            創(chuàng)建文件
    directory       創(chuàng)建目錄
owner      屬主
group       屬組
mode        權(quán)限

[root@manager project1]# ansible webservers -m file
-a "path=/code/ansible state=directory mode=755
owner=www group=www" -i hosts

7.user group
[root@manager project1]# ansible webservers -m
group -a "name=www gid=666 state=present" -i hosts

user

name                    名稱
uid                      uid
group                    組名或gid
create_home              是否創(chuàng)建家目錄
system                   是否作為系統(tǒng)組
shell                    指定登錄shell
state
      present             創(chuàng)建用戶
      adsent              刪除用戶不刪除家目錄
remove                   移除用戶并刪除家目錄
groups                   添加附加組                 
password               創(chuàng)建密碼

[root@manager project1]# ansible webservers -m user
-a "name=www uid=666 group=666 create_home=no
shell=/sbin/nologin state=present" -i hosts

8.mount

present             寫(xiě)入/etc/fstab
absent              卸載/etc/fstab
mounted             臨時(shí)掛載
unmounted           卸載當(dāng)前掛載

掛載過(guò)程中,如果目錄不存在,則會(huì)創(chuàng)建該目錄
[root@manager project1]# ansible webservers -m
mount -a "src=172.16.1.31:/data/zrlog
path=/test_zrlog fstype=nfs opts=defaults
state=mounted" -i hosts

9.cron

minute          分
hour            時(shí)
day             日
month           月
week            周
job             添加任務(wù)    

[root@manager project1]# ansible webservers -m cron
-a 'name=test_job minute=00 hour=02 job="/bin/bash
/server/scripts/client_to_data_server.sh
&>/dev/null"' -i hosts

10.firewalld

開(kāi)啟防火墻

[root@manager project1]# ansible webservers -m
systemd -a "name=firewalld state=started" -i hosts

針對(duì)服務(wù)

[root@manager project1]# ansible webservers -m
firewalld -a "service=http state=enabled" -i hosts

針對(duì)端口

[root@manager project1]# ansible webservers -m
firewalld -a "port=9999/tcp state=enabled" -i hosts

針對(duì)source來(lái)源

ansible webservers -m firewalld -a "source=172.16.1.0/24
state=disabled permanent=no" -i hosts

11.selinux
[root@manager project1]# ansible webservers -m
selinux -a "state=disabled" -i hosts

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末堰怨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛇摸,更是在濱河造成了極大的恐慌备图,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赶袄,死亡現(xiàn)場(chǎng)離奇詭異揽涮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)饿肺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)蒋困,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人敬辣,你說(shuō)我怎么就攤上這事雪标。” “怎么了购岗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵汰聋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喊积,道長(zhǎng)烹困,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任乾吻,我火速辦了婚禮髓梅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绎签。我一直安慰自己枯饿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布诡必。 她就那樣靜靜地躺著奢方,像睡著了一般搔扁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蟋字,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天稿蹲,我揣著相機(jī)與錄音,去河邊找鬼鹊奖。 笑死苛聘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忠聚。 我是一名探鬼主播设哗,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼两蟀!你這毒婦竟也來(lái)了网梢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤垫竞,失蹤者是張志新(化名)和其女友劉穎澎粟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體欢瞪,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年徐裸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遣鼓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡重贺,死狀恐怖骑祟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情气笙,我是刑警寧澤次企,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站潜圃,受9級(jí)特大地震影響缸棵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谭期,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一堵第、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隧出,春花似錦踏志、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春圆雁,著一層夾襖步出監(jiān)牢的瞬間忍级,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工摸柄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颤练,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓驱负,卻偏偏與公主長(zhǎng)得像嗦玖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子跃脊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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