day50-Ansible基礎(chǔ)知識(shí)

1.什么是ansible

可以通過(guò)一個(gè)命令行完成一系列的操作

2.ansible優(yōu)點(diǎn)和特點(diǎn)

(1)優(yōu)點(diǎn):
①批量執(zhí)行遠(yuǎn)程命令
②批量配置軟件服務(wù)
③實(shí)現(xiàn)軟件開(kāi)發(fā)功能
④編排高級(jí)的IT任務(wù)
(2)特點(diǎn)
①容易學(xué)習(xí)绝页,無(wú)代理模式
②操作靈活
③簡(jiǎn)單易用
④安全可用
⑤移植性高

3.ansible 基礎(chǔ)架構(gòu)---控制端 被控端 inventory ad-hoc playbook 連接協(xié)


Image 了.png

4.ansible 配置文件 優(yōu)先級(jí)

ANSIBLE_CONFIG
ansible.cfg ---當(dāng)前項(xiàng)目目錄中
.ansible.cfg ---當(dāng)前執(zhí)行用戶的家目錄

/etc/ansible/ansible.cfg
例題:

[root@manager ~]# export
ANSIBLE_CONFIG="/tmp/ansible.cfg"
[root@manager ~]# touch /tmp/ansible.cfg
[root@manager ~]# mkdir /project1
[root@manager ~]# cd /project1/
[root@manager project1]# touch ansible.cfg
[root@manager project2]# ansible --version
ansible 2.8.5
config file = /project1/ansible.cfg
[root@manager /]# mkdir /project2
[root@manager /]# cd /project2/
[root@manager project2]# touch ansible.cfg
[root@manager project1]# ansible --version
ansible 2.8.5
config file = /project2/ansible.cfg
[root@manager tmp]# touch ~/.ansible.cfg
[root@manager tmp]# ansible --version
ansible 2.8.5
config file = /root/.ansible.cfg

5.ansible inventory主機(jī)清單

(1)基于ip地址+密碼的方式

yum install ansible -y
mkdir projectl 
cd projectl 
cp /etc/ansible/ansible.cfg ansible.cfg
vi ansible.cfg
host_key_checking = False
vi hosts
[webservers]
172.16.1.7 ansible_ssh_user='root'
ansible_ssh_pass='1'
172.16.1.8 ansible_ssh_user='root'
ansible_ssh_pass='1'

(2)基于密鑰連接妆距,需要先創(chuàng)建公鑰和私鑰凰锡,并下發(fā)公鑰至被
控端

ssh-keygen t rsa -C"111"
[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

①主機(jī)+端口+密鑰

[root@manager ~]# cat hosts
[webservers]
172.16.1.7
172.16.1.8
ansible webservers --list-hosts  -i hosts(查看成員)
例如:[root@manager project1]# ansible webservers --listhosts -i hosts
hosts (2):
172.16.1.7

ansible webservers -m ping -i hosts(ping客戶機(jī)通不通)

(3)主機(jī)組使用方式

[lbservers] #定義lbservers組
172.16.1.5
172.16.1.6
[webservers] #定義webserver組
172.16.1.7
172.16.1.8
[servers:children] #定義servers組包括兩個(gè)子組
[lbservers,webserver]
lbservers
webserver

Ansible Ad-Hoc

6.ansible ad-Hoc 單條命令

Image ansible.png

(1)模塊名稱

command (執(zhí)行命令 默認(rèn) 不支持管道)
shell (執(zhí)行命令 支持管道)
yum_reposity (yum倉(cāng)庫(kù)配置)
yum (yum安裝軟件)
get_url (和linux的wget一致)
copy (拷貝配置文件)
service|systemd (啟動(dòng)服務(wù))
user(創(chuàng)建用戶)
group(創(chuàng)建組)
file (創(chuàng)建目錄 創(chuàng)建文件 遞歸授權(quán))
mount (掛載)
cron (定時(shí)任務(wù))
firewalld (防火墻)
selinux (selinuix)

7.command

ansible webservers -a "ps axu|grep nginx" -i hosts
#不支持管道(簡(jiǎn)單命令)

8.shell

ansible webservers -m shell -a "ps axu|grep nginx" -
i hosts #支持管道

9.yum

state:
present 安裝
absent 卸載
latest 最新
enablerepo #指定使用按個(gè)倉(cāng)庫(kù)
disablerepo #排除使用哪個(gè)倉(cāng)庫(kù)

①安裝最新的httpd服務(wù)

[root@manager project1]# ansible webservers -m yum
-a "name=httpd state=latest disablerepo=webtaticphp" -i hosts

②移除httpd服務(wù)

[root@manager project1]# ansible webservers -m yum
-a "name=httpd state=absent disablerepo=webtaticphp" -i hosts

③安裝httpd指定從按個(gè)倉(cāng)庫(kù)安裝

- name: install the latest version of Apache from
the testing repo
[root@manager project1]# ansible webservers -m yum
-a "name=httpd state=latest enablerepo=testing" -i
hosts

④通過(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

⑤軟件包必須在被控端主機(jī)

- name: install nginx rpm from a local file (軟件包
必須在被控端主機(jī))
[root@manager project1]# ansible webservers -m yum
-a "name=/root/zabbix-agent-4.0.0-2.el7.x86_64.rpm
state=present disablerepo=webtatic-php" -i hosts

10.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

11.service|systemd

state
started #啟動(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

12.file

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

例題:
①準(zhǔn)備站點(diǎn)

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

②準(zhǔn)備站點(diǎn)代碼

[root@manager project1]# ansible webservers -m copy
-a "src=./file/index.html
dest=/code/ansible/index.html owner=www group=www
mode=644" -i hosts

13.user group

(1)group 整數(shù)int 小數(shù) flot dasdsa str 真|假
bool
例題:

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

(2)user

name #名稱
uid #uid
group #組名或gid
create_home #是否創(chuàng)建家目錄
system #是否作為系統(tǒng)組
shell #指定登錄shell
state
present
absent
remove
groups
append
password

例題:
① 程序使用 www 666 666 /sbin/nologin /home
-->無(wú)

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

②正常用戶 oldxu 1000 1000 /bin/bash
/home/oldxu

[root@manager project1]# ansible webservers -m user
-a "name=oldxu" -i hosts

③移除oldxu用戶,并刪除家目錄所有內(nèi)容.

[root@manager project1]# ansible webservers -m user
-a "name=oldxu state=absent remove=yes" -i hosts

④ 創(chuàng)建 other用戶.有兩個(gè)附加組root bin,創(chuàng)建家目錄,指定登錄
shell,設(shè)定密碼123

生成一個(gè)密碼
ansible all -i localhost, -m debug -a "msg={{ '123'
| password_hash('sha512', 'mysecretsalt') }}"
[root@manager project1]# ansible webservers -m user
-a 'name=other groups='root,bin' create_home=yes
shell=/bin/bash
password="$6$mysecretsalt$gIIYs0Xgc7sSQkH.zKaz8/Afa
MomYzR1QZYtccwmJcUt8VpLq4D055UCCX4MlwgePOP80ZRwhppv
BF72RIAVi/"' -i hosts

