Ansible配置管理系統(tǒng)

Ansible是一個(gè)配置管理系統(tǒng)configuration management system稚疹,
你只需要可以使用ssh訪問(wèn)你的服務(wù)器或設(shè)備就行秫筏。
1. 安裝軟件
2. 配置服務(wù)

第1章 Ansible能做什么

ansible可以幫助我們完成一些批量任務(wù),或者完成一些需要經(jīng)常重復(fù)的工作。
比如:同時(shí)在100臺(tái)服務(wù)器上安裝nfs服務(wù),并在安裝后啟動(dòng)服務(wù)职辅。
比如:將某個(gè)文件一次性拷貝到100臺(tái)服務(wù)器上。
比如:每當(dāng)有新服務(wù)器加入工作環(huán)境時(shí)聂示,你都要為新服務(wù)器部署某個(gè)服務(wù)域携,也就是說(shuō)你需要經(jīng)常重復(fù)的完成相同的工作。
這些場(chǎng)景中我們都可以使用到ansible鱼喉。

1.1 Ansible軟件特點(diǎn)

1.ansible不需要單獨(dú)安裝客戶端秀鞭,SSH相當(dāng)于ansible客戶端。
2.ansible不需要啟動(dòng)任何服務(wù)扛禽,僅需安裝對(duì)應(yīng)工具即可锋边。
3.ansible依賴大量的python模塊來(lái)實(shí)現(xiàn)批量管理。
4.ansible配置文件/etc/ansible/ansible.cfg

1.2 實(shí)現(xiàn)從管理機(jī)m01到其他機(jī)器的密鑰認(rèn)證

ansible借助公鑰批量管理

1.2.1 利用非交換式工具實(shí)現(xiàn)批量分發(fā)公鑰與批量管理服務(wù)器

