在Debian 8 上安裝自動化工具Ansible

ansible     基於ssh 快速上手(python)沒有限制語言(bash,python,perl,ruby)Fedora ,rackspace,evernote在用
saltstack (c/s)架構  python
puppet   (c/s)架構  Google在用  ruby語言  (master ,node)
chef       (c/s)架構  ruby  (workstation開發,server,node ) 須要git,有web uinode

若是你是新手,就不要猶豫了,ansible是你最好的選擇,本人菜鳥一個。廢話少說,開始安裝!python

實驗環境:git

192.168.3.190  web

192.168.3.191apache

192.168.3.192vim

192.168.3.193ruby

1)配置ssh免密碼登錄bash

 root@debian:~# ssh localhost架構

 root@debian:~# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsassh

 root@debian:~# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 root@debian:~# scp -r /root/.ssh 其餘機器:/root

 root@debian:~# chmod 600 /root/.ssh/authorized_keys

接下來:

2)root@debian:~# apt-get install ansible

root@debian:~# ansible --version

ansible 1.7.2

3)Ansible配置

 

a) 主機定義:

root@debian:~# vim /etc/ansible/hosts

[local]

192.168.3.190  能夠是IP或主機名;

[other]

192.168.3.191

192.168.3.192

192.168.3.193

在這裏,我定義了兩個組,簡單說一下,一個主機能夠有多個組,建議組名好記一些,由於測試要用。固然你也能夠看文件裏面的註釋。

 

b)測試

語法ansible <host-pattern> [options]

      ansible <pattern_goes_here> -m<module_name> -a <arguments>

 

root@debian:~# ansible other -m ping

 

192.168.3.192 | success >> {

 

    "changed": false,

 

    "ping": "pong"

 

}

 

192.168.3.191 | success >> {

 

    "changed": false,

 

    "ping": "pong"

 

使用ping測試,以顯示成功,能夠繼續其餘操做(若是你不懂ping,神仙也救不了你啦)

 

常見命令選項:

  -m 模塊名 

  -a 參數

  -s是此用戶sudo無需輸入密碼

 

                   注意:命令有挺多的,只列舉了幾個經常使用的。

我用ansible的須要是,老大有的時候讓我去改配置文件或者上傳點東西太浪費時間啦,我不能一臺臺機器去ssh吧,如今不流行devops嘛!若是你不懂什麼意思,仍是去多看看書吧,雖然我也不懂!

3)安裝服務(能夠用playbook):

  root@debian:~# ansible local -a  'apt-get  -y  install softname'

  root@debian:~# ansible all -m command -a "apt-get  -y  install softname"

     命令執行的結果是同樣,目前看,單引號和雙引號沒什麼區別,但沒有是不行的。

4)文件管理模塊-file

   主要用來設置文件、連接、目錄的屬性,或者移除文件、連接、目錄,不少其餘的模塊也會包含這種做用(簡單演示怎麼用,上手快,其餘的細節還需本身去領悟)

##遠程拷貝文件----COPY

      ansible other -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ owner=root group=root mode=0644"

##刪除遠程的文件

     ansible other -m file -a "dest=/tmp/ansible.cfg  state=absent  mode=0644"  刪除遠程的目錄

     說明:(1)State果是目錄不存在,那麼會建立目錄;若是是文件不存在,那麼不會建立文件;若是是link,那麼軟連接會被建立或者修改;若是是absent,那麼目錄下的全部文件都會被刪除,若是是touch,會建立不存在的目錄和文件

     (2)copy:

        backup:在覆蓋以前,將源文件備份,備份文件包含時間信息。有兩個選項:yes|no

        content:用於替代「src」,能夠直接設定指定文件的值

        dest:必選項。要將源文件複製到的遠程主機的絕對路徑,若是源文件是一個目錄,那麼該路徑也必須是個目錄

        directory_mode:遞歸設定目錄的權限,默認爲系統默認權限

        force:若是目標主機包含該文件,但內容不一樣,若是設置爲yes,則強制覆蓋,若是爲no,則只有當目標主機的目標位置不存在該文件時,才複製。默認爲yes

        others:全部的file模塊裏的選項均可以在這裏使用

        src:被複制到遠程主機的本地文件,能夠是絕對路徑,也能夠是相對路徑。若是路徑是一個目錄,它將遞歸複製。在這種狀況下,若是路徑使用「/」來結尾,則只複製目錄裏的內容,若是沒有使用「/」來結尾,則包含目錄在內的整個內容所有複製,相似於rsync

5)用playbook安裝服務:

  root@debian:~# cat apache2.yml

---

- hosts: other

  tasks:

    - name: Install apache2 web server

      apt: pkg=apache2  state=installed update_cache=true

接下來執行playbook

root@debian:~# ansible-playbook apache2.yml

注意事項:YAML 還有一個小的怪癖. ansible的 YAML 文件通常開始行都應該是 --- 這是 YAML 格式的一部分, 代表一個文件的開始.(本人試驗過,能夠去掉不寫的!)

     列表中的全部成員都開始於相同的縮進級別, 而且使用一個 "- " 做爲開頭(一個橫槓和一個空格):

     一個字典是由一個簡單的 的形式組成(這個冒號後面必須是一個空格):

 

 

總結:第一天學習ansible,把學習的過程記錄下來!稍後會繼續學習其餘模塊。

       有沒有以爲自動化很爽!!!

相關文章
相關標籤/搜索