macos環(huán)境下ansible學習筆記

簡介

ansible是一種自動化運維工具败砂,基于Python開發(fā),集合了眾多運維工具(puppet世落、cfengine淮腾、chef、func屉佳、fabric)的優(yōu)點谷朝,實現(xiàn)了批量系統(tǒng)配置、批量程序部署忘古、批量運行命令等功能徘禁。


安裝

本機環(huán)境:
macos high sierra 10.13
python 2.7.10

在macos下安裝ansible主要有三種方法,建議采用源碼安裝的方法安裝ansible髓堪。
1.brew安裝(需要安裝homebrew模塊)

brew install ansible 

2.pip安裝

pip install ansible

3.源碼安裝

git clone https://github.com/ansible/ansible.git
cd ansible
sudo python setup.py install 

安裝完成后 用 ansible --version 命令 檢查安裝是否成功

tips:mac下安裝后缺少 /etc/ansible 目錄,需要手動添加娘荡,并從源碼中將example目錄中的文件拷貝到創(chuàng)建的 /etc/ansible 目錄下干旁。


主機免秘鑰連接

生成本地ssh秘鑰

ssh-keygen

將本地秘鑰發(fā)給遠端服務器(例:用戶名為root ip地址為192.168.1.1)

ssh-copy-id root@192.168.1.1

出現(xiàn)Are you sure you want to continue connecting (yes/no)? 時,輸入yes,之后輸入目標服務器的密碼炮沐,大功告成争群。

再次測試連接遠端服務器,不需要密碼連接上就表明成功


ansible的簡單使用

當我們需要使用ansible直接向遠端服務器發(fā)送指令時大年,一般需要以下步驟:

配置hosts文件换薄,默認的hosts文件在 /etc/ansible 目錄下

vim /etc/ansible/hosts

hosts文件基本格式(將需要控制的遠端服務器ip地址寫入,后面也可寫入參數)

[hostname] #可以隨意命名
192.168.1.2
192.168.1.3
[hostname1]#可以有多個分組
192.168.1.4
192.168.1.5

測試能否ping通

ansible all -m ping 
192.168.1.2 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
ansible命令參數及說明
ansible遠程批量命令

遠程執(zhí)行命令的模塊有command、shell翔试、scripts轻要、以及raw模塊;

command模塊

command模塊為ansible默認模塊垦缅,不指定-m參數時冲泥,使用的就是command模塊;comand模塊比較簡單,常見的命令都可以使用凡恍,但其命令的執(zhí)行不是通過shell執(zhí)行的志秃,所以,像這些 "<", ">", "|", and "&"操作都不可以嚼酝,當然浮还,也就不支持管道;示例:顯示遠程路徑:

ansible hostname  -a 'pwd'
192.168.1.2 | success | rc=0 >>
/home/root
192.168.1.3 | success | rc=0 >>
/home/root
10.6.143.37 | success | rc=0 >>
/home/root

缺點:不支持管道闽巩,就沒法批量執(zhí)行命令碑定;

shell模塊

使用shell模塊,在遠程命令通過/bin/sh來執(zhí)行又官;所以延刘,我們在終端輸入的各種命令方式,都可以使用六敬; 但是我們自己定義在.bashrc/.bash_profile中的環(huán)境變量shell模塊由于沒有加載碘赖,所以無法識別;如果需要使用自定義的環(huán)境變量外构,就需要在最開始普泡,執(zhí)行加載自定義腳本的語句;
對shell模塊的使用可以分成兩塊:1) 如果待執(zhí)行的語句少审编,可以直接寫在一句話中:

ansible hostname  -a ". .bash_profile;ps -fe |grep sa_q" -m shell
  1. 如果在遠程待執(zhí)行的語句比較多撼班,可寫成一個腳本,通過copy模塊傳到遠端垒酬,然后再執(zhí)行砰嘁;但這樣就又涉及到兩次ansible調用;對于這種需求勘究,ansible已經為我們考慮到了矮湘,script模塊就是干這事的;
script模塊

使用scripts模塊可以在本地寫一個腳本口糕,在遠程服務器上執(zhí)行(遠程服務器不需要python環(huán)境):

