安裝使用 Ansible

  1. 升級python
# 安裝wget
yum -y install wget  
# 下載python
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
# 將里面的文件 移動到python3文件夾中
mkdir /usr/local/python3
tar -zxvf Python-3.8.0.tgz -C  /usr/local/python3
# 刪除Python-3.8.0文件夾
mv /usr/local/python3/Python-3.8.0/* /usr/local/python3
rm -rf /usr/local/python3/Python-3.8.0
# 更新環(huán)境
yum -y update
yum -y groupinstall "Development Tools"
yum -y install gcc openssl-devel bzip2-devel libffi-devel
yum -y install zlib*

# 配置安裝 
cd  /usr/local/python3
# --with-ssl 是配置https協(xié)議蜡饵,--with-ensurepip=install是安裝pip工具
./configure prefix=/usr/local/python3  --with-ssl --with-ensurepip=install
# 在編譯前需要進行編譯配置重贺,./configure --enable-optimizations  --with-ssl --with-ensurepip=install,
#官方文檔有提到加--enable-optimizations參數(shù)可以提升后期python百分之10的運行速度通熄,不過我加上后發(fā)現(xiàn)會編譯失敗,所以去掉了
#如果你加了以后執(zhí)行下面的命令報錯了,可以執(zhí)行 `make clean`,然后再執(zhí)行` make && make install `
make && make install

# 備份原來的python鏈接棚品,配置軟連接
cd /usr/bin
mv python python.bak
ln -s /usr/local/python3/bin/python3 /usr/bin/python
# 給pip3建立軟連接為pip
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
  1. 設(shè)置pip源
# 進入到python3的bin目錄
cd /usr/local/python3/bin

# 設(shè)置pip源
mkdir ~/.pip
vi ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# 升級pip版本
pip install --upgrade pip
  1. 安裝 ansible
# 通過pip安裝 ansible
sudo pip install ansible
# 驗證是否安裝成功
ansible --version

ansible 程序結(jié)構(gòu)

安裝目錄如下:
  配置文件目錄:/etc/ansible/
  執(zhí)行文件目錄:/usr/bin/
  Lib庫依賴目錄:/usr/lib/pythonX.X/site-packages/ansible/
  Help文檔目錄:/usr/share/doc/ansible-X.X.X/
  Man文檔目錄:/usr/share/man/man1/

配置清單

配置清單保存的是一些 ansible 需要連接管理的主機列表

1械筛、 直接指明主機地址或主機名:
    ## green.example.com#
    # blue.example.com#
    # 192.168.100.1
    # 192.168.100.10
2、 定義一個主機組[組名]把地址或主機名加進去
    [mysql_test]
    192.168.253.159
    192.168.253.160
    192.168.253.153

ansible 命令集

  • /usr/bin/ansible  Ansibe AD-Hoc 臨時命令執(zhí)行工具诬乞,常用于臨時命令的執(zhí)行
  • /usr/bin/ansible-doc   Ansible 模塊功能查看工具
  • /usr/bin/ansible-galaxy  下載/上傳優(yōu)秀代碼或Roles模塊 的官網(wǎng)平臺,基于網(wǎng)絡的
  • /usr/bin/ansible-playbook  Ansible 定制自動化的任務集編排工具
  • /usr/bin/ansible-pull  Ansible遠程執(zhí)行命令的工具钠导,拉取配置而非推送配置(使用較少震嫉,海量機器時使用,對運維的架構(gòu)能力要求較高)
  • /usr/bin/ansible-vault  Ansible 文件加密工具
  • /usr/bin/ansible-console  Ansible基于Linux Consoble界面可與用戶交互的命令執(zhí)行工具

ansible 命令詳解

命令的具體格式如下:

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

-a MODULE_ARGS   #模塊的參數(shù)牡属,如果執(zhí)行默認COMMAND的模塊票堵,即是命令參數(shù),如: “date”逮栅,“pwd”等等
-k悴势,--ask-pass #ask for SSH password。登錄密碼措伐,提示輸入SSH密碼而不是假設(shè)基于密鑰的驗證
--ask-su-pass #ask for su password特纤。su切換密碼
-K,--ask-sudo-pass #ask for sudo password侥加。提示密碼使用sudo捧存,sudo表示提權(quán)操作
--ask-vault-pass #ask for vault password。假設(shè)我們設(shè)定了加密的密碼官硝,則用該選項進行訪問
-B SECONDS #后臺運行超時時間
-C #模擬運行環(huán)境并進行預運行矗蕊,可以進行查錯測試
-c CONNECTION #連接類型使用
-f FORKS #并行任務數(shù)短蜕,默認為5
-i INVENTORY #指定主機清單的路徑氢架,默認為/etc/ansible/hosts
--list-hosts #查看有哪些主機組
-m MODULE_NAME #執(zhí)行模塊的名字,默認使用 command 模塊朋魔,所以如果是只執(zhí)行單一命令可以不用 -m參數(shù)
-o #壓縮輸出岖研,嘗試將所有結(jié)果在一行輸出,一般針對收集工具使用
-S #用 su 命令
-R SU_USER #指定 su 的用戶警检,默認為 root 用戶
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪個用戶孙援,默認為 root 用戶
-T TIMEOUT #指定 ssh 默認超時時間,默認為10s扇雕,也可在配置文件中修改
-u REMOTE_USER #遠程用戶拓售,默認為 root 用戶
-v #查看詳細信息,同時支持-vvv镶奉,-vvvv可查看更詳細信息

ansible 配置公私鑰

ansible 是基于 ssh 協(xié)議實現(xiàn)的础淤,所以其配置公私鑰的方式與 ssh 協(xié)議的方式相同崭放,具體操作步驟如下:

#1. 在被控端生成私鑰
[root@server ~]# ssh-keygen 
#2.向主機分發(fā)私鑰
[root@server ~]# ssh-copy-id root@192.168.1.72

ansible 常用模塊

  1. 主機連通性測試
[root@localhost mas]# ansible -i hosts 96server -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
[WARNING]: Platform linux on host 192.168.1.96 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for
more information.
192.168.1.96 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
  1. command 模塊

這個模塊可以直接在遠程主機上執(zhí)行命令,并將結(jié)果返回本主機鸽凶。

[root@localhost mas]# ansible -i hosts 96server -m command -a 'ss -ntl'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
[WARNING]: Platform linux on host 192.168.1.96 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for
more information.
192.168.1.96 | CHANGED | rc=0 >>
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port    
LISTEN    0         10               127.0.0.1:25               0.0.0.0:*       
LISTEN    0         128              127.0.0.1:953              0.0.0.0:*     
  1. shell 模塊

shell模塊可以在遠程主機上調(diào)用shell解釋器運行命令币砂,支持shell的各種功能,例如管道等玻侥。

[root@localhost mas]# ansible -i hosts 96server -m shell -a 'cat /etc/hosts |grep "wps"'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
[WARNING]: Platform linux on host 192.168.1.96 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for
more information.
192.168.1.96 | CHANGED | rc=0 >>
192.168.1.96 reg.wps.lan

  1. copy 模塊

這個模塊用于將文件復制到遠程主機决摧,同時支持給定內(nèi)容生成文件和修改權(quán)限等。

  • src    #被復制到遠程主機的本地文件凑兰≌谱可以是絕對路徑,也可以是相對路徑姑食。如果路徑是一個目錄拘鞋,則會遞歸復制,用法類似于"rsync"
  • content   #用于替換"src"矢门,可以直接指定文件的值
  • dest    #必選項盆色,將源文件復制到的遠程主機的絕對路徑
  • backup   #當文件內(nèi)容發(fā)生改變后,在覆蓋之前把源文件備份祟剔,備份文件包含時間信息
  • directory_mode    #遞歸設(shè)定目錄的權(quán)限隔躲,默認為系統(tǒng)默認權(quán)限
  • force    #當目標主機包含該文件,但內(nèi)容不同時物延,設(shè)為"yes"宣旱,表示強制覆蓋;設(shè)為"no"叛薯,表示目標主機的目標位置不存在該文件才復制浑吟。默認為"yes"
  • others    #所有的 file 模塊中的選項可以在這里使用
  1. file 模塊

該模塊主要用于設(shè)置文件的屬性,比如創(chuàng)建文件耗溜、創(chuàng)建鏈接文件组力、刪除文件等。

  • force  #需要在兩種情況下強制創(chuàng)建軟鏈接抖拴,一種是源文件不存在燎字,但之后會建立的情況下;另一種是目標軟鏈接已存在阿宅,需要先取消之前的軟鏈候衍,然后創(chuàng)建新的軟鏈,有兩個選項:yes|no
  • group  #定義文件/目錄的屬組洒放。后面可以加上mode:定義文件/目錄的權(quán)限
  • owner  #定義文件/目錄的屬主蛉鹿。后面必須跟上path:定義文件/目錄的路徑
  • recurse  #遞歸設(shè)置文件的屬性,只對目錄有效往湿,后面跟上src:被鏈接的源文件路徑妖异,只應用于state=link的情況
  • dest  #被鏈接到的路徑惨好,只應用于state=link的情況
  • state  #狀態(tài),有以下選項:
    directory:如果目錄不存在随闺,就創(chuàng)建目錄
    file:即使文件不存在日川,也不會被創(chuàng)建
    link:創(chuàng)建軟鏈接
    hard:創(chuàng)建硬鏈接
    touch:如果文件不存在,則會創(chuàng)建一個新的文件矩乐,如果文件或目錄已存在龄句,則更新其最后修改時間
    absent:刪除目錄、文件或者取消鏈接文件
  1. fetch 模塊

該模塊用于從遠程某主機獲壬⒑薄(復制)文件到本地分歇。

  • dest:用來存放文件的目錄
  • src:在遠程拉取的文件,并且必須是一個file欧漱,不能是目錄
  1. cron 模塊

該模塊適用于管理cron計劃任務的职抡,其使用的語法跟我們的crontab文件中的語法一致

  • day= #日應該運行的工作( 1-31, *, */2, )
  • hour= # 小時 ( 0-23, *, */2, )
  • minute= #分鐘( 0-59, *, */2, )
  • month= # 月( 1-12, *, /2, )
  • weekday= # 周 ( 0-6 for Sunday-Saturday,, )
  • job= #指明運行的命令是什么
  • name= #定時任務描述
  • reboot # 任務在重啟時運行,不建議使用误甚,建議使用special_time
  • special_time #特殊的時間范圍缚甩,參數(shù):reboot(重啟時),annually(每年)窑邦,monthly(每月)擅威,weekly(每周),daily(每天)冈钦,hourly(每小時)
  • state #指定狀態(tài)郊丛,present表示添加定時任務,也是默認設(shè)置瞧筛,absent表示刪除定時任務
  • user # 以哪個用戶的身份執(zhí)行
  1. yum 模塊