[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7

1.3配置步驟

1.3.1安裝ansible
[root@m01 ~]# yum install ansible -y

2.配置ansible
[root@m01 ~]# vim /etc/ansible/hosts
[oldboy]
172.16.1.31
172.16.1.41

3.驗(yàn)證ansible
ansible是通過(guò)ssh端口探測(cè)通信
[root@m01 ~]# ansible oldboy -m ping
172.16.1.7 | SUCCESS => {
"changed": false, 
"ping": "pong"
}
172.16.1.31 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.16.1.41 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

1.3.2 批量執(zhí)行命令
[root@m01 ~]# ansible oldboy -m command -a "df -h" 

如果沒(méi)有給對(duì)應(yīng)的主機(jī)下發(fā)公鑰编曼,可以使用密碼的方式進(jìn)行添加
172.16.1.41 ansible_ssh_user=’root’ ansible_ssh_pass=’1′ ansible_ssh_port=’22’

1.4定義主機(jī)清單

[web]
172.16.1.7

[nfs]
172.16.1.31

[backup]
172.16.1.41

[oldboy:children]
web
nfs
backup

[root@m01 ~]# ansible web --list-hosts          #web
  hosts (1):
    172.16.1.7
[root@m01 ~]# ansible nfs --list-hosts          #nfs
  hosts (1):
    172.16.1.31
[root@m01 ~]# ansible backup --list-hosts       #rsync
  hosts (1):
    172.16.1.41
[root@m01 ~]# ansible oldboy --list-hosts       #集中所有的小組豆巨,用于執(zhí)行一些基礎(chǔ)的配置
hosts (3):
172.16.1.31
172.16.1.41
172.16.1.7

1、命令 -> 文件 = 腳本
2掐场、模塊 -> 文件 = 劇本

模塊 作用
command 執(zhí)行命令
shell 執(zhí)行命令(支持管道符)
yum 安裝軟件模塊
copy 配置模塊
service 啟動(dòng)服務(wù)模塊
user 用戶管理
file 創(chuàng)建目錄往扔,創(chuàng)建文件,往文件寫內(nèi)容
cron 定時(shí)任務(wù)
mount 掛載
command命令模塊
默認(rèn)模塊, 執(zhí)行命令
[root@m01 ~]# ansible oldboy  -a "hostname"

如果需要一些管道操作熊户,則使用shell
[root@m01 ~]# ansible oldboy -m shell -a "ifconfig|grep eth0" -f 50

-f =forks /etc/ansible/ansible.cfg #結(jié)果返回的數(shù)量

yum安裝模塊
推送腳本文件至遠(yuǎn)程萍膛,遠(yuǎn)程執(zhí)行腳本文件
[root@m01 ~]# ansible oldboy -m yum -a "name=httpd state=installed"
name    ---指定要安裝的軟件包名稱
state   ---指定使用yum的方法
installed,present   ---安裝軟件包
removed嚷堡,absent      ---移除軟件包
latest               ---安裝最新軟件包

copy模塊
推送文件模塊
[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt owner=www group=www mode=0600"

在推送覆蓋遠(yuǎn)程端文件前蝗罗,對(duì)遠(yuǎn)端已有文件進(jìn)行備份,按照時(shí)間信息備份
[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes"

直接向遠(yuǎn)端文件內(nèi)寫入數(shù)據(jù)信息蝌戒,并且會(huì)覆蓋遠(yuǎn)端文件內(nèi)原有數(shù)據(jù)信息
[root@m01 ~]# ansible oldboy -m copy -a "content='bgx' dest=/tmp/oldboy"

copy模塊主要參數(shù)

src — 推送數(shù)據(jù)的源文件信息
dest — 推送數(shù)據(jù)的目標(biāo)路徑
backup — 對(duì)推送傳輸過(guò)去的文件串塑,進(jìn)行備份
content — 直接批量在被管理端文件中添加內(nèi)容
group — 將本地文件推送到遠(yuǎn)端,指定文件屬組信息
owner — 將本地文件推送到遠(yuǎn)端瓶颠,指定文件屬主信息
mode — 將本地文件推送到遠(yuǎn)端,指定文件權(quán)限信息
force — 分為force=no或yes刺桃,如果目標(biāo)主機(jī)包含該文件粹淋,但內(nèi)容不同,設(shè)置為yes,則強(qiáng)制覆蓋桃移,如果為no屋匕,則只有當(dāng)目標(biāo)主機(jī)的目標(biāo)位置不存在該文件時(shí),才復(fù)制借杰。默認(rèn)為yes

service服務(wù)模塊
[root@m01 ~]# ansible oldboy -m service -a "name=crond state=stopped enabled=yes"

主要參數(shù)

name — 定義要啟動(dòng)服務(wù)的名稱
state — 指定服務(wù)狀態(tài)是停止或是運(yùn)行
started — 啟動(dòng)
stopped — 停止
restarted — 重啟
reloaded — 重載
enabled — 是否讓服務(wù)開啟自啟動(dòng)

1.安裝  
[root@m01 ~]# ansible web -m yum -a "name=httpd state=installed"
2.配置  
[root@m01 ~]# ansible web -m copy -a "content='This is Ansible' dest=/var/www/html/index.html"  
3.啟動(dòng)  
[root@m01 ~]# ansible web -m service -a "name=httpd state=started"

script模塊

編寫腳本
[root@m01 ~]# mkdir -p /server/scripts
[root@m01 ~]# cat /server/scripts/yum.sh

!/usr/bin/bash

yum install -y iftop

在本地運(yùn)行模塊过吻,等同于在遠(yuǎn)程執(zhí)行,不需要將腳本文件進(jìn)行推送目標(biāo)主機(jī)執(zhí)行
[root@m01 ~]# ansible oldboy -m script -a “/server/scripts/yum.sh

file配置模塊

創(chuàng)建目錄
[root@m01 ~]# ansible oldboy -m file -a “path=/tmp/oldboy state=diretory”
創(chuàng)建文件
[root@m01 ~]# ansible oldboy -m file -a “path=/tmp/tt state=touch mode=555 owner=root group=root”
[root@m01 ~]# ansible oldboy -m file -a “src=/tmp/tt path=/tmp/tt_link state=link”
path — 指定遠(yuǎn)程主機(jī)目錄或文件信息
recurse — 遞歸授權(quán)
state —
directory — 在遠(yuǎn)端創(chuàng)建目錄
touch — 在遠(yuǎn)端創(chuàng)建文件
link — link或hard表示創(chuàng)建鏈接文件
absent — 表示刪除文件或目錄
mode — 設(shè)置文件或目錄權(quán)限
owner — 設(shè)置文件或目錄屬主信息
group — 設(shè)置文件或目錄屬組信息

group模塊

name — 指定創(chuàng)建的組名
gid — 指定組的gid
state
absent — 移除遠(yuǎn)端主機(jī)的組
present — 創(chuàng)建遠(yuǎn)端主機(jī)的組(默認(rèn))

創(chuàng)建組蔗衡,指定gid
[root@m01 ~]# ansible oldboy -m group -a “name=oldgirl gid=888”

user模塊

uid — 指定用戶的uid
group — 指定用戶組名稱
groups — 指定附加組名稱
password — 給用戶添加密碼
shell — 指定用戶登錄shell
create_home — 是否創(chuàng)建家目錄

創(chuàng)建oldgirl纤虽,設(shè)定uid為888,并加入gid為888
[root@m01 ~]# ansible oldboy -m user -a “name=oldgirl uid=888 group=888 shell=/sbin/nologin create_home=no”
隨機(jī)生成加密字符串(-1使用MD5進(jìn)行加密 -stdin 非交互式 -salt 加密參數(shù))
[root@m01 ~]# echo “bgx” | openssl passwd -1 -stdin
固定加密字符串
[root@m01 ~]# echo “123”| openssl passwd -1 -stdin -salt ‘salt

創(chuàng)建普通用戶绞惦,并配置對(duì)應(yīng)的用戶密碼
[root@m01 ~]# echo “bgx” | openssl passwd -1 -stdin
11KmeCnsKHGnBE86F/XkXufL.n6sEb. [root@m01 ~]# ansible oldboy -m user -a ‘name=xlw password=”1765yDGaudiDKPRoCIPMU6KEVEaPTZ0″‘

crond模塊

正常使用crond服務(wù)
[root@m01 ~]# crontab -l

          • /bin/sh /server/scripts/yum.sh

使用ansible添加一條定時(shí)任務(wù)
[root@m01 ~]# ansible oldboy -m cron -a “minute=* hour=* day=* month=* weekday=* job=’/bin/sh /server/scripts/test.sh'
[root@m01 ~]# ansible oldboy -m cron -a “job=’/bin/sh /server/scripts/test.sh'

設(shè)置定時(shí)任務(wù)注釋信息逼纸,防止重復(fù),name設(shè)定
[root@m01 ~]# ansible oldboy -m cron -a “name=’cron01′ job=’/bin/sh /server/scripts/test.sh'

刪除相應(yīng)定時(shí)任務(wù)
[root@m01 ~]# ansible oldboy -m cron -a “name=’ansible cron02′ minute=0 hour=0 job=’/bin/sh /server/scripts/test.sh’ state=absent”

注釋相應(yīng)定時(shí)任務(wù)济蝉,使定時(shí)任務(wù)失效
[root@m01 scripts]# ansible oldboy -m cron -a “name=’ansible cron01′ minute=0 hour=0 job=’/bin/sh /server/scripts/test.sh’ disabled=yes”

mount模塊

present —開機(jī)掛載杰刽,僅將掛載配置寫入/etc/fstab
mounted —掛載設(shè)備,并將配置寫入/etc/fstab
unmounted —卸載設(shè)備王滤,不會(huì)清除/etc/fstab寫入的配置
absent —卸載設(shè)備贺嫂,會(huì)清理/etc/fstab寫入的配置

僅將掛載的配置寫入/etc/fstab,并不會(huì)執(zhí)行掛載操作

[root@m01 ~]# ansible oldboy -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=present"

臨時(shí)掛載設(shè)備雁乡,并將掛載信息寫入/etc/fstab

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

臨時(shí)卸載第喳,不會(huì)清理/etc/fstab

[root@m01 ~]# ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=unmounted”

卸載,不僅臨時(shí)卸載蔗怠,同時(shí)會(huì)清理/etc/fstab

[root@m01 ~]# ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=absent”

1.機(jī)器還原快照(firewalld墩弯、selinux、配置好倉(cāng)庫(kù))

選擇虛擬機(jī)-》快照-》恢復(fù)

2.推送你的公鑰

[root@m01 ~]# sshpass -p1 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

3.配置Ansible的主機(jī)清單

[root@m01 ~]# cat /etc/ansible/hosts
[web]
172.16.1.7
172.16.1.8
[nfs]
172.16.1.31
[backup]
172.16.1.41

檢查主機(jī)是否都o(jì)k

[root@m01 ~]# ansible all -m ping
epel寞射、firewalld渔工、selinux、ww

1.基礎(chǔ)環(huán)境:

1.所有的主機(jī)都需要安裝rsync和nfs-utils
2.所有的主機(jī)都需要準(zhǔn)備對(duì)應(yīng)的rsync客戶端的密碼文件/etc/rsync.pass
3.所有的主機(jī)都需要?jiǎng)?chuàng)建一個(gè)uid和gid為666的www用戶
4.所有的主機(jī)都需要全網(wǎng)備份的腳本桥温,并配置好定時(shí)任務(wù)

1.安裝rsync和nfs-utils

[root@m01 ~]# ansible all -m yum -a “name=rsync,nfs-utils state=installed”

2.準(zhǔn)備rsync的客戶端密碼文件

[root@m01 ~]# ansible all -m copy -a “content=’1′ dest=/etc/rsync.pass owner=root group=root mode=600”

3.準(zhǔn)備對(duì)應(yīng)的www用戶引矩,uid和gid都為666

[root@m01 ~]# ansible all -m group -a “name=www gid=666”
[root@m01 ~]# ansible all -m user -a “name=www uid=666 group=666 create_home=no shell=/sbin/nologin”

4.從管理上拷貝對(duì)應(yīng)的腳本文件,然后將其加入定時(shí)任務(wù)

[root@m01 ~]# ansible all -m copy -a “src=./scripts/rsync_backup_md5.sh dest=/server/scripts/ mode=755”
[root@m01 ~]# ansible all -m cron -a “name=’Rsync Bakcup Scripts’ hour=01 minute=00 job=’/bin/bash /server/scripts/rsync_backup_md5.sh &>/dev/null'”
[root@m01 ~]# pwd
/root
[root@m01 ~]# mkdir scripts
[root@m01 ~]# cat scripts/rsync_backup_md5.sh

#!/usr/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#1.定義變量
Host=$(hostname)
Addr=$(ifconfig eth1|awk 'NR==2{print $2}')
Date=$(date +%F)
Dest=${Host}_${Addr}_${Date}
Path=/backup
#2.創(chuàng)建備份目錄
[ -d $Path/$Dest ] || mkdir -p $Path/$Dest

#3.備份對(duì)應(yīng)的文件
cd / && \
[ -f $Path/$Dest/system.tar.gz ] || tar czf $Path/$Dest/system.tar.gz etc/fstab etc/rsyncd.conf && \
[ -f $Path/$Dest/log.tar.gz ] || tar czf $Path/$Dest/log.tar.gz  var/log/messages var/log/secure && \

#4.攜帶md5驗(yàn)證信息
[ -f $Path/$Dest/${Date}.flag ] || md5sum $Path/$Dest/*.tar.gz >$Path/$Dest/${Date}.flag

#4.推送本地?cái)?shù)據(jù)至備份服務(wù)器
export RSYNC_PASSWORD=1
rsync -avz $Path/ rsync_backup@172.16.1.41::backup

#5.本地保留最近7天的數(shù)據(jù)
find $Path/ -type d -mtime +7|xargs rm -rf

2.應(yīng)用環(huán)境:(配置rsync服務(wù)->Backup服務(wù)器)

1.安裝rsync
2.配置rsync,/etc/rsyncd.conf
3.創(chuàng)建目錄侵浸,創(chuàng)建虛擬用戶文件旺韭,變更權(quán)限
4.啟動(dòng)服務(wù),加入開機(jī)自啟動(dòng)
5.配置郵箱掏觉,準(zhǔn)備對(duì)應(yīng)的腳本

1.安裝rsync

[root@m01 ~]# ansible backup -m yum -a "name=rsync state=installed"

2.配置rsync,/etc/rsyncd.conf

[root@m01 ~]# ansible backup -m copy -a "src=./conf/rsyncd.conf dest=/etc/rsyncd.conf"
[root@m01 ~]# pwd
/root
[root@m01 ~]# mkdir conf
[root@m01 ~]# cat conf/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
#####################################
[backup]
path = /backup
[data]
path = /data

3.創(chuàng)建目錄区端,變更權(quán)限,創(chuàng)建虛擬用戶文件

[root@m01 ~]# ansible backup -m file -a "path=/backup state=directory mode=755 owner=www group=www"
[root@m01 ~]# ansible backup -m file -a "path=/data state=directory mode=755 owner=www group=www"
[root@m01 ~]# ansible backup -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password mode=600 owner=root group=root"

4.啟動(dòng)服務(wù)澳腹,加入開機(jī)自啟動(dòng)

[root@m01 ~]# ansible backup -m service -a "name=rsyncd state=started enabled=yes"

5.配置郵箱织盼,準(zhǔn)備對(duì)應(yīng)的腳本
3.應(yīng)用環(huán)境:(配置nfs服務(wù))

1.安裝nfs-utils
2.配置nfs-utils
3.創(chuàng)建對(duì)應(yīng)的共享目錄杨何,并修改權(quán)限
4.啟動(dòng)nfs

1.安裝nfs-utils

[root@m01 ~]# ansible nfs -m yum -a "name=nfs-utils state=installed"

2.配置nfs-utils

[root@m01 ~]# ansible nfs -m copy -a "content='/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)' dest=/etc/exports"

3.創(chuàng)建對(duì)應(yīng)的共享目錄,并遞歸修改權(quán)限

[root@m01 ~]# ansible nfs -m file -a "path=/data state=directory recurse=yes owner=www group=www mode=755"

4.啟動(dòng)nfs

[root@m01 ~]# ansible nfs -m service -a "name=nfs-server state=started enabled=yes"

4.應(yīng)用環(huán)境:(配置web服務(wù)沥邻,掛載操作)

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

驗(yàn)證:

1.驗(yàn)證nfs存儲(chǔ)是否可以用
2.驗(yàn)證rsync是否能完成推送
3.backup服務(wù)器進(jìn)行校驗(yàn)
4.實(shí)時(shí)同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末危虱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唐全,更是在濱河造成了極大的恐慌埃跷,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邮利,死亡現(xiàn)場(chǎng)離奇詭異弥雹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)近弟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門缅糟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人祷愉,你說(shuō)我怎么就攤上這事窗宦。” “怎么了二鳄?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赴涵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我订讼,道長(zhǎng)髓窜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任欺殿,我火速辦了婚禮寄纵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脖苏。我一直安慰自己程拭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布棍潘。 她就那樣靜靜地躺著恃鞋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亦歉。 梳的紋絲不亂的頭發(fā)上恤浪,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音肴楷,去河邊找鬼水由。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赛蔫,可吹牛的內(nèi)容都是我干的砂客。 我是一名探鬼主播直秆,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鞭盟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起瑰剃,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤齿诉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晌姚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粤剧,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年挥唠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抵恋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宝磨,死狀恐怖弧关,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唤锉,我是刑警寧澤世囊,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站窿祥,受9級(jí)特大地震影響株憾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晒衩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一嗤瞎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧听系,春花似錦贝奇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至髓帽,卻和暖如春菠赚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郑藏。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工衡查, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人必盖。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓拌牲,卻偏偏與公主長(zhǎng)得像俱饿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子塌忽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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

  • 12.ansible模塊查看和幫助***** 查找模塊 ansible-doc -l #模塊就Linux命...
    一關(guān)_e438閱讀 324評(píng)論 0 0
  • Ansible配置管理系統(tǒng) Ansible是一個(gè)配置管理系統(tǒng)configuration management sy...
    山有木兮_8adb閱讀 273評(píng)論 0 0
  • 終于決定學(xué)安卓了拍埠,按慣例在學(xué)任何亂七八糟的語(yǔ)言之前要做的當(dāng)然就是搭建開發(fā)環(huán)境。 首先是下載Android stud...
    Demons_96閱讀 2,151評(píng)論 0 0
  • 我想做一具美麗的尸體 安靜的躺在晨曦 讓第一縷陽(yáng)光打在我蒼白的臉上 記憶順著陽(yáng)光 從身體中抽離 變得和每一具尸體一...
    海棠萬(wàn)寶路閱讀 384評(píng)論 0 0
  • 眾所周知土居,一張字跡端正枣购、規(guī)范、整潔的答卷往往能贏得老師們的青睞與好評(píng)擦耀,一手漂亮的字將對(duì)人的一生影響深遠(yuǎn)棉圈,學(xué)習(xí)書法...
    新鶯恰啼閱讀 370評(píng)論 0 2