ansible hostname -m script -a "/home/test/test.sh"

ansible playbook

playbook就是把上述在命令行的操作缅阳,以yml格式寫在文件中來執(zhí)行而已。復雜的playbook只是更多的命令行操作的集合景描。

例:將本機的某個文件拷貝到遠端服務器

 vim copytest.yml   #創(chuàng)建yml執(zhí)行文件
---
- hosts: hostname  # hosts中指定
  remote_user: root  # 如果和當前用戶一樣十办,則無需指定
  tasks:
      - name: copyfile   #建議每個任務指定一個name,方便出錯時檢查
        copy: src=/root/test.txt dest=root/test.txt  #  本地拷貝到遠端

注解:
tasks定義了playbook中要執(zhí)行的任務超棺,包括任務名name以及具體的任務內容向族,tasks只有一個,而任務可以有多個.

---
- hosts: hostname  
  remote_user: root 
  tasks:
      - name: copyfile  
        copy: src=~  dest=~
      - name: testshell
        shell: 'touch test.txt'
      - name: testshell2     
        shell: 'touch test2.txt'      #遵循這樣的格式

playbook執(zhí)行方法:

sudo ansible-playbook copytest.yml    #主機名说搅、執(zhí)行命令都已在yml中指定了炸枣。

小測試

目標:通過連接git倉庫的方法,遠端服務器將本機的bash配置文件分發(fā)給其他指定的服務器,并執(zhí)行生效适肠。

1.創(chuàng)建yml文件編寫task霍衫,并上傳到git倉庫

- hosts: host
  remote_user: root
  tasks:
    - name: copyprofile
      copy: src=/root/.bash_profile dest=/root/.bash_profile owner=root  mode=0600
    - name: runprofile
      shell: source /root/.bash_profile

2.編寫shell腳本,交給遠端服務器執(zhí)行

# !bin/bash
mypath="User/root/itservercontrol"
if [ ! -d "$mypath"]; then
  git clone git@example.git #填寫git倉庫地址
    sudo ansible-playbook Change_Profile.yml
else
    cd itservercontrol
    git pull
    sudo ansible-playbook Change_Profile.yml
fi

3.向遠端服務器發(fā)送本地編寫的腳本侯养,并執(zhí)行

ansible hostname -m script -a "/root/itservertest.sh"

運行成功敦跌!


本筆記僅供參考,水平較低逛揩,還望包涵柠傍。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辩稽,隨后出現(xiàn)的幾起案子惧笛,更是在濱河造成了極大的恐慌,老刑警劉巖逞泄,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件患整,死亡現(xiàn)場離奇詭異,居然都是意外死亡喷众,警方通過查閱死者的電腦和手機各谚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來到千,“玉大人昌渤,你說我怎么就攤上這事°舅模” “怎么了膀息?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長加矛。 經常有香客問我履婉,道長,這世上最難降的妖魔是什么斟览? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮辑奈,結果婚禮上苛茂,老公的妹妹穿的比我還像新娘。我一直安慰自己鸠窗,他們只是感情好妓羊,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稍计,像睡著了一般躁绸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天净刮,我揣著相機與錄音剥哑,去河邊找鬼。 笑死淹父,一個胖子當著我的面吹牛株婴,可吹牛的內容都是我干的。 我是一名探鬼主播暑认,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼困介,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蘸际?” 一聲冷哼從身側響起座哩,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粮彤,沒想到半個月后根穷,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡驾诈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年缠诅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乍迄。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡管引,死狀恐怖,靈堂內的尸體忽然破棺而出闯两,到底是詐尸還是另有隱情褥伴,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布漾狼,位于F島的核電站重慢,受9級特大地震影響,放射性物質發(fā)生泄漏逊躁。R本人自食惡果不足惜似踱,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稽煤。 院中可真熱鬧核芽,春花似錦、人聲如沸酵熙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匾二。三九已至哮独,卻和暖如春拳芙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背皮璧。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工舟扎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恶导。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓浆竭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惨寿。 傳聞我的和親對象是個殘疾皇子邦泄,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容