該模塊主要用于軟件的安裝厉熟。

  • name=  #所安裝的包的名稱
  • state=  #present--->安裝, latest--->安裝最新的, absent---> 卸載軟件较幌。
  • update_cache  #強制更新yum的緩存
  • conf_file  #指定遠程yum安裝時所依賴的配置文件(安裝本地已有的包)揍瑟。
  • disable_pgp_check  #是否禁止GPG checking,只用于presentor latest绅络。
  • disablerepo  #臨時禁止使用yum庫月培。 只用于安裝或更新時。
  • enablerepo  #臨時使用的yum庫恩急。只用于安裝或更新時。
  1. service 模塊

該模塊用于服務程序的管理纪蜒。

  • arguments #命令行提供額外的參數(shù)
  • enabled #設(shè)置開機啟動衷恭。
  • name= #服務名稱
  • runlevel #開機啟動的級別,一般不用指定纯续。
  • sleep #在重啟服務的過程中随珠,是否等待灭袁。如在服務關(guān)閉以后等待2秒再啟動。(定義在劇本中窗看。)
  • state #有四種狀態(tài)茸歧,分別為:started--->啟動服務, stopped--->停止服務显沈, restarted--->重啟服務软瞎, reloaded--->重載配置
  1. user 模塊

該模塊主要是用來管理用戶賬號。

  • comment  # 用戶的描述信息
  • createhome  # 是否創(chuàng)建家目錄
  • force  # 在使用state=absent時, 行為與userdel –force一致.
  • group  # 指定基本組
  • groups  # 指定附加組拉讯,如果指定為(groups=)表示刪除所有組
  • home  # 指定用戶家目錄
  • move_home  # 如果設(shè)置為home=時, 試圖將用戶主目錄移動到指定的目錄
  • name  # 指定用戶名
  • non_unique  # 該選項允許改變非唯一的用戶ID值
  • password  # 指定用戶密碼
  • remove  # 在使用state=absent時, 行為是與userdel –remove一致
  • shell  # 指定默認shell
  • state  # 設(shè)置帳號狀態(tài)涤浇,不指定為創(chuàng)建,指定值為absent表示刪除
  • system  # 當創(chuàng)建一個用戶魔慷,設(shè)置這個用戶是系統(tǒng)用戶只锭。這個設(shè)置不能更改現(xiàn)有用戶
  • uid  # 指定用戶的uid
  1. group 模塊