14. mount

例題:
(1)提前準(zhǔn)備好nfs服務(wù)端

[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/zrlog 172.16.1.0/24
/data/zh 172.16.1.0/24
/data/edu 172.16.1.0/24
/data/blog 172.16.1.0/24

(2)用管理端操作被控端,讓被控端掛載nfs存儲(chǔ)數(shù)據(jù)

present #寫入/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
[root@manager project1]# ansible webservers -m
mount -a "src=172.16.1.31:/data/zrlog
path=/test_zrlog fstype=nfs opts=defaults
state=unmounted" -i hosts

15.cron

minute --分
hour ---時(shí)
day --日
month ---月
week ---周
job 

例題:

[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
[root@manager project1]# ansible webservers -m cron
-a 'name=test job="/bin/bash
/server/scripts/test.sh &>/dev/null"' -i hosts
[root@manager project1]# ansible webservers -m
cron -a 'name=test job="/bin/bash
/server/scripts/test.sh &>/dev/null" state=absent'
-i hosts

16.firewalld

例題:

[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

17.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閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寄狼,死亡現(xiàn)場(chǎng)離奇詭異丁寄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)泊愧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門伊磺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人删咱,你說(shuō)我怎么就攤上這事屑埋。” “怎么了痰滋?”我有些...
    開(kāi)封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵摘能,是天一觀的道長(zhǎng)续崖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)团搞,這世上最難降的妖魔是什么严望? 我笑而不...
    開(kāi)封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮逻恐,結(jié)果婚禮上像吻,老公的妹妹穿的比我還像新娘。我一直安慰自己梢莽,他們只是感情好萧豆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著昏名,像睡著了一般涮雷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轻局,一...
    開(kāi)封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天洪鸭,我揣著相機(jī)與錄音,去河邊找鬼仑扑。 笑死览爵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的镇饮。 我是一名探鬼主播蜓竹,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼储藐!你這毒婦竟也來(lái)了俱济?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钙勃,失蹤者是張志新(化名)和其女友劉穎蛛碌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辖源,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔚携,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了克饶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝蜒。...
    茶點(diǎn)故事閱讀 38,650評(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,936評(píng)論 3 313
  • 文/蒙蒙 一丽涩、第九天 我趴在偏房一處隱蔽的房頂上張望棺滞。 院中可真熱鬧,春花似錦矢渊、人聲如沸继准。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)移必。三九已至,卻和暖如春毡鉴,著一層夾襖步出監(jiān)牢的瞬間崔泵,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工猪瞬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留憎瘸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓陈瘦,卻偏偏與公主長(zhǎng)得像幌甘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痊项,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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