該模塊主要用于添加或刪除組。

  • gid=  #設(shè)置組的GID號
  • name=  #指定組的名稱
  • state=  #指定組的狀態(tài)院尔,默認為創(chuàng)建蜻展,設(shè)置值為absent為刪除
  • system=  #設(shè)置值為yes,表示創(chuàng)建為系統(tǒng)組
  1. script 模塊

該模塊用于將本機的腳本在被管理端的機器上運行邀摆。

  1. setup 模塊

該模塊主要用于收集信息铺呵,是通過調(diào)用facts組件來實現(xiàn)的。
  facts組件是Ansible用于采集被管機器設(shè)備信息的一個功能隧熙,我們可以使用setup模塊查機器的所有facts信息片挂,可以使用filter來查看指定信息。整個facts信息被包裝在一個JSON格式的數(shù)據(jù)結(jié)構(gòu)中贞盯,ansible_facts是最上層的值音念。
  facts就是變量,內(nèi)建變量 躏敢。每個主機的各種信息闷愤,cpu顆數(shù)、內(nèi)存大小等件余。會存在facts中的某個變量中讥脐。調(diào)用后返回很多對應主機的信息,在后面的操作中可以根據(jù)不同的信息來做不同的操作啼器。如redhat系列用yum安裝旬渠,而debian系列用apt來安裝軟件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末端壳,一起剝皮案震驚了整個濱河市告丢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌损谦,老刑警劉巖岖免,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岳颇,死亡現(xiàn)場離奇詭異,居然都是意外死亡颅湘,警方通過查閱死者的電腦和手機话侧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闯参,“玉大人瞻鹏,你說我怎么就攤上這事∮蓿” “怎么了乙漓?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長释移。 經(jīng)常有香客問我叭披,道長,這世上最難降的妖魔是什么玩讳? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任涩蜘,我火速辦了婚禮,結(jié)果婚禮上熏纯,老公的妹妹穿的比我還像新娘同诫。我一直安慰自己,他們只是感情好樟澜,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布误窖。 她就那樣靜靜地躺著,像睡著了一般秩贰。 火紅的嫁衣襯著肌膚如雪霹俺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天毒费,我揣著相機與錄音丙唧,去河邊找鬼。 笑死觅玻,一個胖子當著我的面吹牛想际,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溪厘,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胡本,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桩匪?” 一聲冷哼從身側(cè)響起打瘪,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傻昙,沒想到半個月后闺骚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡妆档,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年僻爽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贾惦。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸梆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出须板,到底是詐尸還是另有隱情碰镜,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布习瑰,位于F島的核電站绪颖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甜奄。R本人自食惡果不足惜柠横,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望课兄。 院中可真熱鬧牍氛,春花似錦、人聲如沸烟阐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜒茄。三九已至唉擂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扩淀,已是汗流浹背楔敌。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驻谆,地道東北人卵凑。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像胜臊,于是被迫代替她去往敵國和親勺卢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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